커스텀 아웃라인 쉐이더 그래프를 작성하고 적용하려고하는데 어느 부분에 적용을 시켜야 할까요??
안녕하세요!
답변을 준비하는 시간이 예상보다 많이 늦었습니다.
양해 부탁드립니다.
URP 환경에서 외곽선을 그리는 기법을 구현하는 방법이 매우 복잡하여, 게시글의 답변으로는 모두 담지 못한다고 저희는 판단했습니다.
그래서 저희는 메뉴얼에 문서로 정리하여 답변을 드립니다.
아래의 링크에서 이 기법을 구현하는 모든 과정을 보실 수 있습니다.
또한 이 기법을 위해 제작된 쉐이더와 재질을 패키지 형태로 다운로드 받을 수 있습니다. (다운로드 링크는 메뉴얼에 포함되어 있습니다.)
URP 2D Lit 및 URP Unlit 환경을 위한 쉐이더들을 제작해서 제공하니 확인 부탁드립니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_URPOutlineShader.html
외곽선을 그리는 기법은 기본적으로 "멀티 패스"를 이용해야하는데, 기본 렌더 파이프라인과 달리 URP의 특징 및 제한점에 의해서 멀티 패스 렌더링이 쉽지 않았습니다.
실제로, 렌더링 품질에도 한계가 있었는데 위의 문서에서 자세한 설명을 보실 수 있습니다.
꼭 외곽선 뿐만 아니더라도 다양한 렌더링 기법을 제작하시는데 저희의 설명이 도움이 되기를 바랍니다.
참고로, 만약 URP가 아닌 기본 렌더 파이프라인에서 외곽선을 구현한다면 메뉴얼의 설명과는 다른 방식으로 구현해야합니다.
또한, 저희는 "Post Processing"을 배제하고 구현을 했는데, "Post Processing"을 이용한다면 또다른 방식으로 구현이 가능할 것입니다.
메뉴얼 문서를 보시고 더 궁금한 점이 있거나 문제가 해결되지 않는다면 댓글을 남겨주세요!
감사합니다.
Eng)
We've added a manual that explains how to render a character's outline in a URP environment.
https://rainyrizzle.github.io/en/AdvancedManual/AD_URPOutlineShader.html
감사합니다!
요청에 따라 아웃라인 쉐이더 작성해보고 있는 중에, 시간이 너무 많이 지체되어 먼저 경과를 알려드리고자 글을 작성했습니다.
일단 다음과 같은 쉐이더의 초안을 작성하는 것에는 성공했습니다.
다만, 아웃라인 렌더링을 URP에서 구현하기 위해서는 단순히 쉐이더를 교체하는 것 외에도 고려해야할 점이 많았습니다.
이 기능을 이용하기 위해서는 "멀티 패스 렌더링"을 이용해야했으며, 이로 인한 성능 문제가 야기되어 프로파일링을 같이 진행하고 있습니다.
또한 멀티 패스를 만들기 위해 URP 쉐이더를 쉐이더 그래프가 아닌 직접 코드로 작성해야했는데, URP를 포함한 유니티의 SRP의 버전별 호환성이 좋지 않은 문제도 고려해야했습니다.
클리핑 메시, 반투명 메시, 다른 캐릭터와의 배치 등의 다양한 상황을 더 검토할 예정입니다.
위의 내용들을 모두 정리하여 답변을 드리고자 합니다.
영업일 기준 1~2일 정도 더 소요될 수 있으니 조금 더 기다려주시면 정말 감사하겠습니다.
빠르게 답변을 드리지 못한 점 양해 부탁드립니다.
요청합니다!
커스텀 쉐이더를 작성하셨다면, 현재 프로젝트의 "Color Space"와 메시의 렌더링 특성(블렌딩 / 클리핑)에 맞게 적용하면 됩니다.
각각의 항목에 대한 설명은 다음과 같습니다.
1. Color Space : Gamma / Linear
프로젝트의 Color Space 설정을 의미합니다.
프로젝트의 기본 설정은 Gamma이므로, Gamma에 해당하는 쉐이더 에셋들만 교체해주면 됩니다.
Color Space에 대한 추가적인 설명은 다음의 페이지에서 보실 수 있습니다.
- 프로젝트 및 이미지의 Color Space에 대한 설명 : https://rainyrizzle.github.io/kr/AdvancedManual/AD_LinearSpace.html
- Bake시 Color Space 옵션에 대한 설명 : https://rainyrizzle.github.io/kr/AdvancedManual/AD_BakeDialog.html
2. 메시의 블렌딩
메시의 블렌딩 옵션에 따라서 각각 다른 쉐이더 에셋을 지정해야합니다.
기본적으로는 "Alpha Blend" 방식이므로, 이 항목에만 쉐이더 에셋을 지정해도 대부분의 메시에 적용이 됩니다.
(URP에서는 Soft Additive는 지원하지 않으므로 Additive와 동일한 쉐이더를 지정하면 됩니다.)
3. Basic / Clipped Rendering
메시가 클리핑(Clipping)되었다면, 다른 쉐이더를 작성해야합니다.
클리핑 기능이 있는 쉐이더를 작성한 후, Clipped Rendering 항목에 쉐이더 에셋을 지정해주세요.
4. Alpha Mask
이 특수한 쉐이더는 Color Space나 블렌딩에 관계없이 동작합니다.
클리핑을 위한 역할을 하는 쉐이더이므로 굳이 커스텀 쉐이더로 교체하지 않아도 됩니다.
위 설명을 바탕으로 쉐이더 에셋들을 적절하게 지정하면 되겠습니다.
예를 들어,
"Gamma의 Color Space 환경"에서 오직 "Alpha Blend" 메시들만 존재하고, "클리핑 메시가 함께 존재"한다면, 다음의 두개의 항목에 커스텀 쉐이더들을 각각 지정하면 되겠습니다.
(1) "1. Color Space : Gamma > Basic Rendering > Alpha Blend"
(2) "1. Color Space : Gamma > Clipped Rendering > Alpha Blend"
위의 설명은 커스텀 쉐이더를 작성한 이후에 재질 라이브러리에 적용하는 방법에 관한 것입니다.
만약 URP에서의 아웃라인 쉐이더가 필요하시다면, 저희가 검토를 하여 쉐이더를 한번 작성해보겠습니다.
다만 이 작업은 시간이 꽤 걸릴 수 있습니다.
더 궁금한 점이 있거나 아웃라인 쉐이더에 대한 요청을 하고자 한다면 댓글을 남겨주세요!
Q. Where should I assign my custom shader in the Material Library?
A. Specify the shader according to the color space, blending method of the mesh, and whether it is clipped or not.
안녕하세요!
답변을 준비하는 시간이 예상보다 많이 늦었습니다.
양해 부탁드립니다.
URP 환경에서 외곽선을 그리는 기법을 구현하는 방법이 매우 복잡하여, 게시글의 답변으로는 모두 담지 못한다고 저희는 판단했습니다.
그래서 저희는 메뉴얼에 문서로 정리하여 답변을 드립니다.
아래의 링크에서 이 기법을 구현하는 모든 과정을 보실 수 있습니다.
또한 이 기법을 위해 제작된 쉐이더와 재질을 패키지 형태로 다운로드 받을 수 있습니다. (다운로드 링크는 메뉴얼에 포함되어 있습니다.)
URP 2D Lit 및 URP Unlit 환경을 위한 쉐이더들을 제작해서 제공하니 확인 부탁드립니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_URPOutlineShader.html
외곽선을 그리는 기법은 기본적으로 "멀티 패스"를 이용해야하는데, 기본 렌더 파이프라인과 달리 URP의 특징 및 제한점에 의해서 멀티 패스 렌더링이 쉽지 않았습니다.
실제로, 렌더링 품질에도 한계가 있었는데 위의 문서에서 자세한 설명을 보실 수 있습니다.
꼭 외곽선 뿐만 아니더라도 다양한 렌더링 기법을 제작하시는데 저희의 설명이 도움이 되기를 바랍니다.
참고로, 만약 URP가 아닌 기본 렌더 파이프라인에서 외곽선을 구현한다면 메뉴얼의 설명과는 다른 방식으로 구현해야합니다.
또한, 저희는 "Post Processing"을 배제하고 구현을 했는데, "Post Processing"을 이용한다면 또다른 방식으로 구현이 가능할 것입니다.
메뉴얼 문서를 보시고 더 궁금한 점이 있거나 문제가 해결되지 않는다면 댓글을 남겨주세요!
감사합니다.
Eng)
We've added a manual that explains how to render a character's outline in a URP environment.
https://rainyrizzle.github.io/en/AdvancedManual/AD_URPOutlineShader.html
감사합니다!
안녕하세요!
요청에 따라 아웃라인 쉐이더 작성해보고 있는 중에, 시간이 너무 많이 지체되어 먼저 경과를 알려드리고자 글을 작성했습니다.
일단 다음과 같은 쉐이더의 초안을 작성하는 것에는 성공했습니다.
다만, 아웃라인 렌더링을 URP에서 구현하기 위해서는 단순히 쉐이더를 교체하는 것 외에도 고려해야할 점이 많았습니다.
이 기능을 이용하기 위해서는 "멀티 패스 렌더링"을 이용해야했으며, 이로 인한 성능 문제가 야기되어 프로파일링을 같이 진행하고 있습니다.
또한 멀티 패스를 만들기 위해 URP 쉐이더를 쉐이더 그래프가 아닌 직접 코드로 작성해야했는데, URP를 포함한 유니티의 SRP의 버전별 호환성이 좋지 않은 문제도 고려해야했습니다.
클리핑 메시, 반투명 메시, 다른 캐릭터와의 배치 등의 다양한 상황을 더 검토할 예정입니다.
위의 내용들을 모두 정리하여 답변을 드리고자 합니다.
영업일 기준 1~2일 정도 더 소요될 수 있으니 조금 더 기다려주시면 정말 감사하겠습니다.
빠르게 답변을 드리지 못한 점 양해 부탁드립니다.
요청합니다!
안녕하세요!
커스텀 쉐이더를 작성하셨다면, 현재 프로젝트의 "Color Space"와 메시의 렌더링 특성(블렌딩 / 클리핑)에 맞게 적용하면 됩니다.
각각의 항목에 대한 설명은 다음과 같습니다.
1. Color Space : Gamma / Linear
프로젝트의 Color Space 설정을 의미합니다.
프로젝트의 기본 설정은 Gamma이므로, Gamma에 해당하는 쉐이더 에셋들만 교체해주면 됩니다.
Color Space에 대한 추가적인 설명은 다음의 페이지에서 보실 수 있습니다.
- 프로젝트 및 이미지의 Color Space에 대한 설명 : https://rainyrizzle.github.io/kr/AdvancedManual/AD_LinearSpace.html
- Bake시 Color Space 옵션에 대한 설명 : https://rainyrizzle.github.io/kr/AdvancedManual/AD_BakeDialog.html
2. 메시의 블렌딩
메시의 블렌딩 옵션에 따라서 각각 다른 쉐이더 에셋을 지정해야합니다.
기본적으로는 "Alpha Blend" 방식이므로, 이 항목에만 쉐이더 에셋을 지정해도 대부분의 메시에 적용이 됩니다.
(URP에서는 Soft Additive는 지원하지 않으므로 Additive와 동일한 쉐이더를 지정하면 됩니다.)
3. Basic / Clipped Rendering
메시가 클리핑(Clipping)되었다면, 다른 쉐이더를 작성해야합니다.
클리핑 기능이 있는 쉐이더를 작성한 후, Clipped Rendering 항목에 쉐이더 에셋을 지정해주세요.
4. Alpha Mask
이 특수한 쉐이더는 Color Space나 블렌딩에 관계없이 동작합니다.
클리핑을 위한 역할을 하는 쉐이더이므로 굳이 커스텀 쉐이더로 교체하지 않아도 됩니다.
위 설명을 바탕으로 쉐이더 에셋들을 적절하게 지정하면 되겠습니다.
예를 들어,
"Gamma의 Color Space 환경"에서 오직 "Alpha Blend" 메시들만 존재하고, "클리핑 메시가 함께 존재"한다면, 다음의 두개의 항목에 커스텀 쉐이더들을 각각 지정하면 되겠습니다.
(1) "1. Color Space : Gamma > Basic Rendering > Alpha Blend"
(2) "1. Color Space : Gamma > Clipped Rendering > Alpha Blend"
위의 설명은 커스텀 쉐이더를 작성한 이후에 재질 라이브러리에 적용하는 방법에 관한 것입니다.
만약 URP에서의 아웃라인 쉐이더가 필요하시다면, 저희가 검토를 하여 쉐이더를 한번 작성해보겠습니다.
다만 이 작업은 시간이 꽤 걸릴 수 있습니다.
더 궁금한 점이 있거나 아웃라인 쉐이더에 대한 요청을 하고자 한다면 댓글을 남겨주세요!
감사합니다.
Eng)
Q. Where should I assign my custom shader in the Material Library?
A. Specify the shader according to the color space, blending method of the mesh, and whether it is clipped or not.