Public/Shader(24)
-
좌표 공간
좌표 공간에는 여섯 가지 좌표 공간을 다룰 것이다. 객체공간(Object Space), 월드 공간(World Space), 카메라 공간(Camera Space), 절단 공간(Clip Space), 정규 디바이스 좌표(Normalized Device Coordinates), 스크린 공간(Screen Space) 이 여섯 가지는 부분의 그래픽스 파이프라인 안에서 사용하는 순서다. 정점 셰이더에 전달하는 데이터는 객체 공간 기준이다. 데이터 중 일부는 월드 공간으로 변환돼야 한다.(라이팅 계산에서 사용된다.) 또 다른 데이터들은 카메라 공간으로 변환될 것이고 결국에는 절단 공간 등으로 변환될 것이다.(정점 위치) 객체 공간(Object Space) 객체 공간은 3D 좌표체계로 원점은 주로 입력 조립 단계에서 ..
2022.07.10 -
정점 색상 지원
기본적으로 정점과 함께 보간을 수행하는 레스터라이저에 전달할 또 다른 값을 전달한다. Appdata에 추가하기 appdata에 메시 정점 색상을 채울 멤버를 추가하려면 멤버의 이름과 시맨틱에 주의해야 한다. 권장하는 방법은 멤버의 이름을 color로 하고 COLOR 시맨틱을 추가하는것이다. 플랫폼에 따라 변수 이름을 다르게 하고 시맨틱 이름만을 COLOR로 하는 경우 제대로 동작하지 않을 수도 있다. 정점 색상 멤버 변수를 추가한 후 이 구조체의 모습은 다음과 같다. struct appdata { float4 vertex : POSITION; float4 color : COLOR; } v2f에 추가하기 v2f에 정확히 동일한 멤버 변수를 추가해야한다. struct v2f { float4 vertex : ..
2022.07.10 -
프레그먼트 데이터 구조체 & 프레그먼트 함수
v2f 데이터 구조체에 어떤 멤버를 추가하느냐는 정점 셰이더에서 전달받은 데이터 중 어떤 데이터를 전달할 수 있는지를 결정한다. [프레그먼트 데이터 구조체] struct v2f { float4 vertex : SV_POSITION; } 프레그먼트 함수 프로그래밍 가능한 단계 , 프레그먼트 셰이딩이다. 이 단계에서는 프레그먼트 셰이더가 각각의 프레그먼트마다 실행된다. [간단한 예시코드] float4 frag (v2f i) : SV_Target { return _Color; }
2022.07.10 -
정점 함수
프로그래밍 가능한 정점단계. 정점 셰이더 함수가 실행된다. 이 함수는 appdata 데이터 구조체를 인자로 하고 두 번째 데이터 구조체인 v2f를 반환한다. v2f vert(appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); return o; } 정점 좌표 공간에서 레스터라이저가 사용하는 좌표 공간으로 변환한다. 이것을 UnityObjectToClipPos함수가 수행한다.
2022.07.10 -
정점 데이터(appdata) 구조체
입력 조립 단계에 대응하는 appdata 구조체이다. [예시 코드] struct appdata { float4 vertex : POSITION; }; 위의 :POSITION은 셰이더 시맨틱이라고 한다. 이는 멤버의 목적과 관련된 정보를 전달하는 셰이더 데이터 구조체에 붙어있는 문자열이다. appdata의 멤버에 어떤 시맨틱을 추가함으로써 입력 조립 단계로 하여금 사용 가능한 데이터 중 원하는 데이터가 무엇인지 알려준다. 위의 예시코드에서는 정점의 위치만 요청을 한 것이다. 텍스처를 입힐 때 사용하는 UV 정보나 모델이 가지고 있어야 할 정점 색상과 같이 더 요청할 수 있는 데이터가 있다. 이 시맨틱과 데이터 타입은 반드시 일치해야 한다.
2022.07.10 -
언릿 셰이더의 구조
언릿 셰이더에는 정보 전달을 위한 두 가지의 셰이더 함수가 존재한다. 이들의 목표는 그래픽스 파이프라인의 일부분을 스크립트화 하는 것이다. - 정점 데이터는 appdata 구조를 통해 수집하고 이는 정점 함수로 전달된다. - 정점 함수는 v2f(vertex to fragment의 약자) 데이터 구조 멤버들의 내용을 채우고 이를 프레그먼트 함수의 인자로 전달된 다. - 프레그먼트 함수는 최종 색상을 반환하고 이 값은 4가지(RGBA) 값을 갖는 하나의 정점이다.
2022.07.10