위 결과가 시각적으로 이상해보이는 것은 정상이다.
2pass 구현
CGPROGRAM ~ ENDCG 부분을 복사해서, 아래에 붙여넣는다.
면 뒤집기
외부에 cull front를 적어준다.
코드
Shader "Custom/part14-3"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
cull front // 컬링 설정한다. 명시하지 않으면 cull back이 기본값이다.
// 쉐이더 코드가 아닌, '설정' 키워드이므로 세미콜론 붙이지 않고, 외부에 쓴다.
// cull back, cull front, cull off가 있다. cull off는 2-side라고도 부른다.
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Lambert
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
// 2nd Pass
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Lambert
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
'셰이더 (Shader) > 유니티 쉐이더 스타트업 - 정종필' 카테고리의 다른 글
[Unity/Shader] 파트14-5 : 끊어지는 음영 만들기 (0) | 2023.08.20 |
---|---|
[Unity/Shader] 파트14-4 : 버텍스 쉐이더를 이용한 오브젝트 확장 (0) | 2023.08.20 |
[Unity/Shader] 파트14-2 : 외곽선 만들기 이론 (0) | 2023.08.20 |
[Unity/Shader] 파트14-1 : NPR 렌더링 (0) | 2023.08.20 |
[Unity/Shader] 파트13-5 : Rim 라이트를 이용한 가짜 스펙큘러 만들기 (0) | 2023.08.19 |
댓글