2P by neo 7달전 | favorite | 댓글 1개

비디오 게임에서 LUT를 사용하는 방법과 당신도 사용할 수 있는 방법

  • 비디오 게임에서는 LUT(Look-up-tables)를 사용하여 창의적인 기술을 활용함.
  • WebGL을 사용한 예시를 통해 실시간으로 비디오 데이터를 조작하는 방법을 설명함.
  • 사용자는 자신의 비디오나 웹캠을 사용하여 실습할 수 있음.

설정

  • 열화상 카메라로 촬영한 흑백 비디오를 시작점으로 사용함.
  • WebGL을 통해 GPU에 비디오를 업로드하고 쉐이더를 사용하여 원본과 동일하게 표시함.

채색

  • 픽셀 당 색상을 결정하는 'Fragment Shader'를 사용하여 비디오에 색상을 입힘.
  • 오렌지 색상을 입히는 간단한 예제를 통해 색상 조작 방법을 설명함.

성능 비용: 제로

  • 채색에 의한 성능 영향은 거의 없으며, GPU의 'latency hiding'으로 인해 무시할 수 있는 수준임.

Valve Software의 채색 사용

  • Valve Software의 게임 'Left 4 Dead'에서는 차량 모델에 채색을 적용하여 다양한 변형을 생성함.

LUT - 간단하지만 강력함

  • LUT를 사용하여 색상 범위를 정의하고 변화시키는 방법을 설명함.

소박한 1D LUT

  • 1D LUT는 색상 배열로, 그레이스케일 비디오를 RGB로 변환하는 데 사용됨.
  • 다양한 크기의 1D LUT를 사용하여 색상 변환을 시연함.

많은 색상들

  • matplotlib이 지원하는 모든 색상 맵을 1D LUT로 제공함.
  • 'Perceptually Uniform' 색상 맵을 사용하는 것이 권장됨.

여전히 성능 비용은 없는가?

  • 작은 1D LUT의 경우 성능에 큰 영향을 주지 않으며, GPU의 캐시를 효율적으로 사용함.

좀비를 위한 다양성

  • 'Left 4 Dead 2'에서는 LUT를 사용하여 좀비의 다양한 색상 변형을 생성함.

계산 사전 계산

  • 1D LUT를 사용하여 고비용의 계산을 캐시하고, 예를 들어 감마 보정을 빠르게 수행함.

강력한 3D LUT

  • 3D LUT는 RGB 공간 전체를 하나의 큐브로 표현하여 색상을 재매핑함.

설정

  • Panasonic GH6에서 촬영한 로그 프로파일 비디오를 사용하여 3D LUT 처리를 설명함.

간단한 수정

  • DaVinci Resolve를 사용하여 색상 보정을 적용하고 LUT를 다시 내보내는 과정을 설명함.

Left 4 Dead의 3D LUT 사용

  • 게임 산업에서 널리 알려진 워크플로우로, 외부 도구를 사용하여 게임 색상을 스타일링함.

고급 모험

  • DaVinci Resolve와 같은 색상 그레이딩 도구를 사용하여 복잡한 색상 변환을 LUT로 내보내는 방법을 설명함.

기타 사용법

  • LUT의 다른 사용 사례로, Game Boy Advanced에서 Tomb Raider를 포팅하는 데 사용된 LUT를 소개함.

GN⁺의 의견

  • LUT는 비디오 게임과 그래픽 프로그래밍에서 색상 조작과 최적화를 위한 강력한 도구임. 이 기술은 실시간 렌더링에서 성능 저하 없이 다양한 시각적 효과를 제공할 수 있어 개발자와 아티스트 모두에게 유용함.
  • LUT를 사용할 때는 색상의 정확성과 데이터의 시각적 표현을 고려해야 함. 특히 색맹을 고려한 'Perceptually Uniform' 색상 맵의 중요성을 이해하는 것이 중요함.
  • 이 기술은 색상 보정, 시각적 스타일링, 데이터 시각화 등 다양한 분야에서 응용 가능함. 예를 들어, 영화 산업에서 색상 그레이딩에 사용되는 LUT와 유사한 기술을 게임 개발에 적용할 수 있음.
  • LUT의 크기와 정밀도는 사용 목적과 플랫폼에 따라 달라질 수 있으며, 이에 대한 이해가 필요함. 예를 들어, 영화 산업에서는 33³px 크기의 LUT가 표준이지만, 게임이나 다른 그래픽 애플리케이션에서는 다른 크기가 필요할 수 있음.
  • 이 기술을 사용할 때는 색상의 정확한 표현과 성능 최적화 사이의 균형을 찾는 것이 중요함. LUT를 효과적으로 사용하기 위해서는 색상 이론과 그래픽 프로그래밍에 대한 깊은 이해가 필요함.
