DX(4/1)

2024. 4. 1. 10:14카테고리 없음

쉐이더를 만들기 위해 새 프로젝트에서 새 항목으로 cpp - HLSL에서 꼭지점 셰이더 파일을 만든다.

확장자는 .fx나 .hlsl 뭘로 쓰는 상관없다. 우선은 .fx로 바꿔서 만들었다.

hlsl이라는것은 쉐이더에서 사용하는 다른 언어로 cpp을 다룰수있다면 어렵지는 않지만 랜더링 파이프라인 지식에 기반해서 사용해야한다.

 

비주얼 스튜디오에서 쉐이더를 만들면 자동완성 기능, 에러 확인 등등을 확인할 수 있게 해주는 확장 프로그램이 있다.

 

버텍스 쉐이더는 _VS, 픽셀 쉐이더는 _PS를 붙여서 만들것이다.

 

함수의 리턴값은 필수다.

 

그동안 float4로 float 4개의 자료형을 사용했는데 그 이유가 hlsl에서 float 4개의 자료형을 float4로 사용하기 때문이다.

쉐이더 구조체 안에 

POSITION

TEXCOORD

COLOR

이렇게 만들것이다. 비주얼에서 만들어서 가져온 것들 뒤에 이름 : 이름 식으로 붙여주면 된다. 이걸 시멘틱이라고 한다.

 

OutPut을 하는 시멘틱 중 가장 중요한 것은 SV_POSITION을 지정해주는 것이다. 이 지정된 포지션이 레스터라이저에서 픽셀 건져내기를 실행할 포지션이다.

 

쉐이더에서 타켓이란 

 

쉐이더 디버그는 D3D10으로 해야 돌아간다.

Flag0 |= D3DCOMPILE_PACK_MATRIX_

 

세팅해줘야하는 옵션이 있는 단계들을 고정 기능 단계라고 한다.

레스터라이저 등이 이에 해당한다. 

 

머티리얼을 만들 것인데 이 프로젝트에서 머티리얼은 버텍스 쉐이더, 레스터라이저, 픽셀 쉐이더를 가리킬 것이다.