今天把Ogre的Ocean的Shader部分代码全部看完了,总结如下:
1.在VS中通过叠加两个正弦函数计算每个顶点处的高度。
2.既然构建了顶点的位置,那么它的切空间也是不一样的,因此在VS中通过偏微分的方法计算其法线、副法线、切线构成切线空间。
3.在PS中计算发射向量,采样立方体发射贴图。
4.PS中视线方向和法线点积值决定水面颜色在深浅。
5.菲涅尔系数决定水面颜色和反射颜色比例,决定最终颜色。
Gerstner波和以上算法的区别是顶点的X、Y方向也在做波动。
本文共 286 字,大约阅读时间需要 1 分钟。
今天把Ogre的Ocean的Shader部分代码全部看完了,总结如下:
1.在VS中通过叠加两个正弦函数计算每个顶点处的高度。
2.既然构建了顶点的位置,那么它的切空间也是不一样的,因此在VS中通过偏微分的方法计算其法线、副法线、切线构成切线空间。
3.在PS中计算发射向量,采样立方体发射贴图。
4.PS中视线方向和法线点积值决定水面颜色在深浅。
5.菲涅尔系数决定水面颜色和反射颜色比例,决定最终颜色。
Gerstner波和以上算法的区别是顶点的X、Y方向也在做波动。
转载于:https://www.cnblogs.com/liding/p/6279230.html