닐리의 이펙트 #1

6.5

닐리는 방어할 때 얼음을 사용할 예정이다. 본래는 애니메이션 작업을 해야 하지만, 얼음을 얹었을 때 모션을 정확히 보려면 셰이더가 우선구현되어야 한다. 때문에 얼음 셰이더가 필요한데, 이것은 곧 굴절셰이더이다. 이는 이미 빗방울을 구현할 때 해보았지만, 이는 셰이더 그래프를 통한 포스트프로세스로 구현한 것이고, 입체적인 모양은 다시해야 한다. 이건 모르니까 유튜브를 찾자.

굴절을 아주 정확하게 구현하려는 것은 아니니, 그 자체는 어렵지 않다. 하지만 SceneColor를 어찌가져오는지 몰랐다. 여기에 잘 설명이 되어 있는데, 문제는 GrabPass{}를 URP에선 못쓴다고 한다.

chatGPT에게 물어보니 URP에선 이것 대신 _CameraOpaqueTexture를 사용하면 된다고 한다. 이 텍스처는 반투명렌더 전의 오파쿠 상태를 텍스처로 사용할 수 있게 해준다. 때문에 Transparent큐에서만 사용할 수 있다. AlphaTest에서 사용해도 고장난다.

기본형은 다 만들었으니 이제 꾸며보자.

소품이 점점 늘어난다.

된 것 같음.

6.6

얼음 셰이더는 완성을 했으나 문제가 하나 있다. 타격효과까지 굴절되어 버리는 것이다. 이를 원하지 않으므로 ZTest를 Always로 설정해주고 싶다. 이를 위해선 ZTest부분을 열거형으로 설정해서 제어해주어야 한다.

    Properties
    {        
        [NoScaleOffset] _MainTex ("Cutout Texture", 2D) = "gray" {} 
        [HDR] _Color ("Color", Color) = (1, 1, 1, 1)
        _Threshold ("Cutout Threshold", Float) = 0 
        
        [KeywordEnum(Less, Greater, LEqual, GEqual, Equal, NotEqual, Always, Never)] _ZTest("ZTest Mode", Float) = 2        
    }

Enum어트리뷰트는 쓸 때마다 맨날 까먹는데, 자료도 별로 없어서 검색해도 잘 안나온다. chatGPT도 잘 모른다. 이 기회에 적어두자. 이후 커맨드 설정부에서

        Pass
        {            
            Cull Off
            Zwrite On
            ZTest [_ZTest]

일케 써주면 사용할 수 있다. 참고로 블렌드 모드는 엔진에 이미 지정이 되어 있는데

[Enum(UnityEngine.Rendering.BlendMode)] _BlendMode ("Blend Mode", Float) = 1

요래 선언하면 된다.

확실하게 앞에 찍기 위해 큐도 하나 높여준다. 빌드 테스트도 완료. 잘 돌아간다. 내부적으로는 셰이더가 2개로 분리되었을 것이라 추정한다.

얼음 작업이 이어지는 가운데, 입이 유별나게 하얘써 살펴봤더니… 오.맙소사. Transparent큐에서는 그림자 정보를 받지 못한다!

별 수 없이 컷아웃을 써야 한다. 이걸 안쓰고 싶었던 이유는 립스틱 때문인데… 포기해야 할 듯.

얼음은 주변의 빛을 반사하기 때문에, 스테이지마다 색이 달라야 한다.

되게 번거롭다.으악!

6.7

닐리의 트레일을 처리하던 중 트레일 구동방식이 좀 잘못되어 있음을 깨달았다. 이대로 진행해도 괜찮지만, 별로 깔끔하지가 않아서 앨리스로 거슬러 올라가 다시 처리하기로 했다. 트레일 코드를 고치고, 익스포트를 하고, 유니티에서도 셰이더 코드를 수정하고…다시 닐리로 돌아온다. 분명 귀찮은 일이지만, 각잡고 하면 의외로 빨리 끝난다.

한 동작이지만, 컨트롤러가 없으니 또 허전해서 추가.

영락없는 가일.

하지만 하나 달라야 하는 것이… 불속성이어야 한다. = 맞은 상대는 불에 타야 한다. = 셰이더를 만들어야 한다.

이글이글… 기본적인 원리는 킹오파에서 파렛 오프셋(?)에서 아이디어를 얻었다. 하지만 이것만으로는 좀 모자라고…

불은 어차피 필요하니 미리 만들어 두자. 파티클 생성시에 SDF를 두껍게 썼더니 적절하게 볼륨감이 생겨서 예쁜 모양이 됐다.

활활. 이제 붙이자.

닐리의 이펙트 #1”의 2개의 생각

  1. 오오 착착착 완성되고 있네요!

    저는 이상하게 유투브 보면서 공부하는걸 못하겠지 말이예요…

    ADHD인가… 글이랑 사진으로 된 자료가 많이 제작되면 좋겠어요

    근데 요즘은 거의 다 유투브더라구요

    시대의 흐름을 받아들이지 못하는 나약한 정신

    아무튼 6월도 화이팅입니당 ㅇㅅㅇ)9

    오늘부터 갑자기 덥던데 이즈님도 아라님도 더위 조심하셔요

    1. 유튜브 강좌 좋아요. 그런데 아마 보기 힘드신 이유는 정보의 파편화 때문이 아닐까 싶네요. 책이 그런 면에선 정보를 잘 모아두어 좋은 점이 있지요. 그런 의미에서 본다면 개인보단 공식영상을 보시면 도움이 많이 된다고 생각합니다

      날씨는 아직 살만합니다. 백수된 후로 집에서 나가지 않다보니! 6월도 화이팅입니다.

댓글 남기기