mc光影吧 关注:8,603贴子:130,396
  • 18回复贴,共1

PTGI岩浆内“水雾”颜色修正方法

只看楼主收藏回复

涉及文件composite4.fsh,建议搜索isEyeInWater来快速到达修改处
在PTGI E12里面,水雾由以下代码实现:
if(isEyeInWater>0)
UnderwaterFog(I,length(m.xyz),y,colorSkyUp,colorSunlight);
但是查看Optifine的shaders文档之后,摄像头在水中时isEyeInWater是1,在岩浆中为2,SE完全没有分开处理,造成了水雾和“岩浆雾”的颜色一致。
colorSkyUp为没有阳光照射(存疑)时的水雾颜色,而colorSunlight不必多说,阳光对岩浆颜色的影响。
我本人的修改如下:
if(isEyeInWater>1)
UnderwaterFog(I,2.*length(m.xyz),y,vec3(1.,.04,0.),vec3(1.,.04,0.));
if(isEyeInWater>0&&isEyeInWater<2)
UnderwaterFog(I,length(m.xyz),y,colorSkyUp,colorSunlight);
这样水雾和“岩浆雾”就分开处理了。“岩浆雾”中2*length(m.xyz)的效果是让“岩浆雾”看起来效果更浓,想要更浓的话可以把2换成更高的值。也可以试试更改“岩浆雾”的颜色来达到更好的效果。
(下面多标了一行代码,不要在意)

效果:


IP属地:湖南1楼2020-07-20 18:53回复
    @贴吧用户_51MRPCy
    @户口122


    IP属地:湖南2楼2020-07-20 18:53
    回复



      今天下午我就改过(kuda的)辣,感谢at


      IP属地:重庆4楼2020-07-20 19:24
      收起回复
        颜色换到vec3(1.,.01,0.)似乎更好看一点( ?)
        把G拉到0的话又太红了,就这样罢


        IP属地:湖南8楼2020-07-20 23:23
        回复
          dd


          来自Android客户端9楼2020-07-21 16:19
          回复
            目前还有一个疑点:各种贴图似乎依然按照水雾的方式染色,使用Optifine的放大功能时更为明显(但是雾色是正常的)


            IP属地:湖南10楼2020-07-21 23:35
            回复
              嘿嘿 有了你的教程 我就去祸祸chroma了 把他从这样


              IP属地:上海来自Android客户端11楼2020-07-22 00:17
              回复
                整成了 那样


                IP属地:上海来自Android客户端12楼2020-07-22 00:18
                收起回复
                  貌似找到原因了,Common.inc中的void UnderwaterFog中直接引用了GetWaterAbsorption()的问题,GetWaterAbsorption()是水对光线的吸收,那这样的话还要改更多东西才能达到最佳效果啊


                  IP属地:湖南13楼2020-07-22 10:13
                  回复
                    不多说了,直接上图
                    (试着改Common.inc里面各个文件的时候弄了些没用的东西,只管高亮部分就行了)



                    效果对比:(和原版PTGI的对比)



                    IP属地:湖南14楼2020-07-22 10:28
                    收起回复
                      远处绿光


                      IP属地:上海来自Android客户端15楼2020-07-22 12:45
                      回复
                        知识点Get✓,原来isEyeInWater还能大于比1大


                        IP属地:辽宁来自Android客户端16楼2020-07-22 15:43
                        收起回复