ShaderForge에서 자체 환경 맵을 얻고 IBL 수행
2662 단어 shaderforgeShaderShaderLabUnity
추가
본 기사의 수법은 Skybox 이미지의 취득에 한정한다. Scene의 Environment Lighting 설정을 반영한다면, 다음 기사의 코드를 Code
노드에 기술해 환경광을 취득하는 것이 좋다.
요지
ShaderForge는 셰이더를 구축하는 데 반복 속도를 높일 수있는 매우 중요한 도구입니다. 하지만 디폴트로 준비되어 있다 Blinn-Phong
이나 PBL
이 기사에서는 그 중 하나인 IBL의 취득을 예로 들어, PBL
라이팅의 Specular
항을 사용하지 않고 IBL을 실현한다.
환경
ShaderForge는 셰이더를 구축하는 데 반복 속도를 높일 수있는 매우 중요한 도구입니다. 하지만 디폴트로 준비되어 있다
Blinn-Phong
이나 PBL
이 기사에서는 그 중 하나인 IBL의 취득을 예로 들어, PBL
라이팅의 Specular
항을 사용하지 않고 IBL을 실현한다.환경
ShaderForge의 PBL 조명에서 IBL (Image based lighting)
IBL, 즉 금속과 같은 주변 환경의 비추기를 실현하는 라이팅을 하기 위해서는 ShaderForge 가 준비한다 PBR
이 예가 그림 1에 나와 있습니다. 미리보기 이미지와 같이 Unity Default-Skybox
가 표면에 비치고 있음을 알 수 있습니다.
하지만 ShaderForge의 PBL
라이팅은 Unity의 Standard Shader의 라이팅 계산 매크로에 근거하고 있어, 또한, 노드도 없기 때문에 IBL의 취득은 완전하게 은폐되어 IBL를 독자적인 라이팅에 반영시킬 수 없다.
그림 1 : ShaderForge 기본 PBL
조명을 사용하여 IBL을 반영하는 예제. 불행히도 IBL은 내부에 숨겨져 있습니다.
Unity 환경 맵 획득 매크로를 사용한 IBL
Unity 에서는 Vertex and fragment shader examples 의 Environment reflection using world-space normals 절에 나타나 있는 바와 같이, 환경 맵과 법선 벡터를 입력에 UNITY_SAMPLE_TEXCUBE
를 매크로를 이용하는 것으로 환경광을 취득할 수 있다. 다행히 환경 맵은 Global 의 프로퍼티이며, 법선 벡터도 노드로 취득할 수 있기 (위해)때문에 Code
노드를 사용하는 것으로 용이하게 실현 가능하다. 이 예는 그림 2에 나와 있습니다.
그림 2. Code
노드에 IBL 획득 매크로를 작성하여 환경 빛을 그대로 표시하는 예.
환경 맵의 bokeh 상태를 가미한다
전절에서 든 셰이더는 하나 신경이 쓰이는 점이 보인다. 그것은 환경 맵이 너무 선명하게 선명하게 비치고 있는 것이다. 가능한 경우 그림 1의 Glossiness
속성과 같은 bokeh 방법을 제어하는 매개 변수를 원합니다.
Unity의 환경 맵은 LOD를 이용하여 몇 단계로 보카한 환경 맵을 취득할 수 있다. 그 bokeh의 단계 수는 UnityStandardConfig.cginc
에 UNITY_SPECCUBE_LOD_STEPS
로 정의되기 때문에 이용한다. 구현은 그림 3에 나와 있습니다.
그림 3 : LOD를 사용하여 보컬 된 환경 맵을 얻고 적용한 예.
사이고에게
이걸로 깨끗하게 IBL을 취득했다고 할 수 있을 것이다. 환경의 반영은 현대적인 렌더링에 필수적인 요소 중 하나이기 때문에 다양한 응용 범위가 생각된다. 정직 ShaderForge 에 노드로서 구현해 주었으면 좋겠지만, Forum 를 보는 한, Unity 의 흐릿한 사양에는 추종할 생각은 그다지 없는 것 같다.
Reference
이 문제에 관하여(ShaderForge에서 자체 환경 맵을 얻고 IBL 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Santarh/items/47b5faba6c6dd9e38c44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 에서는 Vertex and fragment shader examples 의 Environment reflection using world-space normals 절에 나타나 있는 바와 같이, 환경 맵과 법선 벡터를 입력에
UNITY_SAMPLE_TEXCUBE
를 매크로를 이용하는 것으로 환경광을 취득할 수 있다. 다행히 환경 맵은 Global 의 프로퍼티이며, 법선 벡터도 노드로 취득할 수 있기 (위해)때문에 Code
노드를 사용하는 것으로 용이하게 실현 가능하다. 이 예는 그림 2에 나와 있습니다.그림 2.
Code
노드에 IBL 획득 매크로를 작성하여 환경 빛을 그대로 표시하는 예.환경 맵의 bokeh 상태를 가미한다
전절에서 든 셰이더는 하나 신경이 쓰이는 점이 보인다. 그것은 환경 맵이 너무 선명하게 선명하게 비치고 있는 것이다. 가능한 경우 그림 1의 Glossiness
속성과 같은 bokeh 방법을 제어하는 매개 변수를 원합니다.
Unity의 환경 맵은 LOD를 이용하여 몇 단계로 보카한 환경 맵을 취득할 수 있다. 그 bokeh의 단계 수는 UnityStandardConfig.cginc
에 UNITY_SPECCUBE_LOD_STEPS
로 정의되기 때문에 이용한다. 구현은 그림 3에 나와 있습니다.
그림 3 : LOD를 사용하여 보컬 된 환경 맵을 얻고 적용한 예.
사이고에게
이걸로 깨끗하게 IBL을 취득했다고 할 수 있을 것이다. 환경의 반영은 현대적인 렌더링에 필수적인 요소 중 하나이기 때문에 다양한 응용 범위가 생각된다. 정직 ShaderForge 에 노드로서 구현해 주었으면 좋겠지만, Forum 를 보는 한, Unity 의 흐릿한 사양에는 추종할 생각은 그다지 없는 것 같다.
Reference
이 문제에 관하여(ShaderForge에서 자체 환경 맵을 얻고 IBL 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Santarh/items/47b5faba6c6dd9e38c44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이걸로 깨끗하게 IBL을 취득했다고 할 수 있을 것이다. 환경의 반영은 현대적인 렌더링에 필수적인 요소 중 하나이기 때문에 다양한 응용 범위가 생각된다. 정직 ShaderForge 에 노드로서 구현해 주었으면 좋겠지만, Forum 를 보는 한, Unity 의 흐릿한 사양에는 추종할 생각은 그다지 없는 것 같다.
Reference
이 문제에 관하여(ShaderForge에서 자체 환경 맵을 얻고 IBL 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Santarh/items/47b5faba6c6dd9e38c44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)