shader如下: 效果如下: 转载请注明出处:http://www.cnblogs.com/jietian331/p/7079005.html 逐像素光照可以得到更新平滑的光照效果,但有一个缺点,在光照无法到达的区域,模型的外观通常是全黑的,没有任何明暗变化,像一个平面一样,无任何模型细节表现,如 ...
分类:
编程语言 时间:
2017-06-26 10:27:55
阅读次数:
285
Lambert漫反射的BRDF: 其中 反射率Albedo=出射总照度/入射总照度,为常数。 推导: Lambert漫反射的特点各个方向均匀出射,即为常数,所以 Albedo=出射总照度/入射总照度 =Er/Ei 所以f=Albedo/PI ...
分类:
其他好文 时间:
2017-06-07 10:03:47
阅读次数:
526
使用Subroutine在shader中封装不同的函数,在CPU端选择调用那个函数效果如下图所示左侧:环境光中间:环境光+漫反射右侧:环境光+漫反射+高光1、Subroutine在shader中的内容subroutinevec4SurfaceColor();
subroutineuniformSurfaceColorU_SurfaceColor;定义SurfaceColor()函数..
分类:
其他好文 时间:
2017-06-01 00:28:35
阅读次数:
239
绘制一个Obj模型,效果如下图所示这里给模型加载顶点和纹理的信息,加上环境光、漫反射和镜面反射,这里我用的是一个方向光。并且让模型每一帧旋转一个角度达到动态旋转的效果。1、Obj模型基本内容及加载v表示顶点数据vt表示纹理数据vn表示法线数据f表示一个面的顶点数据的Inde..
分类:
其他好文 时间:
2017-05-31 18:57:06
阅读次数:
282
模型的漫反射可以在两个函数中实现,一个是顶点函数,另外一个就是片元函数。而这两个函数的区别又决定了漫反射实现出来的效果,那就是精细度。 因为顶点函数是逐顶点调用,漫反射在顶点函数实现时,对于在一个三角面(三个顶点包含的面)中的像素值是通过插值得到的。所以模型显示的每个像素不是最细化的。 而片元函数是 ...
分类:
编程语言 时间:
2017-05-23 17:47:55
阅读次数:
222
光照模型 3D渲染中, 物体表面的光照计算公式为: I = 环境光(Iambient) + 漫反射光(Idiffuse) + 镜面高光(Ispecular); 其中,环境光(ambient)计算公式为: Iambient = Aintensity * Acolor ; (Aintensity表示环境 ...
分类:
其他好文 时间:
2017-04-10 18:24:32
阅读次数:
214
【Unity Shaders】Shader中的光照,shadersshader 写在前面 自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已。当然,我相信这是因为我们写得少。。。不过这也是由于官方文档对这方面介绍很少的缘故,导致我们无法自如地处理很多常 ...
分类:
编程语言 时间:
2017-03-30 11:39:28
阅读次数:
306
1.Lambert模型(漫反射) 环境光: Iambdiff = Kd*Ia 其中Ia 表示环境光强度,Kd(0<K<1)为材质对环境光的反射系数,Iambdiff是漫反射体与环境光交互反射的光强。 方向光: Ildiff = Kd * Il * Cos(θ) 其中Il是点光源强度,θ是入射光方向与 ...
分类:
其他好文 时间:
2017-02-21 14:34:07
阅读次数:
234
1.Lambert模型(漫反射) 环境光: Iambdiff = Kd*Ia 其中Ia 表示环境光强度,Kd(0<K<1)为材质对环境光的反射系数,Iambdiff是漫反射体与环境光交互反射的光强。 方向光: Ildiff = Kd * Il * Cos(θ) 其中Il是点光源强度,θ是入射光方向与 ...
分类:
其他好文 时间:
2017-02-17 14:57:30
阅读次数:
258
Blinn-Phong光照模型: 其中、、分别是光源的环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular)亮度,、、则描述了物体材质对这几类光的反射系数,是表面法线,-L是光的方向,是物体表面都eye的单位向量,是入射光线的反射方向,s是高光系数。Blinn-Phon ...
分类:
其他好文 时间:
2017-02-07 22:26:20
阅读次数:
270