다이렉트x 3

Screen Space Light Shaft - 화면 공간 라이트 섀프트 (2)

저번에 이어서 오늘은 3번 렌더 타겟에 기록되는 마스킹 데이터를 렌더링하는 SunLightShader 를 볼 계획이다. 내가 사용하는 방식에서는 현재 픽셀 위치에서 광원의 방향으로 이동하며 샘플링을 하되, 이 샘플링이 원본 텍스쳐에서 이루어지면 안 된다. 그렇게 하게 되면 라이트 섀프트라기 보다는 블러 효과에 가까운 모양새가 된다. 이것도 결국 주변 텍셀을 샘플링하여 적절한 가중치를 더해 픽셀을 바꾸는 것이기에 블러와 그 궤가 같다. 그래서 렌더 타겟을 따로 만들어 해당 렌더 타겟에 어느 부분이 광원인지나 어느 부분은 차폐가 되는 지 등의 여부를 기록하고 이렇게 만든 텍스쳐에서 샘플링을 진행한다. 이를 위한 첫번째 단계가 SunLigthShader가 되겠다. 선언부는 위와 같은데, 다른 쉐이더 클래스랑 ..

Rampage 2023.08.22

Screen Space Light Shaft - 화면 공간 라이트 섀프트 (1)

저번까지 디테일 맵을 이용해 터레인 위에 디테일을 추가하는 것을 했었다. 그리고 이제부턴 저번에 예고한대로 화면 공간에서의 라이트 섀프트를 구현해보겠다. 우선 어떤 효과를 구현하기 위해선 이에 대한 자료 조사는 필수다. 그러므로 먼저 라이트 섀프트의 개념과 구현을 위한 이론적인 부분을 살펴보자. 언리얼 엔진 5.0 공식 문서에 따르면 라이트 섀프트를 다음과 같이 설명한다. "Light Shaft (라이트 섀프트)는 디렉셔널 라이트에 의해 생성 가능한 것으로, 현실에서 구름 사이를 뚫고 나오는 빛줄기에 대한 시뮬레이션입니다. 어느 씬에도 입체감과 현실감을 더해줄 수 있는 효과입니다." 보이는 것과 같이 직선 광(태양광)이 사물에 의해 가려질 때 그 사이사이로 빛줄기가 새어 나오는 현상이 라이트 섀프트가 되..

Rampage 2023.08.10

Terrain - 지형 (1)

어떤 게임이든 기본적으로 반드시 필요한 요소를 말하자면 그중에서도 지형을 빼놓을 수 없을 것이다. 실제 사용자가 조작하게 될 캐릭터나 사용자 인터페이스 등 사실 중요한 것들은 차고 넘치는 것이 현실이지만 그래도 발 디딜 땅 정도는 있어야 하지 않을까? 그래서 이번에 만들 것은 Terrain(지형)이다. 고로 Terrain 구현을 진행해 볼 것인데....... 사실 저번 학기 동안에 만들었던 터레인이 이미 있다. 보는 것처럼 대충 산봉우리 몇 개 보이고, 물도 있고, 저 멀리 보면 잔디도 보이고, 스카이 박스도 돼있고, 이상한 헬기들도 보이고.... 아무튼 이것저것 보인다. 이것 자체로도 어느정도 써먹을 수 있는 지형이라 말할 수는 있겠으나 엄연히 말하자면 이걸론 부족하다. 게임 월드라 부르기엔 아무래도 ..

Rampage 2023.01.28