mini3d

3D Software Renderer in 700 Lines !!
授权协议 MIT License
开发语言 C/C++
所属分类 游戏/娱乐、 游戏模拟器/工具/引擎
软件类型 开源软件
地区 不详
投 递 者 郑俊弼
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

  • magento 赠品 本月在Opensource.com上,我们在入门系列中重点介绍了参与开源社区的多种方法。 本着鼓励我们社区中的更多成员投入开源的精神,我们很高兴地宣布《入门赠品》,我们将在其中奖励一名幸运的Opensource.com社区成员LulzBot Mini 3D打印机 ! 对于希望尝试使用开源软件和硬件的新制造商而言,Mini是理想的3D打印机。 它可以打印尺寸最大为152x152

相关阅读

相关文章

相关问答

相关文档