【问题标题】:Unity surface shader not casting shadows on itselfUnity表面着色器不会在自身上投射阴影
【发布时间】:2018-07-12 11:34:49
【问题描述】:

我是着色器的新手,我正在尝试为一些非常简单的低聚水制作着色器。我创建了这个简单的表面着色器来改变顶点高度。

问题在于它没有接收到您在 gif 中看到的阴影,并且边缘有一种奇怪的行为。

我做错了什么?

Shader "Ramble/LowPolyWater" {
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Main Color", Color) = (1,1,1,1)
        _Emission ("Emission", Color) = (1,1,1,1)
        _ScrollYSpeed("Scroll y speed", Float) = 0.1
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        CGPROGRAM

        #pragma surface surf Lambert vertex:vert

        struct Input {
            float2 uv_MainTex;
        };

        sampler2D _MainTex;
        fixed4 _Color;
        fixed4 _Emission;
        float _ScrollYSpeed;

        void vert (inout appdata_full v)
        {
            v.vertex.z += frac(sin( dot(v.vertex.xyz ,float3(12.9898,78.233,45.5432) )) * 43758.5453) * sin(_Time.y) * _ScrollYSpeed;
        }

        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = (tex2D (_MainTex, IN.uv_MainTex) * _Color).rgb;
            o.Emission = _Emission.rgb;
        }
        ENDCG
    }
    Fallback "VertexLit"
}

【问题讨论】:

    标签: unity3d shader cg


    【解决方案1】:

    想通了!

    我只需要将 addshadow 添加到这一行 #pragma surface surf Lambert vertex:vert addshadow

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-23
      • 2022-08-12
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2018-06-20
      • 2020-06-26
      相关资源
      最近更新 更多