Shader "Custom/Phong"
{
Properties
{
_SpecularPower ("SpecularPower", Range(1,50)) = 1
}
SubShader {
Tags {
"RenderType"="Opaque"
}
LOD 200
Pass {
Name "FORWARD"
Tags {
"LightMode"="ForwardBase"
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_instancing
#include "UnityCG.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma target 3.0
uniform float _SpecularPower;
struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float4 posWS : TEXCOORD0;
float3 nDir : TEXCOORD1;
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.nDir = UnityObjectToWorldNormal(v.normal);
o.posWS = mul(unity_ObjectToWorld, v.vertex);
o.pos = UnityObjectToClipPos( v.vertex );
return o;
}
float4 frag(VertexOutput i) : COLOR {
float3 vDir = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);
float3 nDir = i.nDir;
float3 vRDir = reflect( -vDir, nDir );
float3 lDir= normalize(_WorldSpaceLightPos0.xyz);
//float _SpecularPower = UNITY_ACCESS_INSTANCED_PROP( Props, _SpecularPower);
float Phong = pow(dot(lDir,vRDir),_SpecularPower);
fixed4 finalRGBA = Phong;
return finalRGBA;
}
ENDCG
}
}
FallBack "Diffuse"
}
Phong
最新推荐文章于 2024-01-06 01:13:45 发布