반응형
- UV
텍스처 좌표, 오브젝트에 텍스처를 매핑 가능
한 정점 UV를 변경하면 Mesh에 텍스처가 표시되는 방식도 변경할 수 있음
- 셰이더
정점과 픽셀의 특성을 설명하는 프로그램 => 컴퓨터가 Mesh를 렌더링하는 방식을 설정하고 변경
- MeshInfo(Vertex, Uv etc.)
컴퓨터에서 읽은 후 Vertex Shader로 전달
- Vertex Shader
각 Vertex마다 한번씩 실행
Pixel Shader가 다음에 사용할 데이터(ex-UV)를 준비
- Pixel Shader
각 픽셀 당 한번씩 실행되고 객체 렌더링
텍스처 적용,색상 변경, 픽셀 제거 등 역할을 함
Property
속성에 표시되는 변수, 셰이더에서 사용
Properties
{
_MainTex("Texture",2D)= "white"{} //인스펙터에 Texture라는 속성 생성
//기본적으로 하얀색으로 설정
}
#pragma vertex vert
#pragma fragment frag
//vertex shader 또는 pixel shader가 vert와 frag 함수에서 실행되도록 설정
struct appdata//Mesh에 필요한 데이터 선언 구조체
{
float4 vertex : POSITION; //x,y,z,w
float2 uv : TEXCOORD0; //텍스처 좌표와 같은 임의의 위치 정밀도가 높은 데이터 표시
};
struct v2f //FromVertToFrag 구조체
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION; //데이터에 각 Vertex 위치를 포함되어있음
};
Vertex 배치
Vertex를 배치하기 위해서 Mesh Info가 필요함.
Vertex Method / Shader에 매개변수가 있는 이유
v2f vert (appdata v)
{
v2f o; //pixel shader에 전달할 정보 초기화
o.vertex = UnityObjectToClipPos(v.vertex); //각 Vertex를 화면에 배치
o.uv = v.uv; //UV를 Mesh 정보(Vertex Shader)에서 Pixel Shader에 제공할 데이터에 전달
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return tex2D(_MainTex,i.uv);//텍스처에서 색상을 가져와서 반환
}
반응형
'Unity > Shader' 카테고리의 다른 글
ShaderLab 알아보기 (0) | 2022.03.31 |
---|---|
[Material property drawer(4)] PowerSlider , IntRange 사용하기 (0) | 2022.03.30 |
[Material property drawer(3)] Enum 사용하기 (0) | 2022.03.27 |
[Material property drawer(2)] KeywordEnum 사용하기 (0) | 2022.03.26 |
[Material property drawer(1)] Toggle 사용하기 (0) | 2022.03.25 |
댓글