투명도 및 알파 테스트는 alpha 및 alphatest 지시문에 의해 제어됩니다. 투명도는 일반적으로 기존의 알파 블렌딩(오브젝트의 페이드 아웃에 사용됨)과 물리적으로 더 사실적인 ‘미리 곱해진 블렌딩’(반투명 표면이 적절한 스페큘러 반사를 유지할 수 있음)의 두 종류로 나뉩니다. 반투명도를 활성화하면 생성된 표면 셰이더 코드에 블렌딩 커맨드가 포함되며, 알파 컷아웃을 활성화하면 주어진 변수에 따라 생성된 픽셀 셰이더에서 프래그먼트를 폐기합니다.
alpha 또는 alpha:auto - 단순 조명 함수용으로 페이드-투명도(alpha:fade와 동일)를, 물리 기반 조명 함수용으로 미리 곱해진 투명도(alpha:premul과 동일)를 선택합니다.alpha:blend - 알파 블렌딩을 활성화합니다.alpha:fade - 전통적인 페이드-투명도를 사용합니다.alpha:premul - 미리 곱해진 알파 투명도를 사용합니다.alphatest:VariableName - 알파 컷아웃 투명도를 활성화합니다. 컷오프 값은 VariableName이라는 플로트 변수에 있습니다. 또한 addshadow 지시문을 사용하면 적절한 섀도우 캐스터 패스를 생성할 수 있습니다.keepalpha - 디폴트로 불투명 표면 셰이더는 출력 구조의 Alpha 안의 출력이 무엇이건, 또는 조명 함수가 무엇을 반환하건 간에 1.0(흰색)을 알파 채널에 씁니다. 이 옵션을 사용하면 불투명 표면 셰이더에도 조명 함수의 알파 값을 유지할 수 있습니다.decal:add - 추가 데칼 셰이더(예: 터레인 AddPass)입니다. 이 셰이더는 다른 표면 위에 놓이는 오브젝트에 사용하기 위한 것으로, 추가 블렌딩을 사용합니다. 표면 셰이더 예시를 참고하십시오.decal:blend - 반투명 데칼 셰이더입니다. 이 셰이더는 다른 표면 위에 놓이는 오브젝트에 사용하기 위한 것으로, 알파 블렌딩을 사용합니다. 표면 셰이더 예시를 참고하십시오.커스텀 수정 함수는 인입되는 버텍스 데이터를 변경 또는 계산하거나, 계산된 최종 프래그먼트 컬러를 변경할 때 사용할 수 있습니다.
vertex:VertexFunction - 커스텀 버텍스 수정 함수입니다. 이 함수는 생성된 버텍스 셰이더가 시작될 때 호출되며 버텍스당 데이터를 수정하거나 계산할 수 있습니다. 표면 셰이더 예시를 참조하십시오.finalcolor:ColorFunction - 커스텀 최종 컬러 수정 함수입니다. 표면 셰이더 예시를 참조하십시오.finalgbuffer:ColorFunction - G버퍼 콘텐츠를 변경하기 위한 커스텀 디퍼드 경로입니다.섀도우 및 테셀레이션 - 추가 지시자를 통해 섀도우 및 테셀레이션을 처리하는 방법을 제어할 수 있습니다.
addshadow - 섀도우 캐스터 패스를 생성합니다. 주로 커스텀 버텍스 수정에 사용되며, 그림자 드리우기 과정에도 모든 순차적 버텍스 애니메이션이 반영되도록 합니다. 때로는 셰이더가 폴백에서 섀도우 캐스터 패스를 사용할 수 있기 때문에 별도로 섀도우 처리가 전혀 필요하지 않은 경우도 있습니다.fullforwardshadows - 모든 광원 섀도우 유형을 포워드 렌더링 경로에서 지원합니다. 기본적으로 셰이더는 포워드 렌더링에서 하나의 방향 광원으로부터 만들어진 섀도우만을 지원합니다(이는 내부 셰이더 배리언트 개수를 줄이기 위함입니다). 포워드 렌더링에서 점 또는 스폿 광원 섀도우가 필요하다면 이 지시문을 사용하십시오.tessellate:TessFunction - DX11 GPU 테셀레이션을 사용합니다. 이 함수는 테셀레이션 팩터를 계산합니다. 자세한 내용은 표면 셰이더 테셀레이션을 참조하십시오.코드 생성 옵션 - 기본적으로는 생성된 표면 셰이더 코드가 가능한 모든 조명/섀도우/라이트맵 시나리오를 처리하려고 합니다. 하지만 경우에 따라 그중 일부는 불필요한데, 이는 생성된 코드를 조정하여 건너뛸 수 있습니다. 이렇게 하면 셰이더 크기를 줄여 로드 속도를 높일 수 있습니다.
exclude_path:deferred, exclude_path:forward - 주어진 렌더링 경로(각각 디퍼드 셰이딩, 포워드)에 대한 패스를 생성하지 않습니다.noshadow - 이 셰이더에서 모든 그림자 받기 지원을 비활성화합니다.noambient - 주변광 또는 라이트 프로브를 적용하지 않습니다.novertexlights - 포워드 렌더링에서 모든 라이트 프로브 또는 버텍스당 광원을 적용하지 않습니다.nolightmap - 이 셰이더에서 모든 라이트매핑 지원을 비활성화합니다.nodynlightmap - 이 셰이더에서 런타임 동적 전역 조명 지원을 비활성화합니다.nodirlightmap - 이 셰이더에서 모든 직접광 라이트맵 지원을 비활성화합니다.nofog - 모든 내장형 안개 지원을 비활성화합니다.nometa - ‘메타’ 패스를 생성하지 않습니다(표면 정보를 추출하기 위해 라이트매핑 및 동적 전역 조명에서 사용함).noforwardadd - 포워드 렌더링 추가 패스를 비활성화합니다. 이렇게 하면 셰이더는 하나의 전체 방향 광원을 지원하며, 다른 모든 광원은 버텍스/SH당으로 계산됩니다. 셰이더 크기 또한 작아집니다.nolppv - 이 셰이더에서 라이트 프로브 프록시 영역 지원을 비활성화합니다.noshadowmask - 이 셰이더에 대한 섀도우 마스크 지원을 비활성화합니다(섀도우 마스크 및 디스턴스 섀도우 마스크 모두).기타 옵션
softvegetation - 소프트 베지테이션이 켜져 있을 경우에만 표면 셰이더가 렌더링되도록 합니다.interpolateview - 픽셀 셰이더가 아닌 버텍스 셰이더상에서 뷰 방향을 계산하고 보간합니다. 이렇게 하면 픽셀 셰이더 속도가 빨라지지만 텍스처 인터폴레이터를 하나 더 사용하게 됩니다.halfasview - 뷰-방향 대신 하프-디렉션 벡터를 조명 함수에 전달합니다. 하프-디렉션은 버텍스마다 계산 및 정규화됩니다. 속도가 더 빠르지만 완전히 정확하지는 않습니다.approxview - Unity 5.0에서 제거되었습니다. 대신 interpolateview를 사용하십시오.dualforward - 포워드 렌더링 경로에서 듀얼 라이트맵을 사용합니다.dithercrossfade - 표면 셰이더가 디더링 효과를 지원하도록 만듭니다. 그러면 이 셰이더를 크로스 페이드 전환 모드용으로 설정된 LOD Group 컴포넌트를 사용하는 게임 오브젝트에 적용할 수 있습니다.위의 옵션을 사용했을 때 어떤 점이 정확히 다른지 알아보려면 셰이더 인스펙터의 ‘생성된 코드 보기’ 버튼을 사용하면 됩니다.