Version: 2023.1
언어: 한국어
ShaderLab: 레거시 안개
ShaderLab: 레거시 알파 테스트

ShaderLab: 레거시 조명

참고: 이 페이지의 ShaderLab 기능은 레거시이며, 이전 버전과의 호환성 목적으로만 문서화되었습니다. 셰이더 소스 파일에 HLSL 코드가 포함된 경우, Unity는 이러한 커맨드를 완전히 무시합니다. 셰이더 소스 파일에 HLSL 코드가 포함되지 않은 경우, Unity는 임포트 시 이러한 커맨드를 일반 셰이더 프로그램으로 컴파일합니다.

렌더 파이프라인 호환성

기능 이름 빌트인 렌더 파이프라인 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 SRP
레거시 조명 지원 지원 안 함 지원 안 함 지원 안 함

개요

머티리얼 및 조명 파라미터는 빌트인 버텍스 조명을 제어하는 데 사용됩니다. 버텍스 조명은 각 버텍스에 대해 계산되는 스탠다드 Direct3D/OpenGL 조명 모델입니다. Lighting on 을 선택하면 켜집니다. 조명은 Material 블록, ColorMaterialSeparateSpecular 커맨드에 영향을 받습니다.

버텍스 컬러링 및 조명은 렌더링된 지오메트리에 대해 가장 먼저 계산하는 효과입니다. 버텍스 레벨에서 작동하고, 텍스처 적용 전에 사용되는 베이스 컬러를 계산합니다.

구문

최상위 커맨드는 고정 함수 조명 사용 여부와 일부 설정 옵션을 제어합니다. 메인 설정은 아래에서 자세히 설명하는 Material Block에 있습니다.

컬러

    컬러(Color) color

오브젝트를 솔리드 컬러로 설정합니다. 컬러는 괄호 안에 있는 RGBA 값 4개이거나 대괄호 안에 있는 컬러 프로퍼티 이름입니다.

머티리얼(Material)

    Material {Material Block}

머티리얼 블록은 오브젝트의 머티리얼 프로퍼티를 정의하는 데 사용됩니다.

조명(Lighting)

    Lighting On | Off

머티리얼 블록에 정의된 설정이 효과가 있으려면 Lighting On 커맨드를 사용하여 조명을 활성화해야 합니다. 조명이 꺼진 경우 Color 커맨드의 컬러가 직접 사용됩니다.

SeparateSpecular

    SeparateSpecular On | Off

커맨드를 실행하면 스페큘러 조명이 셰이더 패스 끝에 추가되므로 스페큘러 조명이 텍스처링에 영향을 받지 않습니다. Lighting On 을 사용하는 경우에만 영향이 있습니다.

ColorMaterial

    ColorMaterial AmbientAndDiffuse | Emission

머티리얼에 설정된 컬러 대신 버텍스당 컬러가 사용됩니다. AmbientAndDiffuse 는 머티리얼의 앰비언트 및 디퓨즈 값을 바꾸고 Emission 은 머티리얼의 이미션 값을 바꿉니다.

머티리얼 블록(Material Block)

머티리얼이 광원에 반응하는 방법에 대한 설정을 포함합니다. 다음 프로퍼티는 생략할 수 있으며, 그러면 검정색(즉 효과 없음)이 디폴트가 됩니다.

Diffuse color: 디퓨즈 컬러 컴포넌트로, 오브젝트의 베이스 컬러입니다.

Ambient color: 앰비언트 컬러 컴포넌트입니다. 라이팅 창에서 설정한 주변광과 닿으면 오브젝트에 이 컬러가 표시됩니다.

Specular color: 오브젝트의 스페큘러 하이라이트 컬러입니다.

Shininess number: 하이라이트의 선명도로, 0과 1 사이입니다. 0에서는 디퓨즈 조명과 매우 비슷해 보이는 커다란 하이라이트가 생기고 1에서는 작은 반점이 생깁니다.

Emission color: 오브젝트에 광원이 닿지 않을 때 오브젝트에 표시되는 컬러입니다.

오브젝트에 닿는 광원의 전체 컬러는 다음과 같습니다.

Ambient * 라이팅 창의 앰비언트 강도 설정 + (Light Color * Diffuse + Light Color * Specular) + Emission

등식의(괄호 안에 있는) 광원 부분은 오브젝트에 닿는 모든 광원에 대해 반복됩니다.

일반적으로 디퓨즈 및 앰비언트 컬러를 동일하게 유지하는 것이 좋습니다(모든 빌트인 셰이더에서 이렇게 합니다).

예제

오브젝트를 항상 순수 빨간색으로 렌더링합니다.

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
        }
    }
}

다음은 머티리얼 컬러를 머티리얼 인스펙터에 표시되는 프로퍼티로 추가하는 확장 버전입니다.

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
            }
        }
    }
}
ShaderLab: 레거시 안개
ShaderLab: 레거시 알파 테스트