Skip to content

sheepooo/Python-Renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PYTHON渲染器

把 skywind3000 前辈的 mini3d 项目(https://github.com/skywind3000/mini3d/releases )改写成python版,并增加了大量注释(主要是关于实现原理的)。源代码中所需知识都在《3D游戏编程大师技巧》里有详细解释。

用python是因为不想搞windows的函数(有现成的窗口库),而且开发简单,可以专注于渲染器本身的功能。但是写完发现python渲染效率极低,所以这个只能用于学习渲染逻辑,不具有实用意义。

以后有空会完成作业部分。

以下来自skywind3000:

特性

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

基础作业

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

进阶作业

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

About

A python 3D Renderer! 3D渲染器

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages