shader中常见的光照基础-漫反射

来源:互联网 发布:zepto.js 左右滑动 编辑:程序博客网 时间:2024/05/18 03:38

shader是实现各种图形效果的地方,用渲染语言cg(C for graphic)/hlsl(hight level shader language(高等级渲染语言))/glsl(open gl shader language)来实现一个渲染的流程,常用于游戏开发等等方面

其实早先实现图形渲染是通过汇编来控制硬件,但是太麻烦了,所以有一句话说得好,世界上任何东西都可以套一层封装。既然汇编语言很多人都搞不到,干脆我们把他直接干掉,大家直接学类似的高级语言就好了,所以所谓的渲染语言就来了。

上面三个渲染语言都是由不同公司出的,但是实际上也大同小异,学会一个,其他基本没什么问题了,比如nvidia的cg语言和微软的hlsl语言大部分语法基本相似。不过说实在的语法,没啥难的,关键是原理,能理解原理后,再去看语法,就简单多了。

首先一个shader的实现分很多个阶段,粗略来看比如应用阶段,几何阶段,光栅化阶段。其实这几个阶段就是对每个顶点,然后每个像素(其实是错的,但我们先这样理解)处理,然后将相邻像素合成一个片源.....最后一个图形就渲染到屏幕上去拉!

了解这个之后,我们这回从几个比较简单的例子入手

1.漫反射-光啪嗒打到物体上,然后散射出去,效果就是光打的地方比较亮,然后由亮的地方向四周慢慢变暗。。。

那么怎么实现呢?在计算机图形学有一句话,也就是看上去效果是正确的,那么它就是正确的。而且我们不可能真正按照现实物理原理去实现这个效果,不然目前计算机可吃不消。。。

0 0