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

Шейдеры и все-все-все.

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

Сообщение mastersmit 25 фев 2020, 04:30

Собсно как передать туман в рендер текстуру?
Скрытый текст:

Что в шейдер добавить то?
Синтаксис:
Используется 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
}
 
Последний раз редактировалось mastersmit 09 мар 2020, 03:38, всего редактировалось 3 раз(а).
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение mastersmit 25 фев 2020, 05:46

А не, все там передается.. Тумана нет, когда применяется кастомная проекция для камеры портала..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение mastersmit 25 фев 2020, 05:51

Использование nonJitteredProjectionMatrix для камер порталов вместо projectionMatrix вроде решило проблему..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение waruiyume 25 фев 2020, 06:44

А чё это такое и как его юзать? Я в гугле минут 10 просидел, но так и не понял.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение mastersmit 25 фев 2020, 08:16

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

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

пс.: наверное в другой форум надо перенести, в скрипты или в общий, т.к. вопрос как оказалось не связан с шейдером..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение waruiyume 25 фев 2020, 10:38

Насколько я понимаю, нужно переписывать шейдеры, которые висят на уровне. Собственно написать свой туман.
По ссылке ниже есть объяснение как работает встроенный туман и как можно сделать тот который считается в мировом, а не клип спейсе.
https://catlikecoding.com/unity/tutoria ... g/part-14/
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение mastersmit 25 фев 2020, 12:19

Читал читал, так и не вычитал ничего(( накидал шейдер по тем примерам, накинул на портал - без изменений..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение waruiyume 25 фев 2020, 12:30

При чём тут портал то, шейдер нужно переписывать тот, который на полу, стенах и кубиках.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение mastersmit 25 фев 2020, 12:42

А без изменения шейдеров для окружения нельзя?
Просто понять не могу, почему если не менять проекцию для камеры, то туман работает, если менять, то не работает.. Ради интереса изменил проекцию камеры игрока и все, туман не работает вообще(
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение waruiyume 25 фев 2020, 12:53

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

Можно попробовать отказаться от использования от oblique матрицы, а для отсечения использовать стенсильные операции, насколько я знаю их можно настроить не модифицируя шейдер.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение mastersmit 25 фев 2020, 13:59

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

А можно примерчик как реализовать?
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

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

Сообщение waruiyume 25 фев 2020, 14:08

Неможно, я ошибся, конфигурировать стенсил можно, но для этого нужно подготовить шедер, объявить переменную и использовать её вместо фиксированного параметра Cull [_MyCullVariable].
https://gist.github.com/aras-p/b2a0952161cb0c2b2cc0
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение mastersmit 09 мар 2020, 03:37

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

Ну тебе огроменное спасибо) Если бы не подсказал, что туман, как и всякая постпроцессинговая фигня, рисуется в клип пространстве, то я бы хер когда допетрил..
Скрытый текст:
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1