서피스 셰이더 공부 시작.....예전에 문서 다 읽어 봤지만 마치 처음 읽어 보는 것 같은 이 이상한 기분..;;;;
이번은 서피스 셰이더 예제 따라하기~
1. 램버트 라이트 에 색상만 출력하는 초 간단 셰이더
Shader "DY/surf_ex_001" {
SubShader{
Tags{"RenderType"="Opaque"}
CGPROGRAM
#pragma surface surf Lambert
//기본으로 지정되있는 램버트 라이트 사용
struct Input {
float4 color : COLOR;
};
//인풋은 달랑 색상만 받는다
void surf (Input IN, inout SurfaceOutput o){
o.Albedo = 0.5;
}
//Albedo는 색상(Diffuse) 정하는 구문이고 0.5 는 컬러값 (회색)을 준다.
ENDCG
}
//SubShader
}
//Shader
==========================================================================================
2. 텍스쳐 추가...디퓨즈 셰이더
Shader "DY/surf_ex_002" {
Properties{
_MainTex("Texture",2D)="White"{}
}
SubShader{
Tags{"RanderType"="Opaque"}
CGPROGRAM
#pragma surface surf Lambert
struct Input{
float2 uv_MainTex;
};
//인풋에 메인 텍스쳐의 uv정보를 받아온다.
sampler2D _MainTex;
//2D텍스쳐를 사용하기 위한 참조.
void surf(Input IN, inout SurfaceOutput o){
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
}
//디퓨즈에 해당하는Albedo에 메인 텍스쳐와 인풋의 uv정보를 적용.
ENDCG
}
Fallback "Diffuse"
//그래픽카드가 안맞거나 오류가 생기면 디뷰즈 셰이더로 대체.
}
==========================================================================================
3. 범프맵 추가 ......(사칙연산이 되는구나......좋다! 서피스!!)
Shader "DY/surf_ex_003" {
Properties{
_MainTex("Texture",2D)="white"{}
_BumpMap("Bumpmap",2D)="bump"{}
}
SubShader{
Tags{"RanderType"="Opaque"}
CGPROGRAM
#pragma surface surf Lambert
struct Input{
float2 uv_MainTex;
float2 uv_BumpMap;
};
//인풋에 범프맵 uv추가.
sampler2D _MainTex;
sampler2D _BumpMap;
//범프맵도 2D텍스쳐니까 참조 추가.
void surf(Input IN, inout SurfaceOutput o){
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
o.Normal = UnpackNormal (tex2D(_BumpMap, IN.uv_BumpMap));
}
//유니티의 노말압축을 풀어주고(UnpackNormal) 범프맵과 uv정보 적용
ENDCG
}
Fallback"Diffuse"
}
==========================================================================================
'Unity공부 > Unity Surface Shader 공부' 카테고리의 다른 글
unity surface shader 공부 6 - surface shader custom Light 예제 따라하기 (0) | 2012.08.24 |
---|---|
unity surface shader 공부 5 - surface shader 예제 따라하기 (0) | 2012.08.21 |
unity surface shader 공부 4 - surface shader 예제 따라하기 (0) | 2012.08.20 |
unity surface shader 공부 3 - surface shader 예제 따라하기 (0) | 2012.08.17 |
unity surface shader 공부 2 - surface shader 예제 따라하기 (0) | 2012.07.27 |