https://chulin28ho.tistory.com/559?category=822622
와 연결될 얘기고요.
커스텀 펑션으로 라이트 디렉션을 받아오면 상당히 많은 일을 할 수 있겠죠
일단 이렇게 NdotL로 커스텀 라이트를 구현할 수 있습니다.
전통적인 Lambert 구현이고요. 여기에 대해선 뭐 설명 많으니 더 설명 안할께요
뭐 이건 그렇고..
또하나의 커스텀 라이트 구현 방식은, 지금처럼 string으로 내부에 처리하는 방식과
File로 해서 외부에서 불러오는 법이 있습니다
둘은 동일하지만, 아무래도 파일이 길어지면 외부 파일로 불러오는게 좋겠지요.
외부 파일은 ... 놀랍게도 .hlsl 파일입니다.
만드는 방식은 ..? 놀랍게도 없습니다. ㅋㅋㅋㅋㅋㅋ
그래서 걍 아무거나 셰이더 파일이건 C# 파일이건 하나 만들어주고 강제로 확장자를 hlsl로 바꿔주면 됩니다. 허허허허 ㅎ
이게 무슨 일인가 하고 싶겠지만 뭐 이겁니다. 이건데 뭐 어쩌겠음.
이케 말이죠
그리고 저 코드안에 함수를 구현해 주는 겁니다. 위에 string에서 했던것과 같은 내용을 써주면 됩니다. 똑같은걸 만들어 주는 거니까요.
함수에 대한 기본 개념이 없으시면 그걸 먼저 공부하고 보시면 됩니다.
구현은 아래처럼 넣어 주시면 됩니다.
void CustomLight_float( out float3 Direction , out float3 Color ){#if SHADERGRAPH_PREVIEWDirection = float3(1,1,0);Color = float3(0,0,1);#elseLight light = GetMainLight();Direction = light.direction;Color = light.color;#endif}void CustomLight_half(out half3 Direction, out half3 Color){#if SHADERGRAPH_PREVIEWDirection = half3(1, 1, 0);Color = half3(0, 0, 1);#elseLight light = GetMainLight();Direction = light.direction;Color = light.color;#endif}float 버전과 half 버전은 Precision 에 따라 변환되도록 만든 것입니다. 뭐 별 차이는 없습니다. (있긴 한데 설명하기 귀찮)그렇게 한 후 아래처럼 연결해주시면 완벽하게 쓸 수 있습니다.코딩을 할 줄 아는 사람을 위한 노드로군요. 커스텀 펑션.
반응형
'Shader ' 카테고리의 다른 글
유니티 셰이더 그래프(Unity shadergraph) HDRP에서 굴절(Refraction) 만들기 (0) | 2020.01.16 |
---|---|
유니티 셰이더 그래프(Unity shadergraph) 확장된 커스텀 라이트와 그 문제점 (2) | 2020.01.14 |
유니티 셰이더 그래프(Unity shadergraph) view vector는 normalize 하세요 (0) | 2020.01.10 |
유니티 셰이더 그래프(Unity shadergraph) 이해할 수 없는 셰이더 그래프의 뒤통수 (2) | 2020.01.01 |
유니티 셰이더 그래프(Unity shadergraph) 에서 버텍스 스트림 셰이더 (vertex stream shader) 가 적용된 이펙트 셰이더 만들기 2 (2) | 2019.12.31 |
댓글