컴퓨터 그래픽스/HLSL(5)
-
normal mapping, 환경 mapping
7장은 normal mapping에 대한 내용이다. 어떻게 물체의 울퉁불퉁한 정도를 polygon을 더 넣지 않고 나타낼 수 있을까? 울퉁불퉁한 정도를 texture을 이용하여 조명 계산을 통해 울퉁불퉁하게 나타낼 수 있다. 이것들은 pixel shader에서 나타내줄 것이다. 여태껏 해왔던 표현과 울퉁불퉁한 표현 우리가 이런 울퉁불퉁함을 나타내기 위해서 쓸 것은 normal vector들이다. 이런 normal vector들은 모델링 과정에서 다 가져오게 될 것이다. 즉 normal texture에서 가져오게 된다. normal vector들은 그런데 normalize 되어 있는 벡터들이므로 -1 ~ 1 의 범위를 갖는다. 그러나 texture 상에서는 rgb 값들을 저장하는데 rgb의 범위는 0 ~ ..
2023.07.14 -
재질에 따른 반사양 조절, toon shading
앞의 specular, diffuse를 이용하여 빛을 표현했는데 이제는 물체의 재질마다 빛이 정반사, 난반사 하는 양이 다른 것을 생각해봐야 한다. 고려할 것 난반사광이 반사하는 빛, 정반사광이 반사하는 빛의 스펙트럼이 다른 경우 각 픽셀이 반사하는 정반사광의 정도를 조절하는 경우 (ex. 사람의 얼굴) 이때 diffuse map(난반사광에 이용), specular map(정반사광에 이용)을 이용하여 표현합니다. diffuse map은 실제 물체를 지각할 때는 난반사광으로 인식하므로 diffuse map에는 텍스쳐를 적용하는 것으로 끝난다. specular는 빛이 나올 곳 안나올 곳을 텍스쳐로 보여준다. 즉 반사하는 정반사광의 양이므로 검은색일 경우 빛을 전혀 반사하지 않는다. 그래서 난반사광으로 표현한..
2023.07.14 -
조명 셰이더
조명은 난반사, 정반사를 이용하여 표현할 수 있다. 난반사는 diffuse 이다. 각 vertex별로 normal vector와 해당 vertex와 light 사이의 방향 vector 를 구해서 내적을 통해 diffuse를 구한다. 정반사는 specular로 view vector는 다른 말로 카메라 vector로 볼 수 있다. view vector와 reflection vector의 내적으로 specular 를 구할 수 있다. 이러한 빛의 계산은 어느 과정에서 하는 것이 좋을까 생각해보면 vertex, fragment 둘 중 하나일텐데 vertex에서 계산하면 결과 값들을 fragment로 보내서 fragment 결과로 ambient, diffuse, specular를 더한 색을 return하게 될 것이..
2023.04.30 -
텍스쳐매핑
3D 물체를 이루는 구성요소는 삼각형이다. 이 삼각형에 fragment shader로 색을 표현할수도 있지만 텍스쳐를 이용하여 더욱 쉽게 삼각형을 표현할 수 있게 된다. 이것은 바나나의 텍스쳐이다. object의 위치에 텍스쳐를 mapping 해주면서 넣어주게 된다. 텍스쳐는 기본적으로 tiling을 이용하는데 (0, 0) ~ (1,1)까지 값은 전체 텍스쳐 하나를 나타낸다. 그런데 이 값을 조절해주면 텍스쳐가 해당 값에 따라 반복되게 된다. 저번의 input을 받아온 것처럼 texture도 받아와야한다. struct VS_INPUT { float4 mPosition : POSITION; float2 mTexCoord : TEXCOORD0; }; TEXCOORD0 이 받아서 mTexCoord에 저장하게 ..
2023.04.29 -
HLSL 원 그리기
hlsl은 directX 의 shader언어로 c언어와 비슷한 언어이다. shader는 여러 색조, 명암, 농담 등을 고려해서 최종 색을 표현하는 프로그램이다. 쉐이더는 파이프라인에서 vertex 위치에 대한 정보가 들어가게 되는데 그걸 처리해주는 것이 vertex shader이다. 처음 들어가는 위치에 대한 정보는 3D 상에서의 위치정보이고 해당 데이터가 우리 화면에서 어떻게 보일지 생각하면서 표현해주게 된다. 그리고 처리된 표현을 가지고 Rasterization 이라는 과정을 거쳐서 몇 개의 픽셀이 만들어지는지 결정하게 된다. rasterization에서는 위치에 따른 색 결정(interpolation), 뒷면을 그리지 않는 (back face culling) 등의 여러 작업들을 처리한다. 그리고 마..
2023.04.29