Giter Club home page Giter Club logo

tinyengine's Introduction

大规模重构后,shader效果编写更加灵活,完整加载obj模型,渲染管线更接近标准。只差法线贴图没有加了!

经过两天debug,终于发现了问题,原来是计算重心坐标没有考虑透视插值,这个问题解决后,phong光照的问题也解决了。效果比以前更加自然:)

tinyEngine帮助文档

工程目录:

  • external:依赖库文件
  • project:多平台项目工程以及跟平台相关代码
  • resources:核心代码和资源

依赖库:

跨平台的多媒体开发函数库,非常好用,cocos2dx也使用到了它哦

版本是SDL2-2.0.5,我已经交叉编译成了静态库,可以直接使用

跨平台的png格式读取处理库,如果静态库有问题,可以下载源代码下载地址,自行编译

多平台支持:

目前支持mac、ios、windows三个平台,android就暂时不弄了,过程太繁琐。

(windows的release好像有问题)

下面是重点!!

想要通过该工程学习光栅化渲染的同学,请务必备好以下两本书籍:

  • 《3D数学基础:图形与游戏开发》(建议认真看完)
  • 《3D游戏编程大师技巧》上下册

还有其他一些其他资料可以辅助理解

《[计算机图形学].(美国)Peter.Shirley》

learnopengl-cn一个学习opengl的网站,讲解光影部分挺好

代码简介

tiny3D.h

核心的数学算法和光栅化渲染实现,掌握了它可以说你就彻底弄明白了光栅化渲染

数学部分,全部是重点,特别是矩阵操作等,透视矩阵和旋转矩阵,是重中之重。

光栅化部分,为了实现phong光照加入了重心坐标计算,可能还有更好的实现方法,有能力的同学可以重构之。

main.c

非核心代码,包括sdl和纹理处理,有能力的同学可以自己实现并移植到任何平台

关于学习方法

因为我也是通过参考大神韦易笑的代码来学习图形学的。这里我可以提供一些我的学习经验

首先要端正自己的学习态度,不要认为软渲染有多难,看整个实现也不过1000行左右代码,当然也不要被这微小的代码量所迷惑,量少就意味每一行代码每一个函数都潜藏着巨大的知识量。如果有不明白的,一定要查阅上面提到的两本书,比如透视和旋转的算法公式,最好都要弄明白推导过程。然后自己实现一遍代码,通过实践加深对原理的理解。

数学部分在于理解,光栅化部分在于实现

请认真实现自己的光栅化部分,每个人的实现方法都不同,也许你的实现会更高效

个人认为软渲染是学习图形学的一个关键点。

等你也实现了自己的软渲染引擎,再看unity3D和shader,就会有一种醍醐灌顶的感觉,甚至可以自行脑补其实现方法呢

下面是截图:

tinyengine's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tinyengine's Issues

大神,找工作吗?

Hi,大神。
你考虑换工作吗?或者你的学弟、学妹们,有考虑找工作的吗?

地点北京、苏州都可以, 薪资待遇业界最优。
上市公司,千亿规模,目前国内最大的时空大数据生态构造者。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.