본문 바로가기

전체 글393

[HLSL] 챕터7 - 법선매핑 TANGENT : 접선정보 시맨틱 BINORMAL : 종법선정보 시맨틱 transpose() : 전치행렬 구하는 함수 접선공간 : 법선맵 안에 법선이 존재하는 공간 // 법선매핑의 필요성 폴리곤 수 늘리면 속도가 느려지고, 메모리 소모가 커진다. 픽셀마다 법선을 정해준다. 각 텍셀에 법선을 저장하는 방식이다. 이 값을 픽셀셰이더에서 불러와 조명계산에 사용한다. 법선정보 담고 있는 텍스쳐를 법선맵이라고 한다. 이를 이용한 조명계산을 법선매핑이라고 한다. (normal mapping) // 텍스처에 법선정보를 저장하는 방식 XYZ를 RGB에 대입한다. 값의 범위를 0~1로 만든다. 단위벡터는 -1~1이다. 변환 공식은 다음과 같다. - 벡터 -> 맵 법선맵 RGB = 법선벡터 XYZ * 0.5 + 0.5 -.. 2023. 3. 19.
[HLSL] 챕터6 - 툰셰이더 // 행렬 합치기 행렬을 미리 곱해 놓은 뒤 정점변환에 사용한다. 속도가 더 빠르다. 성능상 행렬 3번 곱하는 것보다 1번 곱하는게 빨라 미리 합치는 것이 좋다. // 역행렬 반대로 공간 변환을 할 때 유용하다. // 툰 셰이딩이란? 비사실적 렌더링 기법이다. 칼같이 끊어진 2~3단계의 명암 표현이다. 계단식으로 명암을 표현하는 것이 핵심이다. 난반사광을 0.2단위로 무조건 올림하여 표현한다. // 월드공간 -> 지역공간으로 변환법 난반사광 계산시 월드행렬이 필요하다. 월드공간에서의 정점 위치와, 정점 법선을 만드는데 필요하였다. 따로 월드 행렬을 전역변수로 전달해줘야하나? 그래도 되지만, 1번만으로 똑같은 일이 가능하다. 핵심은 모든 변수가 동일 공간에 있어야한다이다. 빛의 위치를 지역공간으로 변환해주.. 2023. 3. 19.
[HLSL] 챕터5 - 디퓨즈 / 스페큘러매핑 // 디퓨즈맵 vs 스페큘러맵 난반사광에 적용하는 텍스쳐 디퓨즈맵 정반사광에 적용하는 텍스쳐 스페큘러맵 디퓨즈맵은 색상 표현에 사용한다. 각 픽셀이 반사하는 정도를 조절하는 용도로 스페큘러맵을 사용한다. 따라서 두 텍스쳐의 생김새가 많이 다르다. (스페큘러맵은 흑백으로 표현 가능) // 물체의 색에 영향을 미치는 또 다른 요소 조명의 색이다. 조명의 색은 전역변수로 쉽게 지정 가능하다. // 정리 난반사광 = 빛의 색상 X 난반사광의 양 X 디퓨즈맵의 값 정반사광 = 빛의 색상 X 정반사광의 양 X 스페큘러맵의 값 // 스페큘러맵에 대하여 스페큘러맵을 보라. 텍스쳐는 언제나 색상정보만을 가지지는 않는다. 각 픽셀이 반사하는 정반사광의 양을 담고 있다. 픽셀 수준에서 제어하고 싶은 변수가 있다면 텍스쳐 사.. 2023. 3. 18.
[HLSL] 챕터4 - 조명셰이더 기초 // 직접광 vs 간접광 직접광은 광원으로부터 직접 받는 빛이다. 다른 물체에 반사되어 들어오는 빛을 간접광이라고 한다. 간접광은 직접광보다 계산이 어렵다. 계산법 중 하나로 광선추적 기법이 있다. (ray tracing) 이 장에서는 직접광만 다룬다. // 조명모델 간접광까지도 다루는 조명모델을 전역조명모델이라고 한다. (global illumination model) 직접광만을 다루는 조명모델을 지역조명모델이라고 한다. (local illumination model) // 빛을 구성하는 요소 난반사광, 정반사광이 있다. (diffuse, specular) // 난반사광이란? 여러 방향으로 고르게 반사되는 빛을 말한다. 표면이 거칠수록 난반사가 심해진다. 입사광 중 일부는 난반사광이 되고, 일부는 정반.. 2023. 3. 18.
[HLSL] 챕터3 - 텍스쳐매핑 // 텍스쳐 매핑이란? 텍스쳐를 입히는 것을 텍스쳐매핑이라고 부른다. (texture mapping) // UV란? 3D 물체 구성요소는 삼각형이다. 삼각형 위 이미지를 입히려면 어떻게 해야하는가? 정점을 픽셀에 대응시켜준다. 값을 0~1 사이의 백분율로 표현한다. 이를 UV라고 부른다. 이렇게 다른 두 점을 대응 시키는 것을 매핑이라고 한다. 정점셰이더 float4x4 gWorldMatrix; float4x4 gViewMatrix; float4x4 gProjectionMatrix; struct VS_INPUT { float4 mPosition : POSITION; float2 mTexCoord : TEXCOORD0; }; struct VS_OUTPUT { float4 mPosition : POSITIO.. 2023. 3. 18.
[HLSL] 챕터2 - 진짜 쉬운 빨강셰이더 정점 셰이더 float4x4 gWorldMatrix; float4x4 gViewMatrix; float4x4 gProjectionMatrix; struct VS_INPUT { float4 mPosition : POSITION; }; struct VS_OUTPUT { float4 mPosition : POSITION; }; VS_OUTPUT vs_main(VS_INPUT Input) { VS_OUTPUT Output; Output.mPosition = mul(Input.mPosition, gWorldMatrix); Output.mPosition = mul(Output.mPosition, gViewMatrix); Output.mPosition = mul(Output.mPosition, gProjectionM.. 2023. 3. 18.
[HLSL] 챕터1 - 셰이더란? // 셰이더란? 셰이더란 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수이다. 쉽게 말해 픽셀들의 최종 색상 값 구하기이다. // 폴리곤이란? 삼각형의 집합이다. //정점셰이더의 가장 중요한 임무 정점들의 위치를 화면 좌표로 변환한다. 모든 정점을 하나씩 공간변환한다. (space transformation) // 3D 파이프라인의 존재이유 3차원 공간 물체를 모니터에 2차원으로 보여주기 위함이다. / 간략화한 파이프라인 정점 셰이더 -> 래스터라이저 -> 픽셀셰이더 -> 화면 // 래스터라이저란? 삼각형 안에 픽셀이 몇개나 들어가는가? 이를 계산하는 것이 래스터라이저이다. 픽셀셰이더 함수는 몇번이나 호출되는가? 래스터라이저가 찾아내는 픽셀수 만큼이다. // 셰이더 프로그래밍이란? 정점셰이더와 픽셀셰이.. 2023. 3. 18.
습관은 스스로에 대한 믿음을 변화시킨다. (아주 작은 습관의 힘 서평) # 소감 습관이 나를 만들고 내가 습관을 만드는 과정을 명확히 인식시켜주었다. 나는 군 제대후 돌이켜 보면, 1년마다 내가 바뀌었음을 항상 느껴왔다. 그 과정에는 수많은 습관들이 있었음을 깨닫는다. 지금도 나라는 사람을 규정하는 가장 근간이 되는 것에는 습관이 있음을 느낀다. 그 습관은 외부 환경, 좋은 자기계발 유튜브 영상, 이직, 새로운 사람과의 만남, 새로운 것을 공부하는 과정 등에서 자극을 받아 새로운 습관을 정착시켰기 때문이었다. 언제나 변화의 핵심은 습관에 있었다. 그 습관이 왜 중요한지에 대해 절절하게 깨닫게 해준 점, 너무도 명료하게 정리해준 점에 대해 감사한다. 더욱 꾸준히 습관을 행할 수 있게 되었다. # 메모 이하 내용은 책 내용 그대로를 옮긴 것이 아니라. 핵심만 추려 내 입맛에 맞.. 2023. 3. 18.
맥락의존적인 뇌(클루지 서평) 인간의 맥락의존적 성향이 생의 전반에 걸쳐 영향을 미친다는 것이 놀라웠다. 현재 결정과 전혀 관계없는 것들도 선택에 영향을 미친다니 주의해야함을 느낀다. 숙고체계보다 먼저 만들어진 선조체계가 뇌를 지배하는 현상은, 내가 평생 공부해야할 이유를 깨닫게 해주었다. 특히나 피곤하거나 감정적으로 취약할 때 심하다고 한다. 따라서 애초에 편향적인 인간의 뇌를 믿을 것이 아니라, 끊임없이 노력해서 균형을 맞춰야 조금이나마 합리적 판단을 할 수 있는 것이다. 마케팅이나 협상을 할때도 마찬가지라는 점이 놀라웠다. 일화적인 것 개인적인 것이 인간의 마음을 흔든다고 한다. 그래서 화장품에서 아빠의 마음으로 만든... 음식점에서 엄마의 마음으로 요리한.. 등이 잘 먹힘을 알 수 있었다. 또한 맥락 의존적 성향 때문에 최초에.. 2023. 3. 16.