Страница 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 писал(а):Потому что дефолтный туман рассчитывает расстояние в клип спейсе который связан с проекцией, и потому расстояния херятся при применении нестандартной проекции.
Эффекты которые завязаны на встроенной текстуре глубины, мягкие частицы например, скорее всего, тоже работать не будут.
Ну тебе огроменное спасибо) Если бы не подсказал, что туман, как и всякая постпроцессинговая фигня, рисуется в клип пространстве, то я бы хер когда допетрил..