Action disabled: source

Rendering with Replaced Shaders

몇 개의 렌더링 효과는 쉐이더의 다른 세트들과 함께 씬을 렌더링을 필요로 합니다. 예를 들어 좋은 에지 디텍션은 씬normals과 함께 있는 텍스쳐를 필요로 할 것입니다. 그래서 그것은 표면 방향성이 달라지는 곳에서 모서리를 감지할 수 있습니다. 다른 효과들은 씬의 깊이를 가지는 텍스쳐를 필요로 할지도 모릅니다. 이것을 얻기 위해서 모든 물체의 대체된 쉐이더를 가지는 씬을 그리기 위해서 가능합니다.

쉐이더 대체는 Camera.RenderWithShader 또는 Camera.SetReplacementShader을 사용해서 스크립팅으로부터 행해질 수 있습니다. 두 개의 함수 모두 하나의 shaderreplacementTag를 취합니다.

그것은 이것처럼 작동합니다: 카메라는 그것이 보통 하는 것처럼 씬을 그립니다. 물체는 그들의 재질을 여전히 사용하나 결국 사용되는 실제 쉐이더는 바뀝니다:

  • replacementTag가 비어 있다면 그 때 씬의 모든 물체는 주어진 대체 쉐이더로 그려집니다.
  • replacementTag가 비어 있지 않다면 그 때 각각의 물체는 그려집니다:
    • 실제 물체의 쉐이더는 tag value를 위해서 질문되어 집니다.
    • 그 태그가 없다면 물체는 _그려지지 않습니다_.
    • subshader가 발견된 값을 가지는 주어진 태그를 가지는 대체 쉐이더 안에서 발견됩니다. 그러한 서브 쉐이더가 발견되지 않다면 물체는 _그려지지 않습니다_.
    • 서브쉐이더는 물체를 그리기 위해서 사용됩니다.

만약 모든 쉐이더가 예를 들어 "Opaque", "Transparent", "Background", "Overlay"의 값을 가지는 "RenderType" 태그를 가진다면 사용자는RenderType=Solid tag를 가지는 하나의 서브쉐이더를 사용하는 것에 의해 고체 물체를 그리는 대체 쉐이더를 쓸 수 있습니다. 다른 태그 타입은 대체 쉐이더에서 발견되지 않을 것입니다. 그래서 물체는 그려지지 않습니다. 또는 사용자는 다른 "RenderType" 태그 값을 위해서 몇몇의 서브 쉐이더를 쓸 수 있습니다. 부수적으로 모든 Unity의 쉐이더는 "RenderType" 태그 세트를 가집니다..

Shader replacement tags in built-in Unity shaders

모든 내장된 Unity 쉐이더는 대체 쉐이더와 함께 그릴 때 사용될 수 있는 "RenderType" 태그 세트를 가집니다. 태그 값은 다음과 같습니다:

  • Opaque: 대부분의 쉐이더 (Normal, Self Illuminated, Reflective terrain shaders).
  • Transparent: 대부분의 반투명 쉐이더 (Transparent, Particle, Font, terrain 첨가하는 패스 쉐이더).
  • TransparentCutout: 마스크된 투명 쉐이더 (Transparent Cutout, 2 번의 패스 초목 쉐이더).
  • Background: Skybox 쉐이더.
  • Overlay: GUITexture, Halo, Flare shaders.
  • TreeOpaque: terrain engine tree bark.
  • TreeTransparentCutout: terrain engine tree leaves.
  • TreeBillboard: terrain engine billboarded trees.
  • Grass: terrain engine grass.
  • GrassBillboard: terrain engine billboarded grass.

Built-in scene depth/normals texture

사용자가 사용자의 몇몇의 효과에서 필요하다면 카메라는 깊이 또는depth+normals 텍스쳐를 그리기 위한 내장된 능력을 가집니다 . Camera Depth Texture 페이지를 살펴보시기 바랍니다.

역링크