블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (667)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (105)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (218)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total345,595
Today85
Yesterday123

TRANSFORM_TEX

Unity/Unity Graphics / 2016. 4. 15. 00:10

UnityCG.cginc 폴더에 보면 이런게 있다


// Transforms 2D UV by scale/bias property

#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)


코드에서는 UnityCG.cginc를 include 해서 아래와 같이 사용한다.

o.uv = TRANSFORM_TEX(v.uv, _MainTex); 


그런데 이게 어떤 기능일까?

아래 참고 매뉴얼을 보면 이러한 설명이 되어 있다.


특별한 텍스처 프로퍼티들

shader/material 프로퍼티로 설정한 각 텍스처에서, 유니티는 추가정보를 벡터 프로퍼티로 덧붙인다.


Texture tiling & offset

머티리얼은 종종 기울기와 오프셋 필드를 머티리얼의 텍스처를 위해 가지는데

이 정보는 float4 {텍스처 이름}_ST 항목으로 셰이더로 전달되어 진다.

x는 X 기울기값

y는 Y 기울기값

z는 X 오프셋값

w는 Y 오프셋값

예를 들어, 만약 셰이더가 _MainTex라는 텍스처를 가진다면 기울기 정보는 

_MainTex_ST 벡터가 될 것이다.


o.uv = TRANSFORM_TEX(v.uv, _MainTex);  와 같이 코딩한 채로 위 값을 고쳐보면

텍스처가 이상하게 변하는 것을 볼 수 있다.

Tiling은 몇장의 텍스처를 사용할 것인가를 나타낸다.

예를 들어 x가 1로 되어 있을 경우 아래와 같이 한장의 텍스처를 사용한다.



x가 2로 되어 있을 경우 아래와 같이 같은 범위에서 두장의 텍스처를 사용한다.

즉 1by1 정 사각형에 가로 세로 몇장의 텍스처를 사용할 것인지를 나타낸다.


offset값은 uv 흘리기로 이해하면 쉽다.

uv가 0~1사이 이므로 offset을 1로 하면 0으로 한 것과 같이 다시 처음부터 시작이다.

정수값 ~ 정수값+1 사이의 값이 의미가 있다.


그러므로 만약 위와 같이 Tiling 1,1  그리고 offset 값 0,0 으로 쓴다는게 약속이 된다면

아래의 매크로를 해 줄 필요가 없다.

TRANSFORM_TEX( v.uv, _Tex );



이는 위 값들이 미리 규칙에 맞게 선언 해 둔 float4 _MainTex_ST; 값에 전달되어 지고

TRANSFORM_TEX의 매크로로 변환되어 결과값 계산이 아래와 같이 되기 때문이다.

o.uv = v.uv * _MainTex_ST.xy + _MainTex.zw; 


그리고 추가로 아래와 같이 코드를 고쳐 보자.

o.uv = v.uv;

위 이미지의 값을 아무리 고쳐도 아무런 변화가 없는 것을 볼 수 있다.


또 {텍스처 이름}_TexelSize 는 텍스처의 크기 정보를 가진다.

x : 1.0/width

y : 1.0/height

z : width

w : height

이러한 특별한 텍스처 프로퍼티값들은 필요시 요긴하게 사용할 수 있다.


참고 

- Cg/HLSL 쉐이더 프로퍼티 접근

-

'Unity > Unity Graphics' 카테고리의 다른 글

Depth and Normal Texture (Part 1)  (2) 2016.04.29
#pragma multi_compile  (0) 2016.04.23
Performance Tips when Writing Shaders  (0) 2016.04.15
TRANSFORM_TEX  (0) 2016.04.15
Unity Tags  (0) 2016.04.12
Built in shader variables  (0) 2015.10.30
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함