본문 바로가기

유니티엔진/유니티쉐이더

Properties & Shader 경로지정


안녕하세요. TA 새벽언덕입니다.

오늘은 Shader의 Properties와 Shader의 경로지정, CG, HLSL구문이 어디서 시작하고 끝나는지 안내드리고자합니다.

Properties

Property _Color ("Color", Color) = (1,1,1,1)
_변수명(프로퍼티명,프로퍼티) = (초기값)

아래는 여러가지의 예시입니다.
Range, float, int, color, vector이 있는데 직접 사용해 보시는것이 가장 좋습니다.

_Name("display name", Range(min,max)) = number
_Name("display name", Float) = number
_Name("display name", Int) = number
_Name("display name", Color) = (number, number, number, number)
_Name("display name", Vector) = (number, number, number, number)


*Int는 정수만표시되어야하는데, 소수점도 표시되는데, 아쉬운부분입니다.
*변수명은 언더바(underbar) '_' 로 시작해주는 것이 보통입니다.



CG, HLSL의 끝과 시작

shader를에는 여러부분이있습니다. 위의 properties와 ShaderLab으로 감싸진부분, CG또는 HLSL을 사용하는 부분이 대표적인 예입니다.

간단한 설명을더하면 CG는 Nvidia의 언어이고, HLSL은 마이크로소프트의 언어입니다.

Unity에서는 ShaderLab안에 두가지 언어를 가져와서 사용하고있는것입니다.

오늘은 CG와 HLSL에 대한내용보다는 두가지가 어디서 시작해서 어디서 끝나는 지를 말씀드리고자합니다. Shader를보고 각 단락을 구분하는것이 중요하기 때문입니다.
*두언어중 어떤것이 더 좋고 나쁨은 없습니다. 보통 혼용해서 쓰기보다는 프로젝트에서 작성하기로 한 언어로 작성하는것 같습니다.

CG

CGPROGRAM ~ ENDCG
CGPROGRAM : 여기서 부터 CG코드를 사용하겠다는 선언문 입니다
ENDCG : 여기까지 CG코드를 사용한다는 선언문입니다.

HLSL

HLSLPROGRAM ~ ENDHLSL
HLSLPROGRAM : 여기서 부터 HLSL코드를 사용하겠다는 선언문 입니다.
ENDHLSL : 여기까지 HLSL코드를 사용한다는 선언문입니다.

위의 내용을 보면 거의같은것을 확인할수있습니다. Shader를 공부하고자 할때 막히는 부분이있습니다. 어떤 예제 코드는 CG로 작성되어있고, 어떤코드는 HLSL로 작성되어있습니다. 또한 함수가 다르기도합니다. 대표적으로는 HLSL에서는 fixed 자료형을 쓰지않습니다.

처음에 쉐이더를 공부하면 많이 애먹는 부분이지만
CG, HLSL를 쓰다보면 결국 비슷하며, 두개에 모두 익숙해져야 Shader를 잘 작성할수있습니다. 공부를 위해서 CG, HLSL가리지않고 작성해보면 좋을것 같습니다.

저도 처음공부를 시작한 CG가 익숙하여서 조금 애먹는 경우가있는데, 우리모두 Shader공부 파이팅입니다.



Shader의 경로지정

마지막으로 Shader의 경로를 지정해주는 부분입니다.
보통 쉐이더의 최상단에 위치합니디.

Shader "CustomShaders/Shader_001"

Material을 클릭해서 Shader를 선택해줄수있는데,
CustomShaders 안의 Shader_001를 선택해주면 해당 쉐이더를 사용해 줄 수 있습니다.

위부분의 내용은 매우 짧지만 중요성은 크다고 생각합니다. Shader의 경로를 깔끔히 정리하는것은 프로젝트 업무효율성을 크게 올릴 수있습니다.





오늘은 쉐이더의 Properties와 CG, HLSL부분이 어디까지인지, Shader의 경로지정에대해서 말씀드렸습니다.

영상으로 보기를 원하시는 분들은 유튜브에 "새벽언덕"으로 검색 부탁드립니다.

Shader를 공부하시는데 도움되셨으면좋겠네요.
긴글 읽어주셔서 감사합니다.
TA 새벽언덕 인사드립니다.
좋은하루되세요~~







'유니티엔진 > 유니티쉐이더' 카테고리의 다른 글

쉐이더 FallBack과 시맨틱  (0) 2022.03.02
Shader의 Struct, SubShader, Pragma  (0) 2022.02.23
UV와 Sampler2D  (0) 2022.02.09
쉐이더의 Culling, Queue, RenderType  (0) 2022.01.26
SRP Batcher  (0) 2022.01.26