有人可以指出我的论文/算法/资源/告诉我如何在光线跟踪器中实现纹理缩小过滤器(当纹素小于像素时适用)?
谢谢!
有人可以指出我的论文/算法/资源/告诉我如何在光线跟踪器中实现纹理缩小过滤器(当纹素小于像素时适用)?
谢谢!
由于您使用的是光线追踪,我怀疑您正在寻找一种高质量的过滤,它会根据“错误”的数量动态改变采样。基于这个假设,我会说看看“光线差异”。这里有一篇很好的论文:http: //graphics.stanford.edu/papers/trd/,它考虑了折射和反射等效果。
您对自己的回答听起来像是正确的方法,但是由于其他人可能会偶然发现该页面,因此我将根据要求添加资源链接。除了讨论 mipmapping(ripmapping 基本上是更高级的 mipmapping)之外,他们还讨论了反射和折射对导数和 mip-level 选择的影响。
霍曼·伊格希。“追踪光线微分。” 1999. SIGGRAPH 论文集。http://graphics.stanford.edu/papers/trd/
仔细阅读后,我发现 Rehno Lindeque 提到了这篇论文。起初并没有意识到这是正确的参考,因为他说该方法是根据采样的误差动态采样的,这是不正确的。正如您所描述的,过滤是根据像素足迹的大小完成的,并且只使用一条光线。
编辑:另一个可能有用的参考资料(http://www.cs.unc.edu/~awilson/class/238/#challenges)。滚动到“纹理坐标的导数”部分。他建议将纹理导数从表面向后映射到屏幕。我认为这对于反射和折射光线是不正确的,但可能更容易实现并且对于初级光线应该没问题。
我认为您的意思是mipmap。
这是一篇谈论使用它们的文章。
但是没有说如何选择使用哪个mipmap,但是它们经常被混合(更大和更小的mipmap)。
这里还有一篇关于Google 地球如何工作的文章,它谈到了他们如何对地球进行 mipmap 。
谢谢你们的回答,但由于我没有找到任何合适的技术,我自己创造了一些东西,结果证明效果很好:
我假设我的光线是一个圆锥体,在图像平面上具有半个像素的圆锥半径。当射线击中一个表面时,我计算投影到表面上的椭圆(来自平面锥相交的椭圆)。然后,使用交点处的纹理坐标导数,我将此椭圆投影到纹理空间中。现在我知道纹理的哪一部分位于我的像素下,并且可以对这个区域进行二次采样
我还使用 RipMaps 来提高质量 - 我根据 Texturespace 中椭圆的大小选择了 RipMap 级别