미니 3D
3D 소프트웨어 렌더링 자습서에는 성능 최적화가 없으며 주로 고정 파이프 라인 소프트웨어 렌더러를 작성하는 방법을 사람들에게 설명합니다. 기본 코드는 700 줄에 불과하지만 참새는 작고 모든 내부 장기가 있습니다.
【readme in English】
특성
- 단일 파일 : 소스 코드에는 하나의 mini3d.c 만 있으며 단일 파일은 모든 것을 구현하며 읽기 쉽습니다.
- 독립 편집 : 타사 라이브러리 의존성 없음, 복잡한 엔지니어링 디렉토리가 없습니다.
- 모델 표준 : 표준 D3D 좌표 모델, 왼손잡이 시스템 플러스 월드 / 뷰 / 프로젝션 3 행렬
- 자르기 구현 : 간단한 CVV 자르기
- 텍스처 지원 : 1024 x 1024 텍스처의 최대 지원
- 깊이 캐시 : 깊이 캐시를 사용하여 이미지를 결정하기 전과 후 이미지를 결정합니다.
- 원근도 맵 : 관점 텍스처 매핑 및 관점 색상 충전
- 에지 컴퓨팅 : 정확한 다각형 가장자리 커버리지 계산
- 간소화 된 구현 : 렌더링 엔진에는 700 개의 행이 있고 모듈은 명확하며 백본은 두드러집니다.
- 자세한 의견 : 기본 코드에 대한 자세한 설명
편집
- mingw : gcc -o3 mini3d.c -o mini3d.exe -lgdi32
- MSVC : Cl -o2 -nologo mini3d.c
- 컴파일 버전 : https://github.com/skywind3000/mini3d/releases
데모
텍스처 채우기 : render_state_texture
색상 충전 : Render_State_Color
와이어 프레임 드로잉 : render_state_wireframe
조명 및 2 차 선형 보간 (Mini3D에 친구가 추가 한 조명 효과의 스크린 샷)
기본 숙제
- 다시 제거하십시오
- 간단한 빛을 추가하십시오
- 더 많은 렌더링 모드를 제공합니다
- 2 차 선형 차이의 텍스처 판독 값을 구현합니다
고급 숙제
- 프로그램에 사용 된 모든 기하학적 지식을 추론하고 증명하십시오.
- 정점 컴퓨팅 성능을 최적화하십시오
- draw_scanline 성능을 최적화하십시오
- BMP/TGA 파일의 텍스처로드
- BSP 시나리오를로드하고 로밍을 구현하십시오
원칙 설명
- Wei Yixiao : Vertices 만 알려진 경우 OpenGL과 DirectX는 어떻게 픽셀 위치를 얻습니까?
- Wei Yixiao : 컴퓨터는 그래픽 카드에 어떻게 액세스합니까?
관련 프로젝트
- RENDERHELP : 프로그래밍 가능한 렌더링 파이프 라인을 지원하는 또 다른 간소화 된 소프트 렌더러 구현은 자세한 내용은 소개를 참조하십시오.
기부금을 환영합니다
귀하의 기부는이 튜토리얼을 가장 큰 긍정입니다. 기부금은 튜토리얼 문서 및 전설을 개선하는 데 사용될뿐만 아니라 더 흥미로운 자습서를 작성하는 데 도움이됩니다.
팔로우에 오신 것을 환영합니다
블로그 : https://skywind.me/blog
Zhihu : https://www.zhihu.com/people/skywind3000