场景中多个点光源的着色器GLSL代码

本文详细介绍了使用GLSL编程语言在OpenGL 2.0环境下,如何实现场景中多个点光源的逐像素光照效果。通过顶点着色器和片段着色器的配合,对每个像素进行光照计算,以达到更加真实的光照表现。
摘要由CSDN通过智能技术生成


//-------------------------------------------------------------------
// 顶点光照
// 顶点着色器的代码
const int maxLightCount = 32;
varying vec4 v_fragmentColor;
varying vec2 v_texcoord;
attribute vec4 vPosition;
attribute vec4 vNormal;
attribute vec2 vTexCoord;
uniform vec4 vCameraPos;
uniform mat4 MvpMatrix;
uniform bool bEnabled[maxLightCount];
uniform vec4 vLightPos[maxLightCount];
uniform vec4 vLightClolor[maxLightCount];
uniform vec4 vLightAttenuation[maxLightCount];
void main() {
	gl_Position = MvpMatrix * vPosition;
	vec4 vEye = vCameraPos - vPosition;
	vec4 vColour = vec4(0.0);
	for(int i=0; i<maxLightCount; i++){
		if(bEnabled[i] == false){
			continue;
		}
		vec4 lightDir = normalize(vLightPos[i]-vPosition);
		vec4 halfVector=normalize(lightDir+vEye);
		float att = 1.0;
		if(vLightAttenuation[i].w > 0.0){
			float d = length(vLightPos[i]-vPosition);
			att = 1.0/(vL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值