哟西,快来到这个课程的尾声了。
仔细一想,时间过得真快啊。
课程中间的后处理和特效都被我跳过了,之后还是要慢慢补上来。
后面一些不懂的点,似乎在前面有比较详细的讲过,果然还是不能跳太多啊。
总之来到目前的倒数第二章,哈吉马路哟~
唔姆,开讲之前先回顾一下这节课的知识点,大致上可以概括到LocalReflection,以及水坑部分的Shader实现。那么就开始吧。
Local Reflection
这是我们上一章的遗留问题。
通过LocalReflection的shader实现,我们可以做到类似于reflect probe的box reflection的效果。
box reflection开不开区别还是很大的。
不开:
开了:
使用我们的LocalReflection Shader:
整体的连线如下:
上半部分是对于常规采样CubeMap的一些修正,一般都是用reflectDir去采样。
这里在world Reflection基础上,增添了很多。
具体原理,老师没讲有点痛苦,大佬也都是拿到一个轮子就用,快是真快,不知道对我惨淡的未来有没有什么隐患啊。
下班部分就是去获的一个类似于mask或range的数值,这倒不难。
boxMask我看了一下原理,不难,但有点忘了。
兄弟我不喜欢胡说话,待会再去看看,再补上。
当然这种效果也可以拓展到类似平面的3D实现,这很实用的。
大概效果如下,cubumap好像有点糊,应该是会很清晰的,估计是我哪里又没设置好,泪目。
使用reflect probe也是可以实现类似的效果,
但四边会有拖尾类似的效果,仅仅是比我们少了一个mask的效果。
水坑材质
大概效果如下:
水坑的效果,实际上就是材质混合的一个应用。
本质就是水和地面材质的叠加混合,毕竟只有两层。
那么就来看看如何实现吧。
这里我们的uv使用了POM的技术,相较于PO,我去询问了AI大哥有什么区别。
Parallax Occlusion Mapping (POM) 和 Parallax Occlusion 是两种在计算机图形学中用于模拟表面细节和深度感的技术,它们在实现方式和效果上存在一些区别。
- Parallax Occlusion Mapping (POM):
- 原理: POM 是一种在纹理表面上模拟视差效果的技术。通过在纹理上进行视差映射,POM 能够产生在视觉上更具深度感的表面效果。
- 实现: 在实现上,POM 通常会使用多个纹理样本,通过在表面上进行多次采样来模拟出凹凸不平的效果。这使得表面上的纹理能够在视觉上产生错觉,看起来像是有真实的几何细节。
- Parallax Occlusion:
- 原理: Parallax Occlusion 是一种通过位移纹理坐标来模拟视差效果的技术。与 POM 不同,Parallax Occlusion 更加注重性能,通过较少的样本和计算来实现类似的效果。
- 实现: Parallax Occlusion 使用较少的样本数和计算来进行位移,以模拟出视差效果。这使得该技术在运行时性能上更加高效,但通常会在视觉上略微缺乏 POM 的精确性。
总的来说,两者都是用于在表面上模拟深度感的技术,但在实现细节和性能上存在差异。选择使用哪种技术通常取决于项目的需求、性能要求以及对视觉效果的具体期望。 POM 通常提供更准确的效果,而 Parallax Occlusion 通常更注重性能。
我向来不太信任大哥,但感觉和我体感来说没差多少,现就放在这里吧。
那么其实两者没差太多,至少原理是一致的。POM节点提供的功能更强大一点,性能差了点罢了。
tips:POM只接受Texture Object,这里我在Height上也备注了。
那么,顺接上图,height传到我们的texture中,再使用上面的uv来采样。与顶点色结合,使用HeightLerp得到了三个通道的因子,用于实现后面baseColor,Normal,Roughness的混合。
混合之前,先求出水坑的Normal。上半部分是我们很熟悉的水面的uv扰动,第一次blend以后与(0,0,1)做了个Lerp,控制wave的强度。
下半部分,则是获取RainDrop造成的uv变化,这是个新的知识点。
我本来以为这种雨滴会挺难的,没想到采样个类似于帧动画的法线贴图就好了。
得到的雨滴的法线再和之前的blend一次就好了。
最后就是BaseColor,Normal,Roughness混合的模块了。这三块作法都差不多,略过一下好了。
BaseColor额外做了个与水坑颜色的插值。
Normal没什么。
Roughness,多了几个lerp去做控制
以上,每个都有个颜色 通道去控制,可以放心地用顶点刷去绘制了。
您必须 登录 才能发表评论