Hacker News 의견
  • 룩업 테이블(LUT)을 사용하여 효과를 구현하는 방법에 대한 설명

    • 플레이어 주변의 원형 조명 세부 정보를 저장하는 큰 룩업 테이블과 배경 행의 순서를 무작위로 정하는 두 번째 룩업 테이블이 사용됨.
    • 화면의 1/20만을 갱신할 수 있지만, 무작위 순서를 통해 부드러운 가장자리 효과를 내고 래스터 스캔을 숨길 수 있음.
    • 실시간으로 계산하기에는 너무 느린 부분을 룩업 테이블로 처리하여 행이 업데이트되지 않는 것을 방지함.
  • 텍스처 터널 효과를 위한 룩업 테이블 사용 경험 공유

    • 화면상의 각 픽셀에 대해 중심으로부터의 각도와 거리를 알 수 있는 룩업 테이블을 사용함.
    • 3D 지오메트리가 있는 터널을 이동하는 것처럼 보이지만, 비용이 적게 들어 Pico에서도 구현 가능함.
    • 게임 'Stardust'가 이 효과를 사용했다고 생각했지만, 실제로는 반복되는 6프레임 애니메이션을 배경으로 사용함.
  • 'The Legend of Zelda: Wind Waker' 게임이 룩업 테이블을 사용하여 독특한 비주얼을 구현한 방법에 대한 비디오 링크 제공

    • 'Breath of the Wild'과 'Tears of the Kingdom'도 같은 기술을 사용함.
  • 룩업 테이블에 대한 글을 제출한 저자가 질문에 답할 준비가 되어 있음을 알림.

  • 레트로 게임 개발에서 룩업 테이블의 중요성에 대한 설명

    • 과거에는 메모리 속도가 빨랐지만 프로세서가 느려서 가능한 많은 계산을 룩업 테이블에 담아냄.
    • 룩업 테이블을 더 잘 활용할수록 더 화려한 게임을 만들 수 있었음.
  • NES 홈브루 커뮤니티에서 룩업 테이블을 사용한 놀라운 물리 효과를 구현한 게임 'Bobl'에 대한 경험 공유

    • 시스템이 실시간으로 계산할 수 있는 것보다 훨씬 복잡해 보이는 효과를 룩업 테이블로 달성함.
  • SNES 버전 'Doom' 포트가 룩업 테이블을 사용하여 삼각함수를 계산했던 방법에 대한 팟캐스트 에피소드 공유

    • SNES에는 그래픽 프로세서가 없어서 룩업 테이블을 사용하여 계산함.
  • 동적 프로그래밍에 대한 지식을 가진 사람들이 캐싱과 메모이제이션을 혼동하는 것에 대한 불만 표현

    • 메모이제이션은 지역 공유 상태, 캐싱은 전역 공유 상태로 서로 다른 문제를 가짐.
    • 캐싱은 미래에 필요할 것을 기대하는 것이고, 메모이제이션은 즉시 필요할 것을 알고 있는 상태임.
    • 타뷸레이션은 공통 부분 문제를 미리 찾아 해결하는 것으로, 룩업 테이블은 고정 크기의 타뷸레이션임.
  • 룩업 테이블을 다루는 맥 앱 'Lattice'에 대한 정보 공유

  • 룩업 테이블을 사용한 다양한 효과들의 예시 목록 제공

    • 대기 산란, 스프라이트 색조 변경, 야간 투시경, 열상 카메라, 흑백 비디오 피드 효과, 글리치 효과, 높이맵 음영 처리, 우주선 배기 플럼의 알파 점 요소, 웹사이트 방문자의 마우스 체류 열지도, 결정 효과, 원시 색 공간에서의 포스트 프로세싱 색상화 등.
    • 룩업 테이블은 알려진 값들의 배열을 시각화하는 것으로, 매우 유용함.