TA/Unity2012. 6. 1. 09:35

아래 내용은 부트캠트에서 강연 하신 이득우님의 자료를 일부 요약 한것입니당.

 

unity의 3가지 방식의 셰이더

 

Fixed Function Program
• 키워드로 구성
• 정점기반 라이팅 ( 가볍고 빠르다 )
• 오래된 하드웨어와 호환

 

Fixed Function Program 예시


Shader "Fixed Function Shader" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
_BlendTex ("Alpha Blended (RGBA) ", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
combine previous * texture
}
SetTexture [_BlendTex] {
combine previous lerp (texture) texture
}
}
}
}

 

-------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------

 

Vertex / Fragment Program
• 셰이더 모델 : 2.0/3.0
• 셰이더 언어 : Cg, GLSL
• 셰이더 : 버텍스 , 픽셀 셰이더
• CGIncludes 디렉터리
• 셰이더 관련 다양한 매크로 및 함수 제공
• Cg To GLSL 자동 변환

 

Vertex/Fragment Shader 예시

 

Shader "Cg shader" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert(float4 inVert : POSITION)
: SV_POSITION
{
float4 outVert =
mul (UNITY_MATRIX_MVP, inVert);
return outVert;
}
half4 frag(float4 i) : COLOR
{
return half4(1.0, 0.0, 0.0, 1.0);
}
ENDCG
}
}
}

 

------------------------------------------------------------------

------------------------------------------------------------------

 

 

surface shader

 

 

 

CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

결론

 

Fixed Function Program 은 버텍스라이트를 기반으로 하는 가벼운 모바일게임에서 가볍게 돌리 있다는 얘기니까...

너를 앞으론모바일용으로 규정하겠다 ㅎㅎㅎ

 

 

Vertex / Fragment Program 은 Forward Randering 에 대응 하는 녀석이고, 내가 공부하고있는 부분이며 공부하기에 딱 좋다.

너무 어려워 아오 머리야...

 

 

surface shader 는 Foward와 Deferred둘다 대응이되는 shader라는군...이걸로 짜는게 사실편하다..몇줄 안넣어도 대단한 원리 이런거 잘 몰라도도 짤수 있으니까....하지만 공부가 안되 이건.....

 

 

 

 

 

 

'TA > Unity' 카테고리의 다른 글

Blending modes..참고 자료  (0) 2012.06.08
기초적인 조명쉐이더  (0) 2012.06.08
정 반사광  (0) 2012.06.08
Mobile/BackgroundQueueAdditive(SL_Shader)  (0) 2012.05.21
Unity Mobile Shader  (0) 2012.05.21
Posted by 프리랜서 디자이너