ShaderLab: GrabPass
ShaderLab: Fallback

ShaderLab: SubShader 태그

Subshader는 태그를 사용하여 언제 어떻게 렌더링 엔진에서 렌더링할지 나타냅니다.

구문

Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

태그 TagName1 의 값으로 Value1, 태그 TagName2 의 값으로 Value2 를 지정합니다. 태그는 원하는만큼 지정할 수 있습니다.

상세정보

태그는 기본적으로 Key-Value 페어입니다. SubShader에서 태그는 SubShader 순서 및 기타 파라미터를 판정하는데 사용합니다. 다음 태그는 Unity에 의해 인식되어 Pass 안이 아니라 반드시 SubShader 섹션 안으로 하는 것에 유의하십시오.

In addition to built-in tags recognized by Unity, you can use your own tags and query them using Material.GetTag function.

렌더링 순서 - Queue 태그

Queue 를 사용하여 오브젝트를 그리는 순서를 결정 할 수 있습니다. 쉐이더는 오브젝트가 속한 렌더링 대기열을 결정하고 이에 따라 하나의 투명 쉐이더가 불투명 오브젝트를 그린 후에 그리는 등을 합니다.

네 개의 정의된 렌더링 큐가 있지만, 미리 정의된 큐 사이에 추가할 수 있습니다. 정의된 큐는 :

  • Background- 이 렌더링 큐는 다른 것들보다 먼저 렌더링됩니다. 정말 배경으로 있어야 할 것들을 위해서 사용합니다.
  • Geometry (default) - 이 큐는 대부분의 오브젝트에 사용됩니다. 불투명 오브젝트가 이 큐를 사용합니다.
  • AlphaTest - 알파 테스트 지오메트리에 이 큐를 사용합니다. 모든 불투명 오브젝트 뒤에 그리는 편이 효율적이므로 Geometry와는 별도의 큐로써 존재합니다.
  • Transparent - 이 렌더 큐는 _Geometry_와 AlphaTest 후에 뒤부터 순서대로(back-to-front) 렌더링됩니다. 알파 블렌딩하는 것 (즉, 깊이 버퍼에 기록하지 않는 쉐이더)은 모두 여기에 있어야 합니다(유리, 파티클 효과).
  • Overlay - 이 렌더 큐는 오버레이 효과를 위해 사용합니다. 마지막으로 렌더링하는 것은 여기에 있어야 합니다 (예: 렌즈 플레어 등).
Shader "Transparent Queue Example"
{
     SubShader
     {
        Tags { "Queue" = "Transparent" }
        Pass
        {
            // rest of the shader body...
        }
    }
}

_ transparent 큐에서 렌더링하는 방법의 예_

특별한 용도를 위해 큐 사이에 큐를 둘 수 있습니다. 내부에서 각 큐는 정수 인덱스에 의해 표현되며; Background는 1000, Geometry는 2000, AlphaTest는 2450, Transparent는 3000 and Overlay는 4000. 쉐이더는 다음과 같이 큐를 사용합니다:

Tags { "Queue" = "Geometry+1" }

이 오브젝트는 모든 불투명 오브젝트가 렌더링된 후에 렌더링되지만, 렌더링 큐가 2001(Geometry에 1을 가산)을 이기에 투명 오브젝트보다 먼저 렌더링됩니다. 이것은 다른 오브젝트의 그룹 전에 그리기를 시키고 싶은 경우에 유용합니다. 예를 들어, 대부분의 경우에 투명한 물은 불투명한 오브젝트 후, 투명 오브젝트 전에 렌더링되어야 합니다.

Queues up to 2500 (“Geometry+500”) are consided “opaque” and optimize the drawing order of the objects for best performance. Higher rendering queues are considered for “transparent objects” and sort objects by distance, starting rendering from the furthest ones and ending with the closest ones. Skyboxes are drawn in between all opaque and all transparent objects.

RenderType 태그

RenderType태그는 쉐이더를 미리 정의된 몇 가지 그룹으로 분류합니다. 예를 들어, 불투명한 쉐이더 또는 알파 테스트 쉐이더 등등 처럼 말입니다. 이것은 Shader Replacement에 의해 사용되며, 많은 경우 카메라의 깊이 텍스처를 생성하는 데 사용합니다.

DisableBatching tag

Some shaders (mostly ones that do object-space vertex deformations) do not work when Draw Call Batching is used – that’s because batching transforms all geometry into world space, so “object space” is lost.

DisableBatching tag can be used to incidate that. There are three possible values: “True” (always disables batching for this shader), “False” (does not disable batching; this is default) and “LODFading” (disable batching when LOD fading is active; mostly used on trees).

ForceNoShadowCasting 태그

만약 ForceNoShadowCasting태그가 사용되고 있으며, 값이 “True”인 경우, 이 서브 쉐이더를 사용하는 오브젝트는 그림자를 투영하지 않습니다. 이것은 투명 오브젝트에 shader replacement를 사용하는 경우나, 다른 서브 쉐이더에서 그림자 패스를 계승하지 않으려는 경우에 가장 유용합니다.

IgnoreProjector 태그

만약 IgnoreProjector태그가 사용되어, 값이 “True”인 경우, 이 쉐이더를 사용하는 오브젝트는 Projectors에 의해 영향을 받지 않습니다. 이는 반투명 오브젝트에 유용한데, 이것은 Projectors가 영향을 주기 위한 좋은 방법이 없기 때문에

CanUseSpriteAtlas tag

Set CanUseSpriteAtlas tag to “False” if the shader is meant for sprites, and will not work when they are packed into atlases (see Sprite Packer).

PreviewType 태그

PreviewType indicates how the material inspector preview should display the material. By default materials are displayed as spheres, but PreviewType can also be set to “Plane” (will display as 2D) or “Skybox” (will display as skybox).

관련 항목

패스에 태그를 할당할 수 있습니다, ​​Pass Tags를 참조하십시오.

ShaderLab: GrabPass
ShaderLab: Fallback