(shader这方面的教材、尤其体积光讲的暧昧不清,浑浑昏昏!)
由于将要做的一款作品里面要用到体积光特效,于是对这块知识进行了相应的研究。成果:
1.发现了unity shader的一个BUG:
参照之前所学的DX的知识,将混合状态设置成这样,进行颜色混合的时候,发现无法进行纯色混色(颜色值,相对于贴图而言),以及部分贴图出现无法混合成功的情况。于是顺着这条线一直往下探索、测试,发现了事件的真相:
unity的fragment着色器在“采色”结束后,不会按照上面标注的那句blend进行操作,也就是说它内部没有实现混合,也不能说完全没有,当标志位 Tags 标明了"renderType"="Transparent"、或者"queue"="transparent"时,贴图会根据贴图自带的ALPHA值进行混合,但是贴图像素单元的后期设置的alpha值不会参与Blend混合,你后期修改不修改没啥鸟用;
纯色、某一部分贴图则不会(我这部分测试结果不全面,不能以偏概全)。(Tags这块也是个BUG,透明处理标志的处理,写的非常不严谨,没有规律可循,保险还是两个标志都写上,一个是排序,一个是透明标志)。
解决办法:需要手动进行一步乘ALPHA操作:
体积光的效果,就另起一篇吧。
这篇先到此结束。
时间: 2024-10-28 04:08:47