Trawling

개발·오픈소스 · 최신기사

개발 도구와 언어, 웹 기술과 오픈소스 프로젝트의 변화를 다룹니다.

Intel Poulsbo의 PowerVR SGX535를 역공학한 지 41일, 1280x800에서 GLXGEARS 실행

발행

독립 Mesa/Gallium 드라이버 SGX535-reMESA가 Intel Poulsbo의 PowerVR SGX535에서 GLXGEARS를 1280x800으로 실행하고, 검증된 600프레임 구간에서 평균 16.1345 FPS를 기록했습니다. 다만 현재 지원은 제한된 테스트 경로에 한정되며, 재현에 필요한 커널과 빌드 묶음도 모두 공개되지 않았습니다.

earcut보다 빠르게: 지도 폴리곤 374만 개를 489ms에 삼각분할하기

발행

지도 폴리곤을 삼각형으로 나누는 earstrip을 공개하고, 폴리곤 374만 개를 489ms에 처리했다고 보고합니다. 귀 자르기 알고리즘에 오목점 버킷, 분기 없는 검사, 삼각형 스트립 출력을 더해 속도를 높였으며, 구멍이 많은 폴리곤과 퇴화한 윤곽선은 Delaunay 방식으로 보완합니다.

Around The World 게임의 하늘을 더 아름답게 렌더링하기

발행

항해 탐험 게임 Around The World의 개발자가 Godot에서 구름의 다중 산란, 대기 산란, 수평선과 톤 매핑을 조정해 하늘을 다듬습니다. 직접 만든 Rust 광선 추적기로 기존 구름 조명 테이블의 한계를 확인하고, 행성과 달의 공전·자전을 엔진에서 모델링해 일출과 일몰을 계산합니다.

나는 소프트웨어 렌더링을 사랑합니다

발행

글쓴이는 DOS 게임을 당시의 CPU 기반 소프트웨어 렌더러로 실행하되, 현대 PC의 성능을 활용해 고해상도로 즐기는 경험을 설명합니다. 픽셀의 선명함과 제한된 색상 팔레트가 만드는 질감을 좋아하지만, 게임마다 하드웨어 렌더링이 더 나은 경우도 있다고 덧붙입니다.

Total Annihilation을 현대 컴퓨터에서 다시 구현한 오픈소스 엔진

발행

Nanolathe는 고전 RTS Total Annihilation을 현대 컴퓨터에서 실행하도록 재구현한 MIT 라이선스 엔진입니다. 브라우저에서 데모 미션 3개를 즐길 수 있고, 원본 게임 파일을 제공하면 네이티브 버전에서 캠페인과 온라인 대전도 지원합니다.

Comanche 지형 맵 역공학

발행

1992년 게임 Comanche의 지형 파일 8개를 분석해 색상 맵과 높이 맵을 BMP로 변환하는 과정을 설명합니다. 파일은 독자 형식이 아니라 앞부분의 서명만 바꾼 PCX였으며, 헤더와 RLE 데이터, 팔레트를 확인해 이를 검증합니다.

Rust-to-WGSL 변환기 `wgsl-rs` 베타 출시

발행

`wgsl-rs`가 Rust 코드를 WGSL 셰이더로 바꾸는 0.1.0-beta를 공개했습니다. 연산자 우선순위와 벡터 비교처럼 두 언어의 의미가 다른 부분을 보정하고, 런타임 IR에서 `wgpu` 파이프라인을 생성하도록 개선했습니다.

OpenDLSS: NVIDIA DLSS 5 신경 렌더링 네트워크의 Vulkan 재구현

발행

OpenDLSS는 NVIDIA DLSS 5의 신경 렌더링 네트워크를 Vulkan으로 재구현한 프로젝트입니다. 원본과 중간값까지 비트 단위로 일치한다고 밝히며, RTX 4070 SUPER에서 1080p 한 프레임을 7.8ms에 처리합니다. 모델 가중치는 제공하지 않으며, DLSS 업스케일링과는 별개의 네트워크입니다.

거리장 기반 솔리드 모델링 실험용 IDE, Halfspace

발행

Halfspace는 Fidget 기하 커널을 감싼 실험용 솔리드 모델링 IDE입니다. 거리장 값을 직접 시각화해 모델 오류를 살피고, Rust·egui·wgpu를 활용해 웹과 네이티브 환경에서 GPU 렌더링을 지원합니다.

SDF·MSDF·Slug 비교 — GPU 텍스트 렌더링 방식 선택하기

발행

비트맵 아틀라스부터 SDF, MSDF, 테셀레이션, Slug까지 GPU 글꼴 렌더링 방식의 품질과 비용을 비교합니다. Slug는 글리프 외곽선을 셰이더에서 직접 처리해 크기·원근 변화와 동적 텍스트에 강하지만, 작은 글자 가독성이나 셰이더 비용 등은 실제 환경에서 따져야 합니다.

Brainfuck으로 레이 트레이서를 만들기

발행

저자는 Brainfuck의 여덟 가지 명령만으로 레이 트레이서를 구현하며 고정소수점 연산과 산술·제어 흐름을 직접 구성합니다. 2,300만 바이트가 넘는 프로그램은 픽셀 하나를 그리는 데 약 1분이 걸렸고, 후속 JIT 개선으로 렌더링 결과도 얻었습니다.

우주 전체를 ASCII 문자로 그린 인터랙티브 지도

발행

gcdatlas.com은 행성부터 관측 가능한 우주까지를 ASCII 문자로 표현하는 인터랙티브 시각화입니다. 실제 천체의 위치와 크기를 반영하고, 카메라를 움직이거나 검색해 탐험할 수 있습니다. WebGL 2가 필요합니다.

깊이로 나누면 즉시 3D가 됩니다

발행

3D 카메라의 원리를 x와 y를 깊이 z로 나누는 원근 투영에서 출발해 설명합니다. 단순한 나눗셈이 perspective projection matrix와 전체 그래픽 파이프라인의 한 단계라는 점을 수식과 인터랙티브 예제로 보여줍니다.

Skia를 위한 컴파일러 스타일 드로잉 최적화 — 2D 래스터화 의미론으로 검증합니다

발행

Skia 같은 래스터화 라이브러리는 빠르지만 애플리케이션이 전달하는 연산 순서가 비효율적일 수 있습니다. 연구진은 Skia의 동작을 Lean으로 형식화한 μSkia를 만들고, Chrome에서 발견한 네 가지 최적화를 검증해 99개 웹사이트 프로그램에서 최대 32μs의 분석 비용으로 18.7% 속도 향상을 얻었습니다.

텍스처의 해부 — 플랫폼 간 변환에 숨겨진 메모리 레이아웃의 복잡성

발행

505 Games의 그래픽스 프로그래머가 자체 PC 게임 엔진을 콘솔로 포팅하며 텍스처 변환 코드를 작성하면서 체감한 복잡성을 해부한 글입니다. BC7 블록 압축, 스위즐을 통한 텍셀 순서, 밉(mip), 타일, 밉 테일(mip tail), 비연속 타일 매핑까지, 텍스처 하나가 메모리에 놓이기까지 거치는 계층 구조와 그 이유를 DirectX 12 관점에서 차례로 설명합니다.