shader漫反射模拟

本文介绍了如何通过shader来增强场景立体感,重点讲解了漫反射光照的模拟方法。内容涉及环境光、漫反射光和镜面光,强调漫反射光与物体表面法线和光向量的点乘关系。提供了glsl和hlsl的顶点着色器代码示例,最终展示了程序的运行效果。
摘要由CSDN通过智能技术生成

给物体增加光照可以提升场景的立体感,可以用shader实现光照模拟效果.

一般物体光照包括了环境光,漫反射和镜面光,通常光滑的物体可以看到镜面光效果,一般的物体受环境光与漫反射的影响更大一些,环境光可以用一个常量模拟,而漫反射光则是与物体表面法线和光向量的夹角大小有关,夹角大小可以用法向量与光照向量的点乘值表示(此处向量都是经过标准化计算的).

下面给出glsl vs代码:

uniform vec4 lightd;//光照向量
uniform mat4 viewMatrix;//视图矩阵

varying vec3 lightDir,normal;  

void main() {  
    normal = normalize(gl_NormalMatrix * gl_Normal);  //在视图空间的法线
    lightDir = normalize(vec3(viewMatrix * lightd));  //在视图空间的光线
    gl_TexCoord[0] = gl_MultiTexCoord0;//直接取传进来的纹理坐标  

    gl_Position = ftransform();  //顶点mvp变换
    gl_FrontColor = gl_Color;
}  


glsl fs代码:

uniform sampler2D tex;//采样器
uniform vec4 amb,dif,matAmb,matDif;//光照与材质属性

varying vec3 lightDir,normal;//在视图空间的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值