提出问题


解决问题:半程向量
警告
半程向量本质上不是由数学原理推导得出,仅是由经验的方法凑巧实现的效果,实际上在数值上并不准确,但在视觉美学上是可取的。

vec3 halfwayDir = normalize(lightDir + viewDir);
spec = pow(max(dot(normal, halfwayDir),0.0), 1.0);使用半程向量与法线的夹角作为镜面反射值,这样物理观察者在哪侧,都不会出现负值。
效果:



半程向量本质上不是由数学原理推导得出,仅是由经验的方法凑巧实现的效果,实际上在数值上并不准确,但在视觉美学上是可取的。

vec3 halfwayDir = normalize(lightDir + viewDir);
spec = pow(max(dot(normal, halfwayDir),0.0), 1.0);使用半程向量与法线的夹角作为镜面反射值,这样物理观察者在哪侧,都不会出现负值。
效果:

作者: Chaim
链接: https://chaim.eu.org/posts/blinn-phong%E5%85%89%E7%85%A7%E6%A8%A1%E5%9E%8B/
许可证: CC BY-NC-SA 4.0
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.
输入关键词搜索文章内容