'TA/Unity'에 해당되는 글 63건

  1. 2012.06.01 unity shader 3가지 방식 정리
  2. 2012.05.21 Mobile/BackgroundQueueAdditive(SL_Shader)
  3. 2012.05.21 Unity Mobile Shader
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 프리랜서 디자이너
TA/Unity2012. 5. 21. 14:14
  1. hader "Mobile/BackgroundQueueAdditive"
  2. {
  3. Properties
  4. {
  5. _Color ("Main Color", Color) = (.5,.5,.5,0)
  6. _EnvMap ("EnvMap", 2D) = "black" { TexGen SphereMap }
  7. }
  8. Category
  9. {
  10. Tags { "Queue"="Background" "IgnoreProjector" = "True" "RenderType"="Background"}
  11. //SeparateSpecular On
  12. Lighting Off
  13. Zwrite off
  14. Fog { Mode Off }
  15. //Ztest Always
  16. //Cull off //Will Show back thorugh front
  17. Blend One One // additive
  18. //Blend One OneMinusSrcColor // soft additive
  19. //Blend SrcAlpha OneMinusSrcAlpha // real alpha blending
  20. SubShader
  21. {
  22. Pass
  23. {
  24. SetTexture [_EnvMap]
  25. {
  26. combine texture
  27. }
  28. SetTexture [_EnvMap]
  29. {
  30. constantColor [_Color]
  31. Combine previous * constant DOUBLE, previous * constant
  32. }
  33. }
  34. }
  35. }
  36. }

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

Blending modes..참고 자료  (0) 2012.06.08
기초적인 조명쉐이더  (0) 2012.06.08
정 반사광  (0) 2012.06.08
unity shader 3가지 방식 정리  (0) 2012.06.01
Unity Mobile Shader  (0) 2012.05.21
Posted by 프리랜서 디자이너
TA/Unity2012. 5. 21. 01:18

원문 http://chulin28ho.egloos.com/5526644 대충 살아가는 개발자.




Unity Mobile Shader

유니티의 모바일 쉐이더가 새로 생겼지만,  애석하게도 도움말이 없습니다. (혹시 제가 못 찾은 겁니까?)
그래서 아티스트 분들을 위해 제가 간단하게 정리해 보았습니다. 

Built-in mobile shader




Mobile / Background 쉐이더 
라이팅 영향도 받지 않고 단지 텍스쳐만 출력하는 초 간단한 쉐이더입니다. 
재미있게도 Zwrite도 하지 않습니다. 즉 이것은 말그대로 원거리 배경용 쉐이더. 스카이박스는 아니고 멀리 보이는 원경 한 장짜리 이미지 같은 경우에 쓸 수 있는 쉐이더입니다. 0.5g

Mobile / Bumped Specular 
보이는 그대로, 모바일용으로 만든 스페큘러가 포함된 노말맵 사용 쉐이더입니다. 
좀 더 간략화 된 특징을 가지고 있는데, 
- 메인 칼라나 스페큘러 칼라를 지정할 수 없습니다. 
- 스페큘러에서 사용하는 라이트 방향은 버텍스에서 대충 받아서 옵니다.  
- 노말맵의 타일링이나 옵셋은 베이스 텍스쳐의 설정값을 따릅니다. 
- 디퍼드 라이팅을 지원하지 않습니다. 라이트맵도 지원하지 않습니다. 
- 디렉셔널 라이트 1개만 지원되고, 나머지 라이트들은 버텍스 라이트나 구면조화 라이트로 작동합니다. 
일반적인 범프/스페큘러보다는 좀 가볍게 되어 있긴 합니다만, 그래도 노말맵 연산이 되므로 모바일에서 함부로 사용해서는 곤란합니다.  3g

Mobile / Bumped Specular (1 Directional Light) 
위의 범프 스페큘러 쉐이더와 동일하지만, 단 한가지만 다릅니다. 
- 디렉셔널 라이트 1개만 지원되고, 나머지 라이트는 무시됩니다. 
즉 위의 쉐이더보다 아주 약간 가볍다고 할 수 있습니다.  2.7g 

Mobile / Particles / Additive
이전에 사용하던 일반적인 Add 쉐이더와 거의 같으며, 다른점은 다음과 같습니다. 
- Tint Color가 없습니다. 
- 스무스 파티클 옵션이 없습니다. 
- 알파테스트가 없습니다 (전에는 있었나?)
- 칼라마스크가 없습니다. 
사실상 그 외는 동일하게 제작되어 있습니다. 좀 더 가벼워진 버전이라고 할 수 있습니다. 1.5g 

Mobile / Particles / Alpha Blended
이전에 사용하던 알파 블렌딩 쉐이더와 동일하며, 다른점은 위의  Add 쉐이더와 같습니다.

Mobile / Particles / Multiply
이전에 사용하던 멀티 쉐이더와 동일하며, 다른점은 아래와 같습니다.
- 스무스 파티클 옵션이 없습니다. 
- 알파테스트가 없습니다 
- 칼라마스크가 없습니다.
역시 이전에 사용하던 쉐이더와 동일하되 약간씩 가볍게 제작된 것 외에 차이가 없습니다 . 

Mobile / Particles / VertexLit Blended
이전에 사용하던 버텍스라이트 블렌디드 쉐이더와 동일하며, 다른점은 아래와 같습니다. 
- 알파테스트가 없습니다. 
- 칼라마스크가 없습니다. 
이하 상동

Mobile / Skybox
이전에 사용하던 스카이박스 쉐이더처럼 6면의 텍스쳐를 집어 넣습니다. 그렇지만 단지 Tint Color 만이 제거되어 있습니다. 
사실상 거의 같지만 아주 살짝 가벼운 정도입니다. 대부분, 기능들을 꼭 제거할만큼 효과가 커 보이지 않습니다. 

Mobile / VertexLit
기본적인 버텍스 칼라 쉐이더에서 일부 기능이 삭제된 쉐이더입니다. 
- per material 칼라가 삭제되어 있습니다. 
- 스페큘러가 없습니다. 
- emission이 없습니다. 
그 외는 동일합니다. 


사실상 모바일 쉐이더라고 해서 특별하게 만들어 진 것은 없으며, 단지 기능이 몇 개씩 삭제된 정도입니다. 즉 일반 게임용 쉐이더도 '가벼운 쉐이더 라면' 모바일에서도 대부분 똑같이 돌아가며, 사용에 제약이 없습니다. 
이펙트 쉐이더들도 모바일용으로 컨버팅해 놓도록 해야겠네요... 

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

Blending modes..참고 자료  (0) 2012.06.08
기초적인 조명쉐이더  (0) 2012.06.08
정 반사광  (0) 2012.06.08
unity shader 3가지 방식 정리  (0) 2012.06.01
Mobile/BackgroundQueueAdditive(SL_Shader)  (0) 2012.05.21
Posted by 프리랜서 디자이너