Страница 1 из 1

Рендер тумана при изменении проекции камеры [РЕШЕНО]

СообщениеДобавлено: 25 фев 2020, 04:30
mastersmit
Собсно как передать туман в рендер текстуру?
Скрытый текст:

Что в шейдер добавить то?
Синтаксис:
Используется glsl
Shader "Pixesed/Portal"
{
        Properties
        {
                [HideInInspector] _MainTex ("Texture", 2D) = "white" {}
                //_MainTex ("Texture", 2D) = "white" {}
                _Offset("Offset", float) = 0
                _ZTest("ZTest", int) = 4
        }

        SubShader
        {
                 Tags {"RenderType" = "Opaque"}
                LOD 100

                Offset [_Offset], [_Offset] // 0 or -0.03 max
                ZWrite On
                ZTest [_ZTest]

                Pass {
                        CGPROGRAM
                        #include "UnityCG.cginc"
                        #pragma vertex vert
                        #pragma fragment frag
                        //#pragma multi_compile_fwdbase_fullshadows
                        #pragma multi_compile_fog
                        #pragma target 3.0

                        struct appdata
                        {
                                float4 vertex : POSITION;
                                float2 uv : TEXCOORD0;
                        };

                        struct v2f
                        {
                                float4 uv : TEXCOORD0;
                                float4 vertex : SV_POSITION;
                                UNITY_FOG_COORDS(1)
                        };

                        sampler2D _MainTex;
                        float4 _MainTex_ST;

                        v2f vert(appdata v)
                        {
                                v2f o;                 
                                o.vertex = UnityObjectToClipPos(v.vertex);
                                o.uv = ComputeScreenPos(o.vertex);
                                UNITY_TRANSFER_FOG(o, o.vertex);
                                return o;
                        }

                        fixed4 frag(v2f i) : SV_Target
                        {
                                fixed4 col = tex2D(_MainTex, i.uv.xy/i.uv.w);                          
                                //fixed4 col = tex2Dproj(_MainTex, UNITY_PROJ_COORD(i.refl));
                                UNITY_APPLY_FOG(i.fogCoord, col);
                                return col;
                        }
                        ENDCG
            }
        }
        Fallback Off
}
 

Re: Передача тумана в RenderTexture

СообщениеДобавлено: 25 фев 2020, 05:46
mastersmit
А не, все там передается.. Тумана нет, когда применяется кастомная проекция для камеры портала..

Re: Передача тумана в RenderTexture

СообщениеДобавлено: 25 фев 2020, 05:51
mastersmit
Использование nonJitteredProjectionMatrix для камер порталов вместо projectionMatrix вроде решило проблему..

Re: Передача тумана в RenderTexture [РЕШЕНО]

СообщениеДобавлено: 25 фев 2020, 06:44
waruiyume
А чё это такое и как его юзать? Я в гугле минут 10 просидел, но так и не понял.

Re: Передача тумана в RenderTexture [РЕШЕНО]

СообщениеДобавлено: 25 фев 2020, 08:16
mastersmit
А хрен там, не решено =)) nonJitteredProjectionMatrix это тупо простая дефолтная проекция с небольшим смещением в какую-то сторону (видать для экранных эффектов надо такое), ближайшую плоскость от камеры не выставляет как надо..
Пример:
Скрытый текст:
Изображение

Если смотрим в портал (в который направлена камера игрока), то в нем ничего не будет отображаться.. Так как камера портала будет находиться за стеной другого портала и показывать нам стену.. В чем разница между nonJitteredProjectionMatrix и дефолтной теперь сам не понимаю.. Короче вопрос остается открытым - как рендерить туман в портале с изменением projectionMatrix..

пс.: наверное в другой форум надо перенести, в скрипты или в общий, т.к. вопрос как оказалось не связан с шейдером..

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 10:38
waruiyume
Насколько я понимаю, нужно переписывать шейдеры, которые висят на уровне. Собственно написать свой туман.
По ссылке ниже есть объяснение как работает встроенный туман и как можно сделать тот который считается в мировом, а не клип спейсе.
https://catlikecoding.com/unity/tutoria ... g/part-14/

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 12:19
mastersmit
Читал читал, так и не вычитал ничего(( накидал шейдер по тем примерам, накинул на портал - без изменений..

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 12:30
waruiyume
При чём тут портал то, шейдер нужно переписывать тот, который на полу, стенах и кубиках.

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 12:42
mastersmit
А без изменения шейдеров для окружения нельзя?
Просто понять не могу, почему если не менять проекцию для камеры, то туман работает, если менять, то не работает.. Ради интереса изменил проекцию камеры игрока и все, туман не работает вообще(

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 12:53
waruiyume
Потому что дефолтный туман рассчитывает расстояние в клип спейсе который связан с проекцией, и потому расстояния херятся при применении нестандартной проекции.
Эффекты которые завязаны на встроенной текстуре глубины, мягкие частицы например, скорее всего, тоже работать не будут.

Можно попробовать отказаться от использования от oblique матрицы, а для отсечения использовать стенсильные операции, насколько я знаю их можно настроить не модифицируя шейдер.

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 13:59
mastersmit
waruiyume писал(а):Можно попробовать отказаться от использования от oblique матрицы, а для отсечения использовать стенсильные операции, насколько я знаю их можно настроить не модифицируя шейдер.

А можно примерчик как реализовать?

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 25 фев 2020, 14:08
waruiyume
Неможно, я ошибся, конфигурировать стенсил можно, но для этого нужно подготовить шедер, объявить переменную и использовать её вместо фиксированного параметра Cull [_MyCullVariable].
https://gist.github.com/aras-p/b2a0952161cb0c2b2cc0

Re: Рендер тумана при изменении проекции камеры

СообщениеДобавлено: 09 мар 2020, 03:37
mastersmit
waruiyume писал(а):Потому что дефолтный туман рассчитывает расстояние в клип спейсе который связан с проекцией, и потому расстояния херятся при применении нестандартной проекции.
Эффекты которые завязаны на встроенной текстуре глубины, мягкие частицы например, скорее всего, тоже работать не будут.

Ну тебе огроменное спасибо) Если бы не подсказал, что туман, как и всякая постпроцессинговая фигня, рисуется в клип пространстве, то я бы хер когда допетрил..
Скрытый текст: