일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 메모리 누수
- Virtual Byte
- Cartoon Rendering
- C언어
- Toon Shader
- AppSW
- 개인 바이트
- 3d
- URP
- ColorGradingLutPass
- Three(Two) Tone Shading
- Windows Build
- 작업 집합
- Cell Look
- Private Bytes
- 가상 바이트
- 게임 수학
- VR
- OculusMotionVectorPass
- Specular
- Cell Shader
- 프로그래밍 기초
- URP로 변경
- ASW(Application SpaceWarp)
- 벡터
- Rim Light
- working set
- Today
- Total
목록게임 프로그래밍(학습 내용 정리)/게임 수학 (33)
WinCNT
Material capture ("MatCap") shaders are popular effects used in most 3D modeling tools: A material is captured by rendering a sphere into a texture. Models can be shaded by making a simple lookup into the reference texture. 텍스처 하나로 룩을 완전히 바꿀 수 있다 다시 말해, 카툰 렌더링이나 골드의 질감 같은 복잡한 연산도 저렴한 연산으로 상당한 질감을 나타낼 수 있다 특히 골드 같은 오브젝트의 질감을 전통적인 방법으로 표현하려고 하면 상당한 연산이 필요하다 n이 2일 때는 정반사, n이 낮을수록 굴절하게 되고 0이면 완전히 투과..
조명 처리 - 램버트의 코사인 법칙 Diffuse(확산광) Light 중에서도 Diffuse(확산광)은 시점과 무관하게 빛이 퍼져있는 것을 말한다 Nomal 벡터와 Light 벡터를 내적하면 구할 수 있다 ※시점과 연관이 있는 Light는 반사광이라고 한다 확산광을 버텍스 셰이더에서 연산하면 폴리곤 단위로 연산되므로 깍둑지는 현상이 발생한다 반면 픽셀 셰이더에서 연산을 하면 픽셀 단위로 연산되므로 깍둑지는 현상이 사라진다 현재(2022년)의 대부분의 게임은 픽셀 셰이더에서 확산광을 연산한다 법선 맵핑 노멀 벡터를 텍스처에 넣어보자! 텍스처의 RGB가 XYZ로 치환할 수 있기 때문에 RGB 벡터가 들어가 있는 텍스처 또한 만들 수 있다 노멀 맵 - RGB에 노멀 벡터가 들어가 있어서 붙여진 명칭 픽셀을 연..
3가지의 3대 행렬이 반드시 필요함 월드 행렬, 카메라 행렬, 투영 행렬 셰이더 안에서 프로그래머가 직접 연산을 하게 해줘야 한다 버텍스 셰이더, 픽셀 셰이더를 가장 많이 사용하고 최신작으로는 컴퓨팅 셰이더까지 존재한다 버텍스 셰이더로 공간을 연산하고 거기에 어떤 색으로 픽셀를 찍을 것인지 픽셀 셰이더로 정한다 다른 셰이더가 없어도 화면상에 표시할 수 있지만 버텍스 셰이더랑 픽셀 셰이더가 없으면 아예 그려지지 않는다 버텍스 셰이더는 월드 행렬, 카메라 행렬, 투영 행렬를 반드시 곱해야 한다 카툰 렌더링 꿀팁 ramp shader의 기법 중 하나 펙셀 셰이더는 if문(분기) 등의 효율이 떨어지는 코드는 피해야 한다 모니터의 모든 픽셀에 대해서 연산하니 엄청난 비용이 드는데 분기를 타게 되면 캐시 히트율이 ..
그레이 스케일 흑백이란? 명도 값만 존재함 RGB값이 같으면 흑백이 된다? D2D도 기반은 D3D의 쉐이더라고 하니 쉐이더를 중간에서 커스텀을 하면 속도 저하 없이 그레이 스케일도 구현할 수 있을 것이다 텍스처 샘플링 텍셀 - 텍스트 픽셀의 합성어 텍스처로부터 샘플링해서 2차원 이미지를 불러옴 float4 = RBGA 자료형(쉐이더의 자료형) 쉐이더에서는 0~255가 0~1의 값으로 바뀜 스위즐링 rrra, ggga, bbba 등으로 rbg값을 같게 해주면 색이 흑백이 된다 근데 미묘하게 밝기 값이 다르다 그럼 어떤 것을 써야 할까? 아니 어떠한 비율로 섞어야 가장 사람의 눈에 자연스러운 흑백이 될까? 이에 대한 것을 그레이 스케일이라고 한다 눈은 녹색 계열에 가장 민감하던가, 블루가 가장 민감도가 떨어..
PBR Physically Based Rendering Roughness와 Smoothness라는 개념이 등장함 (반대되는 개념일 뿐, 변수는 같다) 수식은 엄청나게 복잡하지만 고작 반사광을 정밀하게 표현하기 위한 것 하지만 정말 간지는 난다 BRDF BRDF : Bidirectional Reflectance Distribution Function (양방향 반사 분포 함수) BRDF는 Specular계산이 목적이다 매끈한 면과 거친 면의 반사 차이 왜 거친 면은 빛이 난반사 되는가 Microfacet(미세면) 분포 - 물리기반 조명모델에서는 물체의 표면을 미세한 면들의 집합이라고 생각 - 퐁 반사모델에서는 반사한 빛을 반영반사 지수의 강도로 희석 했습니다. spec = pow(dot(R,V),n) - 하..
광원의 요소(Legacy Model) 1. 주변광(Ambient Light) 특정한 방향이 없이 주변을 덮고 있는 빛을 의미한다 직접적인 광원과는 상관 없이 여러 가지 요소들에 부딪히고 반사되어 점차 방향을 잃어버린 빛의 형태에 해당한다(간접 광원) PBR에서는 IBL로 간접 광원 등을 구하기에 좀 더 사실적으로 구해지지만, 레거시 모델에서는 상수 값으로 계산에 덧셈되는 이상적인 빛 (정밀하게 계산하는 SSAO 등의 테크닉이 있긴 하다) 2. 확산광(Diffuse Light) 일정한 방향으로 빛이 들어와서 물체의 표면에서 여러 방향으로 분산되는 빛을 의미한다 시점(눈)과는 상관 없으며, 빛을 받는 정도에 비례해서 밝게 보인다 3. 반사광(Specular Light) 특정한 방향으로 유입되어 한 방향으로 ..
계층 구조 구현 방법 부모-자식 관계를 설정해서 변환 행렬을 누적해서 곱하는 것으로 계층 구조를 구현할 수 있다 인간의 몸은 트리 구조로 되어 있으므로 보통 인간의 계층 최상도(루트)는 골반, 혹은 허리로 지정하는 게 국룰이다 그래서 허리를 움직이면 모든 부분이 움직인다 (고급 기술인 IK - Inverse Kinematics는 다른 영역) 인간과 같은 관절체를 움질일 때는 결국 구현은 행렬의 곱이다 자식에서 부모로 누적해서 행렬을 곱하는 것이 계층 구조를 구현하는 방법이다 키프레임 애니메이션 블렌더나 맥스에서 애니메이션 트랙이라는 것이 존재한다 0번 트랙에 초기 동작(T자형 캐릭터 등)을 설정함 T자형이 기본인 이유는 리깅할 때 본이 영향을 미치는 영역을 명확하게 하기 위해서이다 예를 들어 100번째 ..
로컬 좌표계(= OpenGL에서는 모델 좌표계) 오브젝트의 좌표계 월드 좌표계 3차원 공간 좌표에 오브젝트들을 배치 오브젝트를 배치하기 위한 월드 행렬 각각의 오브젝트마다 필요하다 변환행렬(TM)이 없으면 각각의 오브젝트는 원점에 겹쳐서 보일 것이다 변환행렬을 각각의 오브젝트마다 적용해서 월드 좌표에 배치할 수 있다 월드 행렬이라고도 하고 Transform 행렬(TM)이라고도 한다 월드 좌표계로 보내기 위한 TM이 필요함 카메라 좌표계 월드 좌표계에 카메라 행렬을 곱하면 나오는 좌표계 그것을 보기 위한 카메라가 필요하다 (실제 렌더링에는 하나의 카메라만 작동) 카메라의 변환 행렬(View 행렬이라고도 함)은 월드 행렬의 역변환으로 구할 수 있다 (카메라 행렬 - 카메라를 원점으로 위치시키는 행렬) 카메라..
직교 좌표계 일반적으로 알고 있는 평범한 좌표계 3D 그래픽스에서도 일반적으로 사용된다 원기둥 좌표계 충돌 처리할 때 많이 사용되는 좌표계 구면 좌표계 충돌 처리할 때 많이 사용되는 좌표계 직교 좌표계로 변환하는 식 오브젝트에 대해서는 공통된 좌표계를 써야 해야 한다 그래야 같은 공간에 오브젝트들을 같이 올릴 수 있다 3대 변환 이동, 회전, 크기 변환 – 이동(Translation) 변환 – 회전(Rotation) 변환 - 전치행렬 행렬의 기저벡터가 직교일 때 전치행렬 = 역행렬이므로 연산량을 줄일 수 있다 변환 적용 D3D 방식으로 계산하면 v'은 다음과 같다 변환 결합(concatenation) 행렬의 특징은 결합법칙이 성립한다는 것이다. 즉, 다음 두 수식은 동치다 회전 변환 - 오일러 변환 회전..
각각의 오브젝트에 대해 월드 행렬이 따로 존재해야 한다 월드 행렬이란 각각의 오브젝트가 월드 좌표계에 위치하기 위해 사용하는 행렬 로컬 좌표계 월드 행렬 => 월드 좌표계 카메라 행렬 => 카메라 좌표계 투영 행렬 => 투영 좌표계 해상도 처리 => 뷰포트 좌표계 언프로젝션이란? 화면에서 클릭한 지점을 3차원 공간의 좌표로 바꾸는 것 뷰포트 좌표계에서 클릭 해상도에서 역산해서 투영좌표계 구하기 투영좌표계에 투영 행렬의 역행렬 => 카메라 좌표계 카메라 좌표계에 카메라 행렬의 역행렬 => 월드 좌표계 월드 좌표계에서 월드 행렬의 역행렬 => 로컬 좌표계 4차원 공간에서 연산 3차원 공간으로 표시 2차원 화면에 그리기 사용하는 것은 항상 정방행렬이다 단위 행렬 중요함 행렬이란 벡터들의 모임이라고 생각할 수 ..