当前位置:   article > 正文

《OpenGL编程指南》 笔记八 程序式纹理_opengl程序式纹理 条纹

opengl程序式纹理 条纹

第八章 程序式纹理

8.1 程序式纹理

  • 用算法来来合成一些数字图像或者照片,而不是通过预先处理的数据,这一类着色器叫做程序纹理着色器,而实现这类着色器的过程叫做程序式纹理或者程序式着色

  • 通常在使用程序式的着色器来为物体着色时,物体上的每个点的纹理坐标或者局部坐标位置将是唯一可以使用的信息

  • 程序纹理着色器的优势:

    1. 程序生成的纹理占用的内存比预存纹理要低的多
    2. 程序生成的纹理没有固定的面积或者分辨率
    3. 程序纹理着色器中可以写入一些算法的关键参数
    4. 如果使用程序式纹理来计算体积而不是表面的话,那么体积的剖面表现力会比任何使用2维纹理的方法要真实的多;如果可以使用3维纹理的话,那么这时候高分辨率的程序式纹理在内存方面也会有巨大的优势
  • 程序式纹理的缺点:

    1. 程序纹理着色器需要在程序中实现算法
    2. 使用程序纹理着色器来实现的算法,需要对物体的每个位置都执行一次,因此比预存纹理的访问要耗费更多的时间
    3. 程序纹理着色器可能会带来一些难以克服的走样问题
    4. 由于数学精度上的差异,以及噪声等内置函数实现的差异,程序纹理着色器产生的结果在不同的系统平台上可能有所差异

8.1.1 规则的花纹

条纹
  • Fuzz变量用来控制条纹颜色和背景颜色之间的平滑过渡(也就是反走样)。如果纹理坐标的放大缩小参数Scale设置为10.0,那么Fuzz设置为0.1会比较合理。当物体的大小发生变化时,也可以调整这个值以避免在较高的放大倍数时产生过度模糊,或者在较低的放大倍数时产生走样误差。通常来说这个参数不应该设置为大于0.5的数值(条纹边界的最大模糊值)
  • 在条纹颜色之间生成柔和的反走样过渡效果,一种方法是使用smoothstep()来实现StripColor到BackColor的过渡,然后从BackColor回到StripeColor的时候再次使用这个函数;但是,我们已知这种过渡总是对称的,因此可以将两个过渡过程合并为一个
  • scaledT是条纹的缩放比例Scale乘以输入的纹理坐标t,然后取得的小数部分,Scale的值越大,那么得到的条纹数量越多,而scaledT的结果总是在[0,1]的区间范围内
  • frac1和frac2用于判断当前片元位于BackColor和StripColor之间的什么位置上;对于frac1来说&#
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/108311
推荐阅读
相关标签
  

闽ICP备14008679号