ShaderLab syntax: Color, Material, Lighting

재질과 조명 파라미터는 내장된 정점 조명을 조절하기 위해 사용됩니다. 정점 조명은 각 꼭지점을 위해서 계산되는 기본적인Direct3D/OpenGL 조명 모델입니다. 조명은 켜집니다. 조명은 Material, ColorMaterial 그리고 SeparateSpecular들에 의해 영향을 받습니다.

픽셀당 조명은 보통 사용자 정의 vertex/fragment 프로그램과 함께 구현됩니다. 이것들을 위해서 사용자는 여기에 설명된 어떠한 명령도 사용하지 않고 대신 사용자가 모든 조명, 텍스쳐 그리고 다른 것들을 스스로 하는 곳에서 사용자의 자신만의 vertex and fragment programs를 정의합니다.

꼭지점 컬러링 & 조명은 어떠한 렌더된 기하학을 위해 계산되어진 첫 번째 효과입니다. 그것은 꼭지점 레벨에서 작동하고 텍스쳐가 적용되기 전에 사용된 기본 색상을 계산합니다.

Syntax

최고 레벨 명령은 고정 함수 조명을 사용할지 여부 또는 구성 선택 사항들을 조절합니다. 주요 셋업은Material Block 안에 있고 제사한 내용은 아래와 같습니다. :_Color_ Color: 물체를 단색으로 세팅합니다. 색상은 괄호안의 RGBA 값이거나 또는 사각 괄호안에서 색상 속성 이름입니다. :_Material_ _{_ Material Block _}_:Material block은 물체의 재질적인 소성을 정의하기 위해서 사용됩니다. :_Lighting_ On|Off: Material block에서 정의된 세팅이 어떠한 효과를 가지기 위해서 사용자는 Lighting On 명령을 가지고 조명을 활성화해야 합니다. 조명이 꺼지면 대신 색상이 Color 명령어로 부터 직접적으로 취해집니다. :_SeparateSpecular_ On|Off: 이 명령은 쉐이더의 패스의 끝에 추가될 반사적인 조명을 만들고 반사적인 조명은 텍스쳐링에 영향을 받지 않습니다. Lighting On이 사용될 때의 효과만을 가집니다.

:_ColorMaterial_ AmbientAndDiffuse|재질에서 세팅된 색상 대신에 사용되는 색상을 만듭니다. AmbientAndDiffuse는 재질의 Ambient와Diffuse값을 대체합니다; 발산은 재질의 발산 값을 대체합니다.

Material Block

이것은 재질이 조명에 어떻게 반응하는지에 대한 세팅을 포함합니다. 이러한 속성들 중 어떠한 것도 검정을 기본 세팅으로 하는 경우에 남겨지지 않을 수 있습니다 (즉. 효과가 없습니다).

:_Diffuse_ Color: 확산 색상 컴포넌트. 이것은 물체의 기본 색상입니다. :_Ambient_ Color: 주명의 색상 컴포넌트. 이것은 Render Settings에 세팅된 주변 조명 세팅에 의해 그것이 부딪힐 때 물체가 가지는 색상을 의미합니다.. :_Specular_ Color: 물체의 반적인 하이라이트 색상. :_Shininess_ Number: 조명의 날카로움을 0과 1 사이 값으로 표현. 0에서 사용자는 퍼져있는 조명처럼 보이는 커다란 하이라이트를 얻을 것이고 0에서는 아주 작은 얇은 자국을 얻습니다. :_Emission_ Color: 어떠한 조명에서도 부딪히지 않을 때 물체의 색상.

조명에 부딪히는 물체의 전체 새상은 다음과 같습니다:

_Ambient_ * [[class-RenderSettings|RenderSettings ambient setting]] +
(Light Color * _Diffuse_ + Light Color * _Specular_) + _Emission_

방정식의 조명 부분은 (괄호 안에) 물체에 부딪히는 모든 조명에 대해서 반복됩니다.

일반적으로 사용자는Diffuse와Ambient의 색상을 같도록 유지하기를 원합니다 (모든 내장 Unity 쉐이더들도 이것을 합니다).

Examples

항상 물체를 순수 빨강색으로 헨더합니다:

Shader "Solid Red" {
    SubShader {
        Pass { Color (1,0,0,0) }
    }
} 

물체를 하얀색으로 칠하는 그리고 정점 조명을 적용하는 기본 쉐이더:

Shader "VertexLit White" {
    SubShader {
        Pass {
            Material {
                Diffuse (1,1,1,1)
                Ambient (1,1,1,1)
            }
            Lighting On
        }
    }
} 

Material Inspector에서 visible 속성으로 재질의 색상을 추가하는 확장된 버전입니다:

Shader "VertexLit Simple" {
    Properties {
        _Color ("Main Color", COLOR) = (1,1,1,1)
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
            }
            Lighting On
        }
    }
} 

마지막으로 완전히 깃털이 난 정점 조명 쉐이더 (SetTexture 레퍼런스 페이지를 참고해 주세요):

Shader "VertexLit" {
    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" {}
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
                Shininess [_Shininess]
                Specular [_SpecColor]
                Emission [_Emission]
            }
            Lighting On
            SeparateSpecular On
            SetTexture [_MainTex] {
                Combine texture * primary DOUBLE, texture * primary
            }
        }
    }
} 

역링크