Action disabled: source

ShaderLab syntax: GrabPass

GrabPass은 특별한 패스 타입입니다 – 그것은 물체가 하나의 텍스쳐로 그려질 스크린의 내용물을 차지합니다. 이런 텍쳐는 좀 더 발전된 이미지 기반의 효과를 만들기 위해 일련의 하위 패스들에서 사용될 수 있습니다.

Syntax

GrabPass는 subshader안에 속합니다. 그것은 두 개의 형식을 취합니다:

  • GrabPass { } 는 텍스쳐로 현재의 스크린 내용을 보낼 것입니다. 텍스쳐는 _GrabTexture_에 의해 앞으로의 패스에서 접근될 수 있습니다. 주의: grab pass의 이 형식은 그것을 사용하는 각 물체를 위해 비용이 많이 드는 스크린 grabbing 오퍼레이션을 할 것입니다!
  • GrabPass { "TextureName" }은 텍스쳐로 스크린 내용을 보낼것이나 주어진 텍스쳐 이름을 사용하는 첫 번째 물체을 위해 프레임당 한 번만 작동할 것입니다. 텍스쳐는 주어진 텍스쳐 이름에 의해서 앞으로의 패스에서 접근될 수 있습니다. 이것은 사용자가 씬에서 grab pass를 사용하는 다수의 물체를 가질 때 더욱 성능이 좋습니다.

게다가 GrabPass은 NameTags 명령을 사용할 수 있습니다.

Example

이것이 이전에 그려졌던 색상을 바꾸는 비용이 많이 드는 방법을 보여줍니다:

Shader "GrabPassInvert" {
    SubShader {
        // Draw ourselves after all opaque geometry
        Tags { "Queue" = "Transparent" }
 
        // Grab the screen behind the object into _GrabTexture
        GrabPass { }
 
        // Render the object with the texture generated above, and invert it's colors
        Pass {
            SetTexture [_GrabTexture] { combine one-texture }
        }
    }
} 

이 쉐이더는 두 가지의 패스를 가집니다: 첫 번째 패스는 렌더링이 될 때 물체의 뒤에 무엇이 있던지 잡아내고 그 후에 두 번째 패스에서 그것을 적용합니다. 물론 지금은 같은 효과가 역blend mode을 사용해서 훨씬 저렴하게 얻어질 수 있습니다.

See Also

역링크