ShaderForge의 Grab Pass Texture가 iOS 환경에서 상하 반전되는 문제를 해결합니다.

요지



Unity에서 굴절 표현 등을 실시하기 위해서는, 직전까지의 묘화 내용을 취득하는 Grab Pass 1라는 기능이 이용된다. Grab Pass 로 얻을 수 있는 Grab Texture 는 플랫폼에 의해 좌표계가 다르다 2 때문에, 직접 Shader 를 기술하는 경우는 ComputeGrabScreenPos 매크로를 사용해 좌표를 얻는다. 그러나 ShaderForge의 Screen Position 노드 3ComputeGrabScreenPos를 사용하지 않으며 iOS 환경 등에서 상하가 반전하는 문제가 있습니다.
이 기사에서는 ShaderForge의 노드 편집기에서 ComputeGrabScreenPos를 사용하여 Grab Texture를 올바르게 취득한다.

환경


  • Unity 2017.2.0f3
  • ShaderForge v1.38

  • 구현





    이상!

    해설



    이 문제를 해결하는 가장 간단한 방법은 출력 된 셰이더 코드에 포함 된 ComputeScreenPosComputeGrabScreenPos로 바꾸는 것입니다. 그러나 이 간단한 방법은 셰이더 파일을 ShaderForge로 편집했지만 마지막으로 대체 내용은 모두 날아 버린다. 또 ComputeGrabScreenPos 매크로의 내용을 노드 에디터상에서 재구현할 수도 있지만, 향후의 Unity 의 사양 변경으로 어느새 버그해 버릴 우려가 있다.
    거기서 이 기사의 수법은 폴리곤의 월드 좌표를 이용해 Projection 좌표를 Fragment Shader 로 재계산하는 것으로 ComputeGrabScreenPos 매크로를 사용 가능하게 해, 향후의 Unity 의 사양 변경에도 추종 가능으로 하고 있다.

    각주





    htps : // / cs. 글쎄, ty3d. 코 m / 마누아 l / SL-G 등 b 파 s. HTML 

    htps : // / cs. 글쎄, ty3d. 코 m/마누아 l/SL-Pぁt후 rmぢふぇ렌세 s. HTML 

    h tp // 아세기 k도. 이 m / 샤로 r 후 r 게 / 때문에 s /? 음 rch = Sc Reenpo s 

    좋은 웹페이지 즐겨찾기