DOS 소프트웨어 렌더링의 선명하고 거친 화면을 다시 보자는 글, 고성능 PC에서 Quake를 고해상도로 돌린 후기
- 저자는 Dell OptiPlex 380에서 Quake의 소프트웨어 렌더러를 800×600 해상도로 고정 60fps에 구동함
- 소프트웨어 렌더링은 3D 카드 없이 CPU가 프레임의 모든 픽셀을 계산해 비디오 메모리에 직접 쓰는 방식이고, Doom, Duke Nukem 3D, Blood, 원본 Quake가 이 방식을 씀
- 텍스처가 바이리니어 필터링 없이 픽셀 단위로 샘플링돼 텍셀이 선명한 사각형으로 남고, 256색 팔레트 조명 테이블 때문에 그림자가 계단식으로 끊겨 거친 질감이 생김
- Blood는 3dfx 모드가 더 빨랐지만 VESA 소프트웨어 모드가 더 보기 좋았고, Tomb Raider는 수중 장면이 가속 모드에서 더 나았음
- Portwell RUBY-9719 영상에서 3.3GHz 쿼드코어 Xeon으로도 1600×1200에서 Shadow Warrior를 돌리기 빠듯했고, Build 엔진 게임은 고해상도에서 CPU 성능을 많이 요구함
Hacker News opinions
디버거로 래스터라이저 파이프라인을 한 단계씩 따라가는 게 제일 좋았음. 드라이버 문제나 셰이더 컴파일 꼬임이 없어서 픽셀이 틀리면 그냥 내 수학이 틀린 거임.
bilinear가 싫으면 끄면 되는 거임. 이건 소프트웨어 렌더링이 아니라 공간 안티앨리어싱을 끈 거고, 요즘 게임도 다 끌 수 있음.
UE5 Nanite는 소프트웨어 렌더링 쓰는데 픽셀 깨짐도 없고 고사양 PC도 DOS도 필요 없더라.
Nanite 래스터라이징도 GPU에서 돌아가는 거라 고정 기능 파이프라인 대신 셰이더로 구현한 것임. 그래서 소프트웨어 렌더링이라는 말이 점점 애매해짐.
CRT 시절에도 320x200 같은 해상도면 픽셀이 엄청 크게 보여서 블렌딩이 거의 안 됐음. 그때 PC 모니터는 TV보다 이미 선명했음.
소프트웨어 렌더링이 DOS에서만 되는 건 아님. Windows에서 Half-Life 돌릴 때도 썼고, 지금도 그런 엔진들은 최신 OS에서 돌아감.
소프트웨어 렌더링이 밀려난 건 z-buffer 래스터라이제이션이 워낙 병렬이라 하드웨어 구현이 훨씬 유리해서임.
TAA는 게이머들 사이에서 뭉개진다고 욕 많이 먹는데, TSR은 더 선명하고 계단 현상도 잘 잡더라.