Shader "Custom/fake_reflection"
{
Properties
{
_MainTex("Albedo (RGB)", 2D) = "white" {}
_NormalMap("NormalMap", 2D) = "bump" {}
_reflect("reflect", Range(-1,1)) = 0.9
_CubeMap("CubeMap", cube) = "" {}
}
SubShader
{
Tags{ "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
#pragma target 3.0
sampler2D _MainTex, _NormalMap;
samplerCUBE _CubeMap;
float _reflect;
struct Input
{
float2 uv_MainTex, uv_NormalMap;
float3 worldRefl;
INTERNAL_DATA
};
void surf(Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Normal = UnpackNormal(tex2D(_NormalMap, IN.uv_NormalMap));
o.Albedo = c.rgb;
o.Emission = texCUBE(_CubeMap, WorldReflectionVector(IN, o.Normal))*_reflect;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
큐브맵이 있어야 작동한다.
'Unity > Surface Shader' 카테고리의 다른 글
적을 나타내는 아웃라인 (0) | 2020.12.19 |
---|---|
가벼운 툰 셰이더 (0) | 2020.12.16 |
기본적인 일반텍스쳐+노멀+아웃라인 적용 쉐이더 (0) | 2020.10.06 |
Alpha (0) | 2020.05.24 |
RampTexture (0) | 2020.05.21 |