- Notifications
You must be signed in to change notification settings - Fork508
3D Software Renderer in 700 Lines !!
License
NotificationsYou must be signed in to change notification settings
skywind3000/mini3d
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
3D软件渲染教程,并没有任何性能优化,主要向人说明如何写一个固定管线的软件渲染器。虽然主体代码只有 700行,但是麻雀虽小,五脏俱全。
- 单个文件:源代码只有一个 mini3d.c,单个文件实现所有内容,容易阅读。
- 独立编译:没有任何第三方库依赖,没有复杂的工程目录。
- 模型标准:标准 D3D 坐标模型,左手系加 WORLD / VIEW / PROJECTION 三矩阵
- 实现裁剪:简单 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
增加光照和二次线性插值(朋友给 Mini3D 增加的光照效果截图)
- 增加背面剔除
- 增加简单光照
- 提供更多渲染模式
- 实现二次线性差值的纹理读取
- 推导并证明程序中用到的所有几何知识
- 优化顶点计算性能
- 优化 draw_scanline 性能
- 从 BMP/TGA 文件加载纹理
- 载入 BSP 场景并实现漫游
- RenderHelp:另外一个支持可编程渲染管线的精简软渲染器实现,详细见介绍。
您的捐助是对该教程的最大肯定,欢迎使用支付宝手扫描上面的二维码,进行捐赠。捐赠款项将用于完善教程文档和图例,以及帮助我写出更多有意思的教程来。
欢迎关注
About
3D Software Renderer in 700 Lines !!
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.



