nhn / gpm.unity

A brand of NHN providing free services required for game development.

Home Page:https://gameplatform.nhncloud.com/en/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

안녕하세요 Shader중 몇가지 추가적인 기능에 대한 문의 드려요

lumiereent opened this issue · comments

Describe the service

아래 두개의 문의내용은 셰이더를 통해 처리가 가능하다고 알고는 있지만,
제가 적용하는데 어려움을 겪었던 기능들이라 문의 드려봅니다.

  1. Blur Effect
    연출적으로 굉장히 많이 쓰이는 기능인데 사실 'Post Processing Stack V2 패키지의 Depth of Field'로 지원하고 있지만 저 패키지는 이 효과만을 위해 사용하기에는 좀 무겁다고 생각해서 문의 드려봅니다.

  2. 투명도가 적용된 리소스 중복 제거
    유니티에서 CanvasGroup을 통해 Alpha값을 조절하는 경우 이미지 리소스가 겹치는 곳은 샘플 리소스와 같이 색이 진해지는 효과가 있습니다.
    GuCJu

제가 원하는것은 알파값이 있는 이미지가 겹치는 경우 중복을 제거하고 하나의 알파값만 적용하고 싶습니다.
제가 찾아보니 스텐실 버퍼라는 세이더 기능을 통해 해결 할 수 있다고 알고는 있지만
자체적으로 찾아 적용하기에 너무 어렵고 잘 작동하지 않아 이러한 기능에 대해 문의 드려봅니다.

Additional context

Add any other context about the service here.

@lumiereent 안녕하세요.
먼저 GPM을 이용해 주셔서 감사합니다.

문의하신 기능에 대해 간단하게 설명드리면,
2개의 셰이더 파일을 이용해 스텐실 버퍼의 값을 동일하게 설정하고,
나중에 그려지는 UI에서 어떻게 그려질지를 설정하시면 전달해 주신 UI와 유사하게 표현할 수 있습니다.

기본 Unlit Shader를 사용한 예를 아래에 전달드립니다.

// Red UI Shader
Tags
{
    "RenderType" = "Transparent"
    "Queue" = "Transparent"
}
Blend SrcAlpha OneMinusSrcAlpha

Stencil
{
    Ref 1
    Comp Always
    Pass Replace
}
// Yellow UI Shader
Tags
{
    "RenderType" = "Transparent"
    "Queue" = "Transparent+1"
}

Blend SrcAlpha OneMinusSrcAlpha

Stencil
{
    Ref 1
    Comp NotEqual
    Pass Keep
}

알파값의 경우 프래그먼트 셰이더에 직접 값을 적용했습니다.

col.a = _Alpha;

image

Blur Effect는 내부 검토 후 개발 예정으로 추후 가이드 문서를 통해 확인 부탁드립니다.

추가 문의 사항이 있으시면 언제든 편하게 연락 부탁드립니다.
감사합니다.

안녕하세요 상세한 답변을 주셔서 감사합니다.

기존에 사용하던 디폴트 UI기능은 유지하고 싶기 때문에
답변에 알려주신 방법을 토대로 내장 셰이더(UI-Default.shader 혹은 Sprites-Default.shader)를 변형해서 사용해보고자 하였으나

원하는 결과가 잘 나오지않아 첨부파일과 함께 추가 문의 드려봅니다.
알파값의 경우 상위 오브젝트의 CanvasGroup에 있는 인스펙터 Alpha값을 조절하여 테스트해보았습니다

적용한 코드.zip

@lumiereent 안녕하세요.

전달해 주신 셰이더 파일의
UI-Default Custome Shader 1과 UI-Default Custome Shader 2의 스텐실 값이 동일한 것을 확인했습니다.
해당 스텐실 값을 변경하신 후 다시 한번 확인 부탁드립니다.

Alpha 값 조절 부분에 대한 것은 프로퍼티에 변수 등록 및 셰이더에서 사용,
스크립트를 통한 머티리얼 제어에 대해 확인해 보시면 좋을 것 같습니다.

감사합니다.

잘 되는 것을 확인했습니다! 도움을 주셔서 감사합니다.

잘 해결되셔서 다행입니다.
이슈 클로즈 하겠습니다.

감사합니다.