19. Frustum Culling
- 절두체컬링이라고 불리며 최적화기법 중 하나이다. - 위 사진처럼 카메라가 찍는 범위 안의 물체들만 그려주고, 나머지는 스킵하는 기법 - 레스터라이저 단계에서 시계방향, 반시계방향인지에 따라 한쪽 면을 그려주지 않는 것 이 기법은 어떤 점이 평면을 기준으로 안인지, 밖인지를 검사하는 수식을 통해 구현할 수 있다. - ax + by + cz + d = 0 이 식은 어떤 평면을 이루는 점을 나타낸다. - 이 수식을 만족하면 그 점은 그 평면 안에 있다는 뜻 - 이 수식에서 n(a, b, c)는 노멀벡터(평면과 수직인 벡터)이고, d는 원점에서 평면까지의 거리이다. 왜 n(a, b, c)가 노멀벡터인가? - 임의의 두 점 A(X, Y, Z), B(X', Y', Z')으로 이루어진 벡터 AB가 있다면, - A..
2023. 1. 28.
16. Lighting 구현
Light 클래스 구현 - LightColor -> diffuse, ambient, specular 세 요소를 가진 구조체 - LightInfo -> LightColor, 위치, 방향, 라이트 타입, 범위, 각도를 가진 구조체 - LightParams -> 라이트의 개수, 패딩, LightInfo의 배열을 가진 구조체 -> 이 구조체는 오브젝트가 렌더링되기 전에 씬의 오브젝트를 다 긁어와서 -> 라이트를 다 LightInfo의 배열의 요소로 집어넣은 후 한번에 쉐이더에 전달됨 그러므로 쉐이더 코드에서 이 LightParams를 받아주게 되는데, 그러면 그 코드에서도 같은 형식을 맞춰줘야 함 struct LightColor { float4 diffuse; float4 ambient; float4 specu..
2023. 1. 26.