
GLSL
文章平均质量分 91
荆楚闲人
老骥伏枥,志在千里;烈士中年,壮心不已。
展开
-
【GLSL教程】(九)变换法线的矩阵是模型视图矩阵旋转子矩阵的逆的转置
现在假设G是正确变换法线的矩阵,同时模型视图矩阵的左上3×3子矩阵M可以正确变换切线T(T是一个向量,所以w成分为0)。一个法线是3个浮点数组成的向量,而模型视图矩阵是一个4×4的矩阵。另外,因为法线是一个向量,我们只需要变换它的方向,而模型视图矩阵中左上方的3×3子矩阵正好包含了旋转变换。有一种情况,在片断shader中可以避免归一化操作,那就是每个顶点法线方向相同,而且顶点法线是经过归一化的。注意,如果缩放是一致的(uniform),那么法线方向保持不变,变的只是长度,而且可以通过归一化修正这个影响。转载 2023-08-27 17:35:24 · 467 阅读 · 0 评论 -
【GLSL教程】(八)纹理贴图
如果indensity是0,第二个纹理单元取最大值,如果indensity为1,只取第二个纹理单元颜色的10%,当indensity在0和1之间时按这两个大小进行插值。这个用户定义的变量tex包含我们将会使用的纹理单元,通过texture2D函数我们可以得到一个纹素(texel),这是一个纹理图片中的像素。表中Ct和At表示纹理的颜色和alpha值,Cf和Af表示片断(fragment)的颜色和alpha值,C和A表示最终的颜色和alpha值。为了在GLSL中应用纹理,我们需要访问每个顶点的纹理坐标。转载 2023-08-13 16:18:14 · 759 阅读 · 0 评论 -
【GLSL教程】(七)逐像素的光照
上式中spotDirection来自OpenGL中设置的状态,lightDir是光源到某点的向量,spotExp是聚光衰减率,这个值也是在OpenGL程序中设置的,它用来控制从聚光光锥中心到边缘的衰减。注意衰减与距离是非线性关系,所以我们不能逐顶点计算衰减再在片断shader中使用插值结果,不过我们可以在顶点shader中计算距离,然后在片断shader中使用距离的插值计算衰减。对方向光来说,光线的方向对所有顶点相同,但是对点光来说,方向是从顶点指向光源位置的向量。对点光来说,这个分量是1。转载 2023-08-13 15:06:58 · 280 阅读 · 0 评论 -
【GLSL教程】(六)逐顶点的光照
我们从散射光开始讨论。I是反射光的强度,Ld是光源的散射成分(gl_LightSource[0].diffuse),Md是材质的散射系数(gl_FrontMaterial.diffuse)。在OpenGL程序中,这些参数中的大部分,不论属于光源还是材质,用起来都是相似的。L表示入射光,N表示法线,Eye表示从顶点指向观察点的视线,R是L经镜面反射后的结果,镜面反射成分与α角的余弦相关。在卡通着色的教程中我们接触过在GLSL中如何访问OpenGL状态中关于光源的部分,这些数据描述了每个光源的参数。转载 2023-08-06 15:47:27 · 323 阅读 · 0 评论 -
【GLSL教程】(五)卡通着色
【GLSL教程】(五)卡通着色转载 2023-07-08 16:54:28 · 276 阅读 · 0 评论 -
【GLSL教程】(四)shader的简单示例
【GLSL教程】(四)shder的简单示例转载 2023-07-08 15:01:59 · 528 阅读 · 0 评论 -
【GLSL教程】(三)在OpenGL中向shader传递信息
【GLSL教程】(三)在OpenGL中向shader传递信息转载 2023-07-08 12:12:57 · 870 阅读 · 0 评论 -
【GLSL教程】(二)在OpenGL中使用GLSL
OpenGL中使用GLSL转载 2023-07-08 11:51:02 · 1070 阅读 · 0 评论 -
【GLSL教程】(一)图形流水线
【GLSL教程】(一)图形流水线转载 2023-07-08 10:35:35 · 872 阅读 · 0 评论 -
GLSL内置变量和内置函数
GLSL内置变量和内置函数原创 2023-07-03 11:16:46 · 1746 阅读 · 0 评论