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

(似乎发现了奇怪的东西)PTGI熔炉纯白像素不发光解决方案

只看楼主收藏回复

在原版PTGI E12中,代码位于deferred10.fsh的1231行开始,靠近整个文件的底部
怎么发现的就不说了,这是一段不怎么愉快的寻根溯源的过程(

熔炉类(高炉、烟熏炉、普通熔炉)的发光由这行代码控制:
float d=saturate(v.albedo.x-(v.albedo.y+v.albedo.z)*.5-.2);
d是发光强度,v.albedo.xyz就是RGB,0~1对应材质的0~255,也就是说默认的熔炉材质像素亮度的公式是这样的:
亮度=R-(G和B的平均值)-0.2,值限制在0到1之间
所以纯白的像素(RGB都为1)是不会发光的
然后我个人做了一点小小的修改

把原来的情况下会发光的像素与纯白的像素放在了一起,亮度为RGB的平均值,这样纯白的像素也会发光了
由于原版情况下熔炉高炉烟熏炉除了熔炉的火之外没有纯白的像素,所以除了熔炉的火焰没了暗点之外似乎没啥影响
(就是烟熏炉最上面的火焰看起来依旧莫名其妙)


IP属地:湖南1楼2020-06-16 18:54回复
    当然得到的发光强度d参与下面的公式:
    t+=v.albedo.xyz*d*2.*GI_LIGHT_TORCH_INTENSITY*vec3(2.,.35,.025);
    之后才是最终的发光颜色以及强度。deferred10.fsh中那一段代码似乎是拿来处理最终的贴图发光的部分(不是实际的环境光追踪)


    IP属地:湖南2楼2020-06-16 18:57
    回复
      似乎在lib/Materials.inc中与deferred10.fsh中同步添加一些内容可以添加新的贴图发光性质(?)
      就是不知道到底需要修改多少处地方


      IP属地:湖南3楼2020-06-16 19:01
      回复
        nbnbnbnb


        IP属地:重庆来自手机贴吧4楼2020-06-16 19:34
        回复
          大佬牛逼


          来自Android客户端5楼2020-06-16 20:25
          回复
            NBNB(不怎么愉快的---


            6楼2020-06-16 21:51
            回复
              测试了一下,确实可以添加自定义贴图发光规则,我自己添加了一个MAT_ID_BEACON,只有蓝色的核心会贴图发光

              需要在以下地方修改内容:
              Materials.inc,开头define一个MAT_ID,实际名称随意(但是最好按照规律来),数字随意(但是别和上面的重复了),并且在下面的struct里面也添加上一个(最好名称设置为目标)

              然后在下面的CalculateMasks函数里面添加一段代码:
              zmecwWmFca.你在struct添加的内容=GetMaterialMask(你自己设置的MAT_ID, materialID);

              然后在deferred10.fsh里面设置好你的MAT_ID的各种属性
              (我的是当G除以B在一个特殊区间时,表面均匀发光,区间经过调节以使信标核心发光而玻璃框不发光)

              最后在gbuffers_terrain.vsh引用你自己定义的MAT_ID就可以了,mc_Entity.x就是block.properties里面的数字ID



              IP属地:湖南7楼2020-06-16 23:23
              回复
                把你的建议跟SE说说吧


                IP属地:辽宁8楼2020-06-17 13:41
                收起回复
                  NB


                  IP属地:广东9楼2020-06-17 17:26
                  回复
                    可以用发光图吗


                    IP属地:广东10楼2020-06-18 20:27
                    收起回复