Python版Raytracer

作者:i_dovelemon

日期:2017/05/02

来源:CSDN

主题:Ray tracer, python, pygame



引言



        这段时间一直在看 Ray Tracing from the ground up这本书,并且在看完之后自己也动手写了简单的demo,顺便学习下python。对的,这个tracer是使用python语言编写的,所以目标上只是实现tracer的功能,速度上就呵呵了。


图库



Python版Raytracer_第1张图片  Python版Raytracer_第2张图片
Python版Raytracer_第3张图片  Python版Raytracer_第4张图片
Python版Raytracer_第5张图片


一些心得



        通过这段时间的学习,慢慢了解到以前学习的一些误区。以前我一直以为,实时渲染和离线渲染是泾渭分明的两个不同的领域,我既然是做游戏的,那么就应该将主要精力放在实时渲染上面。直到我在 GLB项目中为了实现PBR的光照,阅读PBR相关的资料的时候,我才慢慢发现,有必要去学习下离线渲染的相关知识。

        正如知乎大v们说的那样,实时渲染的技术更多的是对离线渲染技术的一种近似和hacking。所以,我们应该先学会如何brute force去解决渲染中的问题,然后再去了解如何通过各种优化,hacking的技巧来达到实时渲染的目的。

        所以,在以后的日子里面,一方面通过学习离线渲染的各种brute force的渲染方案来加深对图形学基础知识的理解,另一方面通过GLB项目,来掌握实时渲染的知识。


学到的知识



        以下的知识,都是从Ray Tracing from the ground up中学到的知识的总结,这里只是列出来,具体的内容请从书中寻找:

        采样理论:Random Sampling, Jittered Sampling, NRook Sampling, MultiJittered Sampling
        映射理论:Map to HemiSphere
        光照理论:BRDF,Rendering Equation, Reflect Equation
        积分方法:Monte Carlo Intergration, Probability Density Function
        GI算法:Path Tracing


Github



        这个python版本的光线追踪渲染器以及开源在GitHub上,项目地址: https://github.com/idovelemon/raytracer/。感兴趣的同学可以自行下载尝试。

        由于python是我近一个月才学习的语言,所以编写上面的规范性不太好,仅仅根据google python style做了一些简单的控制,还望见谅!

        接下来,除了继续完善GLB项目之外,还将阅读 Realistic Ray Tracing,这本书主要是实现一个GI Path Tracer,所以刚好补充下从Ray Tracing from the Ground up里面学到Path Tracing相关的知识。学习这本书的过程中,我将只是先Path Tracing,并且通过C++来实现,希望能够做出一个速度较快的版本,不用等太久。同时希望实现完毕这个之后,就开始啃Physical Based Rendering: From Theory To Implementation,掌握PBR相关的光照模型。

你可能感兴趣的:(Ray,Tracing)