mc光影吧 关注:8,600贴子:130,477

SEUS Renewed水面通用修复方案

只看楼主收藏回复

大家都已经知道SEUS Renewed系列水面在旧版的mc是无法使用的
我后来看了一下代码,其实原因非常简单
首先我们先来看一下有关材质判断的官方docs是怎么解释的

x通道是物体的id,而y通道是渲染类型
当y通道为1的时候即半透明物体。
这时候再来看一下SEUS Renewed是怎么写的:

这样写的一大好处就是可以避免一些特殊的情况(比如mod什么的),但是缺点也很明显,就是旧版(以1.7.x系列为代表)似乎这个功能是不生效的。所以我这里就这样做:
因为光影普遍都是用物体ID来判断,而通用的水的判断是这个:

所以综上所述,我们对SEUS Renewed的代码稍作修改:

问题便得以解决。


1楼2019-03-04 11:54回复
    之后我会相继写更多的教程帮助大家修改光影,当然,我写的教程会要求有一定的编程基础,要求不高,但是至少要会一点C系语言
    补一下一楼遗漏的地方:
    我们修改的文件是gbuffers_water.vsh


    2楼2019-03-04 11:56
    收起回复
      2026-02-17 23:00:39
      广告
      不感兴趣
      开通SVIP免广告
      顺便贴一下SMUS修改的源代码,懒得自己码的可以复制粘贴:
      if(mc_Entity.y == 1 || mc_Entity.x == 8.0 || mc_Entity.x == 9.0)
      {
      iswater = 1.0;
      }


      3楼2019-03-04 11:58
      回复
        下一次写一下关于E2体积云的教程,如果有时间我会浅析一下体积云的光照是如何修复的,以及旧版mc当中体积云撕裂的解决方案


        4楼2019-03-04 11:59
        回复
          滋磁大佬
          想问一下mc_Entity.y还有什么有效值


          IP属地:上海来自Android客户端5楼2019-03-04 20:58
          收起回复
            看来mc光影吧算是真凉透了


            6楼2019-03-06 11:45
            收起回复
              支持,刚好也遇到这个问题不会解决,谢大佬


              IP属地:福建7楼2019-03-07 13:32
              回复
                前天刚自己去看了。。。


                IP属地:广东来自Android客户端8楼2019-03-07 15:35
                回复
                  2026-02-17 22:54:39
                  广告
                  不感兴趣
                  开通SVIP免广告
                  等下次教程.png!!你爷(pspupsp)爷还是你爷爷.gif


                  来自iPhone客户端9楼2019-03-08 17:25
                  回复
                    支持卫星dalao


                    IP属地:广东来自Android客户端10楼2019-03-09 14:38
                    回复
                      臭不要脸来个申精@abc1411205127


                      11楼2019-03-09 22:04
                      收起回复
                        新的解决方案,只需把//去掉就行SE这糟老头原本就在里面写了,但没启用


                        IP属地:浙江12楼2019-05-03 10:17
                        收起回复
                          由于驱动的差异,前面的教程有一个缺点,容易引起这个潜在的问题,在这里我做一个改进,首先我们回头看原教程的修改:

                          潜在的问题出在哪里呢?出在mc_Entity.x == 8.0和mc_Entity.x == 9.0判断上,8.0和9.0是一个浮点数,而mc_Entity.x是个整型,所以当进行判断的时候,可能会产生浮点误差,8.0可能是8.000000000000001,于是便不等于8.解决这个问题的方法很简单,就是把浮点数改为整型,如下图:

                          至于@ETtttutu,方法上是正确的,但为什么教程没有采用呢?我们知道glsl具有c的很多性质,自然也具有c语言的短路性质.如果只是简单的去掉如图所示的注释:

                          从时间复杂度上来讲,这里便多了一重判断.首先在mc_Entity.y == 1上面判断了一次,然后再判断mc_Entity.x == 8.0 || mc_Entity.x == 9.0,而每一次判断对显卡的并行处理都是极大的干扰,所以这就是为什么教程合并起来写的原因.


                          13楼2019-05-03 13:08
                          回复


                            上面的黑影是 renewed 1.0.0 下面的蓝光是renewed E2T4G1
                            这两个图是在水下玻璃无水房里截的 renewed1.0.0 添加了什么东西才会这样发黑呢? 怎么修改
                            现在好多基于seus修改的光影都这样 发黑


                            15楼2019-05-29 16:55
                            回复
                              2026-02-17 22:48:39
                              广告
                              不感兴趣
                              开通SVIP免广告
                              这么改完之后水面就鬼畜了,这些方块疯了一样的在刷


                              是我改的不对吗?还是说必须要专业的软件去改?


                              IP属地:内蒙古17楼2019-06-16 14:29
                              收起回复