버텍스 쉐이더는
VertexInput v // 버텍스 버퍼에서 받은 값이 들어오고
어떻게 보간기를 통해서 넘길지 정하는 부분
vert 버텍스의 값으로 v 로 들어오고
보간기를 통하고
o 으로 내 보내지는 구조임
----
공간변환
3D 메시의 각 버텍스를 사용하는 툴의 3D 공간을 변환하는 과정을 거치게 된다.
월드 변환 (Model View Perspective) // MVP 라고 부르기도한다
- 로컬 위치에 있는 모델링을 월드 위치로 변환하는 것
- object to world
이걸 다시 카메라 뷰로 바꾸는 걸 한다.
즉.
이 변환 과정은 간략하게 [오브젝트 공간] >> [월드 공간] >> [카메라 공간] >> [클립 공간] 으로 거치게 된다
스크린샷 설명
1. vertex 에 : 현재 오브젝트의 포지션을 담는다.
2. 1.vertex의 공간변환을 해준다. (TransformObjectToHJClip은 공간 변환 단계를 한번에 쭉 처리해주는 것)
그리고 매개변수로 들어온 v 의 vertex.xyz 값을 넣어준다.
3. vertex의 이 물체의 POSITION 값을 넣어준다.
-----
프로퍼티로 뚫어서 전체적인 밞기 조정하기
먼저 프로퍼티를 뚫어준다.
변수의 형식과 선언을 해준다.
마지막 픽셀 세이더에서 하는 곳에
인텐시티를 곱해준다. (전체 밝기 조절)
어느정도 레거시와 구조상 비슷한 부분이 있는 듯
이번에 half4 (Color(이건 3백터) * Intensity(1백터)) 를 해볼 것이다 .
그러면 컬러 프로퍼티에서 색도 바뀌고
Texture Sampling
메모리에 올려진 텍스쳐를 해당 픽셀에 매핑하는 과정,
그게 두 가지 방식으로 이루어짐
1. Textures 와 samplers가 같이 이루어지는
Coupled textures and samplers 방식
예전 CG에서는 주로 sampler2D 사용
CG 때와 비슷하게
프로퍼티에 선언을 한다.
인스펙터에 뚫림
tip.
fixed는 12비트 // -2 ~ 2 사이 값만 // 낮은 정밀도,
half 는 16비트 // 2의 16승을 가진다.
float // 2의 32승을 가진다. //
2 이상 값 이 안 올라가는 것에는 fixed도 좋지만, (ex 벡터, RGB 값들)
요즘은 AP가 좋아서
그냥 half로 처리하는 추세
만약, HDR 를 쓰게되면 float 추천 //
변수 선언에
sampler2D _MainTex;
float4 _MainTex_ST;
두개를 써줘야한다.
기존 레거시 스크립터 작성할때는 sampler2D _MainTex; 만 입력했지만,
URP는 float4 _MainTex_ST; (tile과 offset을 사용하기 위한 값.) 도 선언해줘야한다.
버텍스 퍼버에 uv 값을 불러와준다.
float2 uv 값에 : TEXCOORD0; uv 값을 넣어준다.
그리고 이게 보간기를 통해서 픽셀 세이더로 보내준다. // 버텍스 쉐이더 -> 픽셀 쉐이더로 넘겨 주는 역할
하지만, 버텍스 쉐이더에서도 한번 더 읽줘야한다.
o.uv = v.uv.xy;
v로 들어오는 걸 o에 넣어준다.
픽셀 쉐이더는 버텍스 쉐이더의 값을 i로 받아오고있다.
픽셀세이더는 보간기에서 읽어 온 것들을 사용한다.
스케일은 곱해주는 것 // 곱하면 늘어나겠지
플러스는 앞으로 보내는 것 // 오프셋임
그래서 스케일 값은 곱해주고, 오프셋 값은 더해준다.
float2 uv = i.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; // uv 의 스케일 값과 오프셋 값을 지정해줌
float4 color = tex2D(_MainTex, uv) * _Color * _Intensity; //
tex2D라는 텍스처 샘플링에 대한 함수사용 (텍스트이미지 , uv 값) 넣어준다.
이 곱하고 더하는 값이 중요함
Tiling 이 곱해지는 값
Offset 이 더해지는 값임
만약에
다 지우고 하면
인스펙터에서 틸링 값과 오프셋 값을 조절해도 바뀌지 않는듯
----
2. Textures 와 samplers를 나눠서 하는
Separate textures and samplers 방식
'Unity > URP' 카테고리의 다른 글
ShaderGraph, Swizzling 이란? (0) | 2022.07.17 |
---|---|
Unity Shader Graph _ 유니티 셰이더 그래프 (0) | 2022.07.17 |
210712_URP 쉐이더 1 (1) | 2021.07.13 |
0616_ UI 카메라에 포스트프로세싱 안 먹히게하기 (2) | 2021.06.16 |
프로젝트를 URP 세팅으로 바꾸기 (3) | 2021.06.04 |