Hacker News

I love software rendering

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

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

에디터 노트

글에서 좋아하는 대상은 CPU 렌더링의 계산 방식과 1990년대 게임에서 흔히 따라온 화면 스타일이 겹쳐 있습니다. 당시 소프트웨어 렌더러가 픽셀 단위 텍스처와 제한된 색상 팔레트를 자주 사용했다는 설명은 글의 게임 사례와 맞습니다. 댓글 지적처럼 선명한 텍스처나 계단식 색상 자체가 CPU 렌더링에만 가능한 것은 아닙니다. GPU에서도 필터링을 조절하고 셰이더로 비슷한 효과를 만들 수 있습니다. 따라서 이 글의 설득력은 소프트웨어 렌더링만의 시각적 우위를 입증하는 데 있지 않고, 실제 DOS 게임을 당시의 렌더러로 현대 하드웨어에서 실행하는 경험을 설명하는 데 있습니다. 고해상도에서는 CPU 성능이 제약이 되며, Shadow Warrior 사례가 그 한계를 보여줍니다. 다만 그 사례의 구체적인 병목이나 멀티코어 활용 여부는 제공된 자료만으로 확인되지 않습니다.

AI 요약

글쓴이는 Dell OptiPlex 380에서 DOS용 Quake를 소프트웨어 렌더러로 800x600 해상도, 초당 60프레임으로 실행한 경험을 소개합니다. 1990년대에는 낮은 해상도의 소프트웨어 렌더링을 쓰거나 3D 가속 카드를 구매해야 했지만, 이제는 빠른 PC에서 당시에는 감당하기 어려웠던 해상도로 게임을 실행할 수 있습니다.

소프트웨어 렌더링의 질감

소프트웨어 렌더링은 CPU가 프레임의 픽셀을 계산해 비디오 메모리에 기록하는 방식입니다. Doom, Duke Nukem 3D, Blood, 초기 Quake가 이 방식으로 작동합니다. 이후 GLQuake와 3dfx 모드를 지원하는 Blood, Tomb Raider 같은 게임은 렌더링을 그래픽 카드에 맡겼습니다.

글쓴이는 소프트웨어 렌더링의 질감을 선호합니다. 텍스처를 픽셀 단위로 표현해 점 하나하나가 선명하고, 256색 팔레트에 기반한 조명은 부드러운 그라데이션 대신 계단식 그림자를 만듭니다. 글쓴이는 이를 거칠고 음침한 분위기로 받아들입니다. 다만 게임에 따라 결과는 다릅니다. Blood는 3dfx 모드보다 VESA 소프트웨어 모드가 더 보기 좋았지만, Tomb Raider의 수중 장면은 가속 모드가 더 나았습니다. 따라서 소프트웨어 렌더링이 언제나 우월하다는 주장은 아닙니다.

2019년 게임 Ion Fury도 Build 엔진의 소프트웨어 렌더러를 제공합니다. 글쓴이는 이런 게임을 현대 PC에서 실행하면 당시 하드웨어의 성능 제약을 벗어나 고해상도로 즐길 수 있다고 설명합니다. 하지만 픽셀 수가 늘면 CPU 작업량도 커집니다. Rasteri가 Portwell RUBY-9719에서 실행한 사례에서는 3.3GHz 쿼드코어 Xeon도 Shadow Warrior를 1600x1200 해상도로 원활히 실행하기에는 부족했습니다.

DOS와 실제 하드웨어

Windows용 Doom·Quake 소스 포트나 Windows판 Ion Fury도 소프트웨어 렌더링을 지원합니다. 하지만 글쓴이가 원하는 것은 출시 당시의 DOS 게임을 실제 하드웨어에서 실행하는 경험입니다. DOSBox에서는 일부 게임이 원활하게 작동하지 않지만, 실제 하드웨어에서는 의도된 방식으로 작동한다고 설명합니다. 다만 최신 PC에서 DOS를 실행하려면 게임이 인식할 사운드 카드가 필요합니다. 글쓴이는 이 문제를 별도의 이야기로 남깁니다.

추천 게임으로는 고해상도 소프트웨어 모드의 Quake, Duke Nukem 3D와 Blood, 그리고 Screamer를 꼽습니다.

Hacker News 반응

  • @coppercrisp62 — 몇 년 전에 로그라이크용 소프트웨어 래스터라이저를 작게 만들었습니다. 가장 좋았던 점은 디버거로 전체 파이프라인을 따라갈 수 있다는 것이었습니다. 드라이버의 이상한 동작이나 셰이더 컴파일 문제도 없습니다. 픽셀이 잘못 나왔다면 수학 계산이 잘못된 겁니다.
  • @BugsJustFindMe — 제목은 사실 "나는 픽셀화된 텍스처가 좋습니다"여야 합니다. "3D 카드는 양선형 필터링으로 텍스처를 부드럽게 만들었다"고 했는데, 그 기능을 끄면 됩니다.
  • @delta_p_delta_x — 소프트웨어 렌더링을 좋아한다기보다 공간 안티앨리어싱을 끄는 걸 좋아하는 겁니다. 현대 게임에서도 끌 수 있습니다. 글에서 든 그림자와 텍스처 룩업 테이블도 셰이더에 테이블을 전달하면 GPU에서 구현할 수 있습니다.
  • @the_af — 이 글은 당시 소프트웨어 렌더러와 하드웨어 가속 그래픽이 실제 게임에서 어떻게 쓰였는지 말합니다. 원칙적으로 같은 효과를 GPU에서 재현할 수 있다는 점과 당시 게임에서 두 방식이 다르게 쓰였다는 점은 함께 성립합니다.
  • @ale42 — Shadow Warrior에 3.3GHz 쿼드코어 Xeon도 부족했다는 인용은 납득하기 어렵습니다. DOS 게임이라면 세 코어는 놀고 있었을 텐데, 병목이 따로 있었던 것 아닌가요?
  • @0x0203 — 당시 CRT 화면도 기억해야 합니다. 지금 보는 선명한 픽셀 질감은 당시 CRT에서 조금 더 흐릿하게 보였을 겁니다.
  • @ibackstrom — 게임이 아니라 시각효과 작업에서는 CPU 렌더링을 여전히 좋아합니다. 안정적이고 아주 큰 장면을 다룰 수 있습니다. GPU는 빠르지만 큰 장면을 렌더링하기 어렵고 CPU 렌더링의 결과가 훨씬 보기 좋습니다.
  • @dahart — 왜 그렇게 생각하는지 궁금합니다. 영화와 시각효과 분야에서는 GPU와 CPU가 같은 프로그래머블 셰이더를 쓰므로 결과와 기능이 같습니다. 오늘날 GPU는 메모리 밖의 데이터를 스트리밍하고 캐시할 수 있으며, 대형 장면을 GPU로 렌더링하는 스튜디오도 많습니다.

원문: James F. Mackenzie / 번역·요약: Trawling