All Projects → skywind3000 → Mini3d

skywind3000 / Mini3d

Licence: mit
3D Software Renderer in 700 Lines !!

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Mini3d

Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+4.77%)
Mutual labels:  opengl, graphics, 3d, picture
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+182.42%)
Mutual labels:  game-engine, opengl, graphics, 3d
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+792.12%)
Mutual labels:  opengl, graphics, 3d, picture
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (-62.58%)
Mutual labels:  opengl, graphics, 3d, picture
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-86.29%)
Mutual labels:  game-engine, opengl, graphics, 3d
Ava
A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.
Stars: ✭ 287 (-78.26%)
Mutual labels:  game-engine, opengl, 3d
Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (-74.92%)
Mutual labels:  game-engine, opengl, 3d
Overload
3D Game engine with editor
Stars: ✭ 335 (-74.62%)
Mutual labels:  game-engine, opengl, graphics
Etengine
Realtime 3D Game-Engine with a focus on space sim. Written in C++ 14
Stars: ✭ 408 (-69.09%)
Mutual labels:  game-engine, opengl, 3d
Engine
A basic cross-platform 3D game engine
Stars: ✭ 208 (-84.24%)
Mutual labels:  game-engine, opengl, 3d
Beam
✨ Expressive WebGL
Stars: ✭ 383 (-70.98%)
Mutual labels:  graphics, 3d, renderer
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+786.21%)
Mutual labels:  opengl, graphics, 3d
Graphics Algorithm
3D图形学算法Code。包括软渲染、光线追踪、PBR等等~
Stars: ✭ 67 (-94.92%)
Mutual labels:  opengl, graphics, renderer
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+120.15%)
Mutual labels:  game-engine, opengl, graphics
Polymer
🎨 graphics + interaction engine
Stars: ✭ 243 (-81.59%)
Mutual labels:  game-engine, opengl, graphics
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (-69.7%)
Mutual labels:  game-engine, graphics, 3d
Worldwindjava
The NASA WorldWind Java SDK (WWJ) is for building cross-platform 3D geospatial desktop applications in Java.
Stars: ✭ 526 (-60.15%)
Mutual labels:  opengl, graphics, 3d
Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (-59.55%)
Mutual labels:  opengl, graphics, 3d
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+73.03%)
Mutual labels:  game-engine, opengl, graphics
Anki 3d Engine
AnKi 3D Engine - Vulkan backend, modern renderer, scripting, physics and more
Stars: ✭ 688 (-47.88%)
Mutual labels:  game-engine, graphics, 3d

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].