GLSL逐顶点光照[转]】的更多相关文章

转载:http://blog.csdn.net/hgl868/article/details/7872350 引言 在OpenGL中有三种类型的光:方向光(directional).点光(point).聚光(spotlight).本教程将从方向光讲起,首先我们将使用GLSL来模仿OpenGL中的光. 我们将向shader中逐渐添加环境光.散射光和高光效果. 后面的教程中我们将使用逐像素光照以获得更好的效果. 接下来我们将实现逐像素的点光和聚光.这些内容与方向光很相近,大部分代码都是通用的. 在卡…
转载:http://blog.csdn.net/hgl868/article/details/7872414 逐像素的方向光(Directional Light per Pixel) 这一节将把前面的shader代码改为逐像素计算的方向光.我们需要将工作按照两个shader拆分,以确定哪些是需要逐像素操作的. 首先看看每个顶点接收到的信息: •法线 •半向量 •光源方向 我们需要将法线变换到视点空间然后归一化.我们还需要将半向量和光源方向也归一化,不过它们已经位于视点空间中了.这些归一化之后的向…
书中的6.4节讲的是漫反射的逐顶点光照和逐片元光照. 前一种算法是根据漫反射公式计算顶点颜色(顶点着色器),对颜色插值(光栅化过程)返回每个像素的颜色值(片元着色器). 第二种算法是获得顶点的法线(顶点着色器),对法线插值(光栅化过程),根据漫反射公式计算像素颜色(片元着色器). 注:漫反射公式:(光源颜色 * 材质漫反射颜色)* (表面法线矢量 · 表面到光源的矢量) 书中对上两种算法的实现如下: Shader "Unity Shaders Book/Chapter 6/Diffuse Ver…
下为一个逐顶点漫反射光照shader Shader "study/Chapter6/vertexShader"{ Properties{_Diffuse("Diffuse",Color)=(1, 1, 1, 1)//材质的漫反射属性//声明一个Color类型的属性 } SubShader{ Pass{ Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #…
与上篇逐顶点光照很像,只是改为在片元着色器中计算光照,下为逐像素光照shader Shader "study/Chapter6/PixelShader"{ Properties{ _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) } SubShader{ Pass{ Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #…
引言 在OpenGL中有三种类型的光:方向光(directional).点光(point).聚光(spotlight).本教程将从方向光讲起,首先我们将使用GLSL来模仿OpenGL中的光. 我们将向shader中逐渐添加环境光.散射光和高光效果. 后面的教程中我们将使用逐像素光照以获得更好的效果. 接下来我们将实现逐像素的点光和聚光.这些内容与方向光很相近,大部分代码都是通用的. 在卡通着色的教程中我们接触过在GLSL中如何访问OpenGL状态中关于光源的部分,这些数据描述了每个光源的参数.…
http://blog.csdn.net/heyuchang666/article/details/51565102 顶点光照(Vertex Lit) 是最低保真度的光照.不支持实时阴影的渲染路径.最好是用于旧机器或受限制的移动平台上. 顶点照明渲染路径通常在一个通道中渲染物体,所有光源的照明都是在物体的顶点上进行计算的. 顶点照明渲染路径是最快的渲染路径并且有最广泛的硬件支持(然而,请记住:它无法工作在游戏机上). 由于所有的光照都是在顶点层级上计算的,此渲染路径不支持大部分的逐像素渲染效果:…
翻译:GLSL的顶点位移贴图 翻译自: Vertex Displacement Mapping using GLSL 译者: FreeBlues 说明: 之所以选择这篇文档, 是因为现在但凡提到位移贴图(Displacement Mapping), 都要求设备支持镶嵌细分(tessellates), 但是目前大多数的移动设备都不支持这个特性, 而本文的年代比较久远(2006~2008), 那时的设备更不可能支持镶嵌细分了, 说明位移贴图并非必需镶嵌细分这个特性, 也意味着本文的实现方法可以在大多…
UnityCG.cginc有一个叫ShadeVertexLightsFull的函数可以用来计算顶点光照. 源码如下: // Used in Vertex pass: Calculates diffuse lighting from lightCount lights. Specifying true to spotLight is more expensive // to calculate but lights are treated as spot lights otherwise they…
理论知识转载地址:http://blog.csdn.net/ym19860303/article/details/25545933 1.Lambert模型(漫反射) 环境光: Iambdiff = Kd*Ia 其中Ia 表示环境光强度,Kd(0<K<1)为材质对环境光的反射系数,Iambdiff是漫反射体与环境光交互反射的光强. 方向光: Ildiff = Kd * Il * Cos(θ) 其中Il是点光源强度,θ是入射光方向与顶点法线的夹角,称入射角(0<=A<=90°),Ild…