Кастомный шейдер для проектора

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

Кастомный шейдер для проектора

Сообщение Zodjeks 06 мар 2022, 17:36

Всем привет, появилась задача реализовать кастомный шейдер для проектора.
Столкнулся с проблемой, на некоторых поверхностях шейдер материал с текстурой некорректно накладывается:

Скрин
https://sun9-59.userapi.com/impg/wmAMFOg8f3jam_aj2nWELRNq3GwjTQrtVzYemg/BMVy85-Dvww.jpg?size=1920x1080&quality=96&sign=a8254886ceb72f7b16b5210f8d1c35b6&type=album
На некоторых объектах текстура проектора как бы растягивается...
Кто-нибудь сталкивался с подобной проблемой?

P.S. И да, используется старая версия юньки (4.6) [unity 3D] [curved_hands]

Собственно мой шейдер:
Синтаксис:
Используется csharp
Shader "Projector/CoolCloundShadows" {
    Properties {
        _CloundColor ("CloundColor", Color) = (1,1,1,1)
        _NoiseCloundsTexure ("NoiseCloundsTexure", 2D) = "white" {TexGen ObjectLinear}
        _CloundsMoveX ("CloundsMoveX", Float ) = 0
        _CloundsMoveZ ("CloundsMoveZ", Float ) = 0
        _CloundTin ("CloundTin", Float ) = 0.1
        _Dessolve ("Dessolve", Range(0, 10)) = 1
        _CloundDiss ("CloundDiss", Range(0, 1)) = 0.1553778
        _CloudDest ("CloudDest", Range(0, 1)) = 0
        _CloundCulloff ("CloundCulloff", Float ) = 10
        [HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
    }
               
    SubShader {
        Tags {
            "IgnoreProjector"="True"
            "Queue"="Transparent+1000"
            "RenderType"="Transparent"
        }
        Pass {
            Blend SrcAlpha OneMinusSrcAlpha
            ZWrite Off
            Offset -3, -3
                           
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            uniform float _CloundsMoveX;
            uniform float _CloundsMoveZ;
            uniform float _CloundTin;
            uniform float _Dessolve;
            uniform sampler2D _NoiseCloundsTexure; uniform float4 _NoiseCloundsTexure_ST;
            uniform float _CloundDiss;
            uniform float _CloundCulloff;
            uniform float _CloudDest;
            uniform float4 _CloundColor;
           
            struct VertexInput {
                float4 vertex : POSITION;
            };
           
            struct VertexOutput {
                float4 pos : SV_POSITION;
                float4 posWorld : TEXCOORD0;
            };
           
            VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                o.posWorld = mul(_Object2World, v.vertex);
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                return o;
            }
           
            fixed4 frag(VertexOutput i) : COLOR {
                float3 node_9919 = normalize(i.posWorld.rgb);
                float node_8203 = node_9919.g;
                float node_8471 = 0.0;
                float node_2306 = 1.0;
                float2 node_3018 = ((float2(_CloundsMoveX,_CloundsMoveZ)+(node_9919.rb/(node_8471 + ( (abs(node_8203) - node_8471) * (node_2306 - node_8471) ) / (node_2306 - node_8471))))*_CloundTin);
                float4 node_9676 = tex2D(_NoiseCloundsTexure,TRANSFORM_TEX(node_3018, _NoiseCloundsTexure));
                float node_6481 = (saturate(min(node_9676.r,saturate((1.0 - _Dessolve))))*pow(saturate((node_8203+_CloundDiss)),_CloundCulloff));
                float node_1885 = lerp(1.0,node_6481,_CloudDest);
                float3 finalColor = (_CloundColor.rgb*node_1885);
                return fixed4(finalColor,(node_1885*_CloudDest*_CloundColor.a));
            }
            ENDCG
        }
    }
}

 
The Underground Get out alive - computer game in the genre of first-person shooter with elements of survival horror.
Zodjeks
UNец
 
Сообщения: 33
Зарегистрирован: 19 апр 2015, 20:11

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

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

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