애니메이터

[Shader] Vertex and fragment Shader..."Pass" 본문

Game Engine/Unity3D

[Shader] Vertex and fragment Shader..."Pass"

욤마핫 2015. 4. 2. 19:35

Pass 구문은 vertex shader 및 fragment shader 에 쓰이는 구문으로  메쉬 오브젝트를 한번 랜더링 하게 해준다.

 

Pass

{

[Name and Tags]    [RenderSetup]    [TextureSetup]

}

 

Name and Tags

 Pass의 이름을 정의 하고 Tags의 갯수를 정의하여 Pass가 랜더링 엔진에서 인지할 수 있게 해준다.

 

RenderSetup

 Material {Material Block}

Diiffuse

Ambient

Specular

Shininess

Emission

 Lighting On | Off

 Cull Back | Front | Off

 ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)

 ZWrite On | Off

 Fog {Fog Block}

 AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)

AlphaTest off : Render all pixels or

AlphaTest comparison AlphaValue

AlphaValue is number between 0 and 1

 Blend SourceBlendMode DestBlendMode

Most common blend types

Blend SrcAlpha OneMinusSrcAlpha    : Alpha blending

Blend One One                                : Additive

Blend OneMinusDstColor One            : Soft Additive

Blend DstColor Zero                         : Multiplicative

Blend DstColor SrcColor                   : 2x Multiplicative

 

 Color

 ColorMask RGB | A | O | any combination of R, G, B, A

 Offset OffsetFactor, OffestUnits

 SeparateSpecular On | Off

 ColorMaterial AmbiendtAndDiffuse | Emission

 

 

TextureSetup

 랜더 셋업이 끝나고 나면 몇개의 텍스쳐를 쓰고 어떻게 combine 할것인지를 SetTexture 명령어를 통해서 정의한다.

 SetTextre texture property {    [combine options]    }

combine options

combine src1 * src2

combine src1 + src2

combine src1 - src2

combine src1 lerp(src2) src3

combine src1 * src2 + src3

 

srcprevious, constant, primary or texture 가 될 수 있다.

previous 는 이전 SetTexture에서 지정된 값이다.

primary는 버텍스 칼라나 라이팅 계산에서 만들어진 칼라값이다.

texture는 Texture 에 쓰여진 바로 그 텍스쳐 값이다.

constant는 ConstantColor 에 의해서 정의된 칼라 값이다.