Shader "Custom/oldschool-P"
{
Properties
{
_Color ("Color",Color) = (1,1,1,1)
_SpecularPower ("SpecularPower", Range(1,50)) = 1
_SpecularColor ("SpecularColor",Color) = (1,1,1,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;
uniform float3 _Color;
uniform float3 _SpecularColor;
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 lambert = max(0.0,dot(nDir,lDir));
float Phong = pow(max(0.0,dot(lDir,vRDir)),_SpecularPower);
fixed3 finalRGB = _Color * lambert + _SpecularColor* Phong;
return fixed4(finalRGB,1.0);
}
ENDCG
}
}
FallBack "Diffuse"
}
oldschool-P
最新推荐文章于 2024-05-05 23:59:26 发布