12
16

<본 글은 강좌가 아닙니다. 제 기억노트입니다..>

다이렉트X11로 엔진을 만들어 쉐이더 작성을 해보았으나

따로 공부하고 싶어서 김포프 교수님의 셰이더 프로그램 입문 책을

보며 공부하고 있다.

 

이 책에서 소개한 AMD RenderMonkey는 별도의 다이렉트

프로젝트를 구성하지않아도 쉐이더를 확인 할 수 있는 툴이다. 

 

https://gpuopen.com/archived/rendermonkey-toolsuite/

 

RenderMonkey™ Toolsuite

RenderMonkey has reached end of life. AMD no longer supports RenderMonkey, but makes it available for download without warranty. RenderMonkey is a rich

gpuopen.com

 

기본적으로 다렉X9를 사용하는 프로그램인것같다. 2008년도가 마지막 업데이트인듯..

 

빨간공를 출력하고 그 다음은 챕터3에서 텍스쳐에서 텍셀을 구해오는 샘플러 데이터형과

텍스쳐 샘플링에 사용하는 HLSL함수인 tex2D() 함수에 대해서 알아보았다.

 

기초설정을 한다.

 

물체공간->월드공간->뷰공간->투영공간으로 만들어 주기 웨해

월드 행렬, 뷰행렬, 투영행렬이 필요하다.

 

따라서 월드, 뷰, 투영 행렬 변수를 만들어주고

샘플러 데이터 형에 텍스쳐를 넣어준다.

 

 

위는 버텍스 셰이더의 모습이다. 구조체를 만들어주고

텍스쳐 UV값과 위치값를 PS로 넘겨준다.

 

 

위는 픽셀셰이더의 모습이다. VS_OUPUT 구조체를 가져와

mPositon을 지워버리는 모습이다. PS에서는 VS에서 반환한 값을

가져오는 것이기 때문이다.

 

tex2D 함수로 텍셀값을 구해온다. sampler2D 변수인 DiffuseSampler

에서 Input에 TexCoord 좌표에 있는 텍셀을 잃어와 그 값을 알베도에 저장하는 코드이다.

 

변수로 만들었던 DiffuseSampler는 HLSL에서 지원하는 데이터형으로

텍셀 하나 구하는데에 쓰인다.

 

이렇게 하고 왼쪽 Stream Mapping에서 

Usage를 Texcoord를 추가하면 지구 모양이 나온다. 

감히 예상해보는데 D3D에서 D3D11_INPUT_ELEMENT_DESC가 아닐까 싶다..?

 

아래는 결과

 

마지막으로 스위즐링이란 벡터의 성분의 순서를 바꿔서 접근하는 것을 스위즐이라고 한다.

 

COMMENT