PICO-8 팔레트와 픽셀 매핑 알고리즘

2025-09-11

이 코드는 PICO-8 게임 콘솔의 16색 팔레트를 정의하고, 여러 가지 색상 거리 계산 방법(유클리드 거리, 가중치가 있는 RGB 거리, HyAB 거리 및 그 변형)과 이미지 픽셀을 가장 가까운 팔레트 색상에 매핑하는 함수를 제공합니다. NumPy를 사용하여 색상 데이터를 효율적으로 처리하며, 사용자는 서로 다른 색상 매칭 전략에 맞게 거리 함수를 사용자 지정할 수 있습니다. 픽셀 아트 게임 개발 및 이미지 색상 양자화에 매우 유용합니다.

더 보기
게임

HyAB 거리 공식을 이용한 CIELAB 색상 양자화 개선

2025-07-10

본 논문은 기존 유클리드 거리를 대체하는 HyAB라는 새로운 거리 공식을 사용한 CIELAB 색상 양자화 개선 방법을 제시합니다. HyAB는 밝기에는 절대 차이를, 채도에는 유클리드 거리를 사용하여 실험을 통해 인간의 지각과 더 잘 일치함을 보여줍니다. 저자는 이를 k-means 알고리즘에 적용하고, L 성분의 평균값 계산을 중앙값 계산으로 대체하여 결과를 더욱 최적화했습니다. HyAB는 경우에 따라 이미지 품질을 향상시키지만, 전체 시스템 설계 및 디더링과 같은 후처리 기술이 최종 결과에 더 큰 영향을 미친다는 점을 저자는 지적합니다.

더 보기
개발

N64에서의 실시간 조명 및 노멀 매핑: 놀라운 리버스 엔지니어링 업적

2025-05-17

이 글에서는 닌텐도 64에서 실시간 조명 및 노멀 매핑을 구현하는 놀라운 기술을 자세히 설명합니다. 저자는 팔레트 텍스처와 CPU 측 셰이딩을 교묘하게 활용하여 N64의 하드웨어 제한을 우회하고 놀라울 정도로 인상적인 비주얼을 달성했습니다. 이 기술은 확산 및 노멀 정보를 공유 팔레트에 압축하고 런타임에 CPU를 통해 팔레트를 업데이트하여 조명 효과를 시뮬레이션하는 것을 포함합니다. 점광원이나 그림자 지원이 부족한 등 몇 가지 제한 사항이 있지만, 이 기술의 혁신적인 특성은 주목할 만하며, N64 플랫폼에서의 그래픽 렌더링에 새로운 가능성을 제시합니다.

더 보기
개발

Quake의 미리 계산된 가시성: PVS 알고리즘 분석

2025-01-10

이 글은 "PVS의 비밀 풀기" 시리즈의 첫 번째 글로, Quake 엔진이 미리 계산된 가시성 집합(PVS)을 사용하여 렌더링 성능을 어떻게 최적화했는지 탐구합니다. 90년대 중반, 소프트웨어 렌더링의 한계로 인해 오버드로우 감소가 매우 중요해졌습니다. Quake는 이 문제를 해결하기 위해 포털 시스템과 PVS를 사용했습니다. 포털은 세계를 셀로 나누고, 엔진은 카메라에서 보이는 셀과 포털을 통해 보이는 다른 셀만 렌더링합니다. PVS 알고리즘은 맵 컴파일 중에 각 셀에 대해 보이는 셀 목록을 미리 계산하여 런타임에서 복잡한 가시성 테스트를 피하고 렌더링 효율성을 크게 향상시킵니다. 이 글에서는 포털 정의, BSP 트리의 역할, 알고리즘의 세 단계(기본 가시성, 전체 가시성, 결과 해결)를 포함하여 PVS 알고리즘의 구현 세부 정보를 자세히 설명합니다.

더 보기