mini3d

3D软件渲染引擎700行!! (3D Software Render Engine in 700 Lines !!)

Github星跟踪图

mini3d

3D软件渲染教程,并没有任何性能优化,主要向人说明如何写一个固定管线的软件渲染器。虽然主体代码只有 700行,但是麻雀虽小,五脏俱全。

特性

  • 单个文件:源代码只有一个 mini3d.c,单个文件实现所有内容,容易阅读。
  • 独立编译:没有任何第三方库依赖,没有复杂的工程目录。
  • 模型标准:标准 D3D 坐标模型,左手系加 WORLD / VIEW / PROJECTION 三矩阵
  • 实现裁剪:简单 CVV 裁剪
  • 纹理支持:最大支持 1024 x 1024 的纹理
  • 深度缓存:使用深度缓存判断图像前后
  • 透视贴图:透视纹理映射以及透视色彩填充
  • 边缘计算:精确的多边形边缘覆盖计算
  • 实现精简:渲染引擎只有 700行,模块清晰,主干突出。
  • 详细注释:主要代码详细注释

编译

演示

纹理填充:RENDER_STATE_TEXTURE

色彩填充:RENDER_STATE_COLOR

线框绘制:RENDER_STATE_WIREFRAME

增加光照和二次线性插值(朋友给 Mini3D 增加的光照效果截图)

基础作业

  • 增加背面剔除
  • 增加简单光照
  • 提供更多渲染模式
  • 实现二次线性差值的纹理读取

进阶作业

  • 推导并证明程序中用到的所有几何知识
  • 优化顶点计算性能
  • 优化 draw_scanline 性能
  • 从 BMP/TGA 文件加载纹理
  • 载入 BSP 场景并实现漫游

欢迎捐赠

您的捐助是对该教程的最大肯定,欢迎使用支付宝手扫描上面的二维码,进行捐赠。捐赠款项将用于完善教程文档和图例,以及帮助我写出更多有意思的教程来。

欢迎关注

blog: http://www.skywind.me

zhihu: https://www.zhihu.com/people/skywind3000

主要指标

概览
名称与所有者skywind3000/mini3d
主编程语言C
编程语言C (语言数: 1)
平台Windows
许可证MIT License
所有者活动
创建于2015-08-09 16:50:34
推送于2024-09-23 16:16:14
最后一次提交2024-09-24 00:15:55
发布数3
最新版本名称v1.2 (发布于 2015-08-12 15:00:03)
第一版名称v1.0 (发布于 2015-08-11 00:03:06)
用户参与
星数2.3k
关注者数99
派生数506
提交数49
已启用问题?
问题数6
打开的问题数3
拉请求数3
打开的拉请求数2
关闭的拉请求数3
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?