구조체는 c언어와 굉장히 유사하게 사용하면 된다.
float3 은 float 3개를 의미한다. hlsl 은 추가 자료형이 있다. 쉐이더 프로그래밍에 더욱 편리하게 사용하기 위함이다.
이 Input 은 c언어의 InputLayout 과 형식이 맞아야한다. 시멘틱스로 POSITION 이나 COLOR0 등으로 직접 레이아웃과 맞춰줘야한다. 여기서 POSITION 은 MVP 에 의해 변환되기 전의 정점의 포지션이다.
vs 의 OUTPUT 이 ps 의 INPUT 으로 사용되도록 만들어두었다.
그러니까 투영에서는 vertex 단위의 계산 값들을 인터폴레이션 해서 (bery centric coord) (원근 투영은 왜곡 때문에 추가 연산) 픽셀 단위로 바꾸ㅡ고 그걸 ps 의 input 으로 받는다. (vs 하고 rs 한다음에 ps 로 간다는 뜻)
SV_Position 은 픽셀 단위로 인터폴레이션 되어진 값이 들어간다라는 뜻이다.

hlsl 의 접근 시 다음과 같이 접근 가능하다. 이때, 2개 3개씩 도 가능하다.
예로 xy, rg 이런식으로 반환 가능하다. 다만 xyzw 와 rgba 를 섞을 수는 없다.


hlsl 의 main 실행 함수는 반환 값을 ps 용 입력 구조체로 되어야하며 파라미터는 vs 의 입력 값이어야한다.
mul 은 벡터랑 행렬을 곱해준다. mvp 곱해주는 거임.

이 main 함수는 각 vertex 하나 당 한 번씩 실행된다. gpu 는 멀티 스레딩 을 진ㄴ짜 잘함. 그래서 여러 개의 vertex 를 동시에 같은 프로그램을 통해서 처리 할 수 있다.
ps 코드를 보면 input 을 똑같이 vs 코드와 같이 맞춰준다.
main 에서 return 이 float4 이다. color 값을 반환하는거다.
파라미터가 input 이다. vs 에서 의 output 을 여기서 받는다. ( rs 과정 지남 )
: SV_TARGET 은 이 결과가 렌더링 하는 타겟을 만든다는 의미이다. 렌더 타겟에 저장이 된다!

'DX' 카테고리의 다른 글
| HLSL 코드 예제 (0) | 2025.06.15 |
|---|---|
| HLSL 디버거 (0) | 2025.06.15 |
| HLSL 개요 (0) | 2025.06.15 |
| 모델 뷰 프로젝션 (MVP) 과 프로젝션 행렬 (0) | 2025.06.15 |
| D3D11 렌더링 파이프라인 (0) | 2025.06.15 |