티스토리 뷰

알파를 표현할 수 있는 쉐이더 코드

Shader "Custom/CustomAlphaBlendingShader" {
	Properties {
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
	}
	SubShader {
		//Transparent는 '투명한'을 의미한다. 그러니까 Tag가 Transparent라면 투명한 객체를 그리는데 사용하는 것이다.
		//Queue는 렌더링을 할 순서를 결정하는 Tag로써,
		//Transparent에는 3000이라는 값이 포함되어있다.
		//가장 기본적인 Geometry(2000), 가장 마지막에 그리는 Overlay(4000) 사이의 값이다. 
		//따라서 "Queue" = "Transparent" 라면 불투명 객체 다음, 오버레이 객체 이전에 그려지는 것이다.
		Tags { "RenderType"="Transparent" "Queue" = "Transparent" }

		//alpha:fade 추가하여 Alpha를 활성화한다.
		CGPROGRAM
		#pragma surface surf Lambert alpha:fade

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
		};

		//Lambert 쉐이더는 SurfaceOutput 구조체를 사용해야한다.
		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"
}

이미지의 나뭇잎 텍스쳐는 Plane Mesh에 입혀준 것으로,  그림자가 사각형이다.

 

뒷 면을 그릴 수 있는, 그러나 그림자는 그리지 않는 쉐이더 코드

Shader "Custom/CustomAlphaBlendingShader" {
	Properties {
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
	}
	SubShader {
		Tags { "RenderType"="Transparent" "Queue" = "Transparent" }

		//cull은 그리는 것을 '배제'함을 의미한다.
		//쉐이더의 기본은 'cull back'으로 면의 뒷면을 그리지 않고 배제한다는 의미이기 때문에 유니티에선 기본적으로 메쉬의 뒷면을 그리지 않는다.
		//여기서 'cull off'는 특정 면을 그리지 않는 작업을 off 했기 때문에 두 면이 모두 그려질 것이다.
		cull off

		CGPROGRAM
		#pragma surface surf Lambert alpha:fade

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) {
			fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		ENDCG
	}
	//FallBack 부분에 명시된 쉐이더는 상기한 코드가 작동하지 않았을 때 대신 사용할 쉐이더인 것이다.
	//이 부분이 그림자의 Pass와도 연결이 되어있다는 것을 짐작할 수 있다.
	//이름에 Transparent가 들어가는 쉐이더는 그림자를 그리지 않아?
	FallBack "Legacy Shaders/Transparent/VertexLit"
}

뒷 면도 분명히 그리고 있고 그림자는 그리지 않고 있다.


필요한 기능을 추가하면 얼마든지 사용할 수 있지만,

쓸 수 있으면 써봐라 식의 알파 소팅의 문제를 고스란히 간직한 훌륭한 쉐이더이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함