Repolode
ssloy

ssloy/tinyrenderer

외부 라이브러리 없이 순수 C++ 약 500줄로 소프트웨어 렌더러를 만들며 3D 렌더링을 단계별로 배우는 강좌입니다.

스타
24,450
포크
2,311
열린 이슈
4
마지막 커밋
3개월 전

어떤 프로젝트인가요?

Tinyrenderer는 OpenGL, Vulkan, Metal, DirectX 같은 3D 그래픽 API가 내부적으로 어떻게 동작하는지 알려주는 튜토리얼 시리즈입니다. GPU API를 호출하는 대신 소프트웨어만으로 간소화된 렌더러를 처음부터 만들며, 선 그리기, 삼각형 래스터화, 바리센트릭 좌표, z-buffer, 카메라 처리, 셰이딩, 텍스처 및 노멀 매핑, 섀도 매핑, 앰비언트 오클루전을 다룹니다.

코드는 외부 그래픽 의존성 없이 C++ 약 500줄로 의도적으로 작게 구성되어 있습니다. 보조 도구는 TGA 이미지 파일을 읽고 쓰는 단일 클래스뿐입니다. 이 프로젝트는 학습 자료로, 핵심 콘텐츠인 강좌 노트에서 각 단계를 순서대로 설명하며, 소스 코드는 라이브러리로 재사용하기보다 학습을 위해 살펴보도록 만들어졌습니다.

이 프로그램은 텍스처가 포함된 삼각형 메시 3D 모델을 입력받아 렌더링된 이미지를 출력하며, 그래픽 인터페이스는 없습니다. CMake로 빌드합니다.

핵심 기능

  • 01C++ 약 500줄로 소프트웨어 렌더러를 처음부터 만듭니다.
  • 02래스터화, z-buffer, 카메라 설정, 셰이딩을 단계별로 다룹니다.
  • 03텍스처, 노멀 매핑, 섀도 매핑, 앰비언트 오클루전 주제를 다룹니다.
  • 04외부 그래픽 라이브러리를 사용하지 않고, 작은 TGA 이미지 읽기·쓰기 도구만 사용합니다.
  • 05번호가 매겨진 강좌 문서 시리즈로 구성되어 있습니다.

활용 사례

  • OpenGL이나 Vulkan 파이프라인이 내부적으로 어떻게 동작하는지 학습합니다.
  • 래스터화 기초를 다루는 그래픽스 강의나 워크숍에서 활용합니다.
  • GPU API를 사용하기 전에 바리센트릭 좌표, z-buffer, 노멀 매핑을 이해합니다.

빠른 시작

  1. 1

    저장소를 클론합니다

    git clone https://github.com/ssloy/tinyrenderer.git
  2. 2

    프로젝트 디렉터리로 이동합니다

    cd tinyrenderer
  3. 3

    CMake로 구성하고 빌드합니다

    cmake -Bbuild && cmake --build build -j
  4. 4

    샘플 모델에서 렌더러를 실행합니다. 출력은 framebuffer.tga에 저장됩니다

    build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj

사용 전 알아둘 점

  • 이 코드는 학습용 연습 과제이며, README에는 직접 사용하지 말라고 적혀 있습니다.
  • 소프트웨어 렌더러이므로 GPU 애플리케이션을 작성하는 방법을 보여 주지는 않습니다.
  • 라이선스가 명확하게 지정되어 있지 않습니다(NOASSERTION).

토픽

자주 묻는 질문

tinyrenderer은(는) 무엇인가요?
외부 라이브러리 없이 순수 C++ 약 500줄로 소프트웨어 렌더러를 만들며 3D 렌더링을 단계별로 배우는 강좌입니다. Tinyrenderer는 OpenGL, Vulkan, Metal, DirectX 같은 3D 그래픽 API가 내부적으로 어떻게 동작하는지 알려주는 튜토리얼 시리즈입니다. GPU API를 호출하는 대신 소프트웨어만으로 간소화된 렌더러를 처음부터 만들며, 선 그리기, 삼각형 래스터화, 바리센트릭 좌표, z-buffer, 카메라 처리, 셰이딩, 텍스처 및 노멀 매핑, 섀도 매핑, 앰비언트 오클루전을 다룹니다.
tinyrenderer은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
tinyrenderer은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
tinyrenderer은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. tinyrenderer의 마지막 커밋은 2026년 7월 29일입니다.
tinyrenderer은(는) 어디에 사용할 수 있나요?
OpenGL이나 Vulkan 파이프라인이 내부적으로 어떻게 동작하는지 학습합니다. 래스터화 기초를 다루는 그래픽스 강의나 워크숍에서 활용합니다. GPU API를 사용하기 전에 바리센트릭 좌표, z-buffer, 노멀 매핑을 이해합니다.
tinyrenderer는 어떻게 설치하나요?
저장소를 클론합니다: git clone https://github.com/ssloy/tinyrenderer.git 프로젝트 디렉터리로 이동합니다: cd tinyrenderer CMake로 구성하고 빌드합니다: cmake -Bbuild && cmake --build build -j 샘플 모델에서 렌더러를 실행합니다. 출력은 framebuffer.tga에 저장됩니다: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
tinyrenderer은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/ssloy/tinyrenderer

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트