首頁>Game>source

我从一些Linux使用者那裏得到了有關该遊戲的 water isn't rendered on his machine的報告

3个示例操作系統:

  • Ubuntu 20.04 (with kernel 5.4.0-54-generic x86_64

  • Linux 4.15 Linux Mint 19.2 64bit

  • Mac OS X 10.13.6

我使用此着色器:https://roystan.net/articles/toon-water. html

我做了一个小的更改,因此可以在 orthographic projection中使用它 以及:

           float existingDepthLinear = 0;
            if (unity_OrthoParams.w > 0)
            {
                // orthographic camera
            #if defined(UNITY_REVERSED_Z)
                existingDepthLinear = 1.0f - existingDepth01;
            #endif
                existingDepthLinear = (existingDepthLinear * _ProjectionParams.z) + _ProjectionParams.y;
            }
            else
            {
                // perspective camera
                existingDepthLinear = LinearEyeDepth(existingDepth01);
            }
            // Difference, in Unity units, between the water's surface and the object behind it.
            float depthDifference = existingDepthLinear - i.screenPosition.z;

我有種感覺

           #if defined(UNITY_REVERSED_Z)
                existingDepthLinear = 1.0f - existingDepth01;
            #endif

是引起問题的原因。

当我將其卸下時,在至今執行良好的PC上,整个表面都是泡沫.如此纯白.就像在他们的計算機上一樣。

那麼也许未定義UNITy_REVERSED_z?

什麼可能匯致此問题? 隨時詢問更多資訊,也许我可以提供。

最新回復
  • 6月前
    1 #

    着色器的錯誤 碼.問题發生在 Z buffer is reversed所在的機器上

    在這種情况下, ,但是誤会...好吧, existingDepth01 should be inverted ...我還原了錯誤的變數,在此之後的一行中,我在計算中使用了錯誤的變數. :D而且我看不到這些明顯的錯誤...

    只有運气好,它才能在大多數機器上工作。

    I messed up

    Here's the problematic part, fixed:
    
    #if defined(UNITY_REVERSED_Z) existingDepth01 = 1.0f - existingDepth01; #endif existingDepthLinear = (existingDepth01 * _ProjectionParams.z) + _ProjectionParams.y;

  • c++:如何結合双邊模糊通道?
  • html5:如何將Unity遊戲變成相容MRAID的可播放廣告?