OpenGL学习笔记 渲染阴影 阴影学习(二)

渲染阴影

获得阴影的深度贴图

见阴影学习(一)

阴影映射

打开官方的实例源码使用了6个shader,前四个都在上个笔记中提到过。

剩下的两个shader的作用是正常的给予光照渲染,对每一个片段都判断是否在我们的阴影处,然后进行渲染,渲染的方式也很简单。

那么先看看最终效果

(优化后的)

在这里插入图片描述

(未优化的)

在这里插入图片描述

  1. 我们现在准备好了帧缓冲,里面也有了我们所需要的深度贴图,我们还需要正常的准备好我们的场景以及各种资源的绑定。将我们准备好的光源变换矩阵和深度贴图赋值给shader

   	shader.setVec3("viewPos", camera.Position);
	shader.setVec3("lightPos", lightPos);
    //光源变换矩阵的绑定
	shader.setMat4("lightSpaceMatrix", lightSpaceMatrix);
	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, woodTexture);
	glActiveTexture(GL_TEXTURE1);
    //深度贴图的绑定
	glBindTexture(GL_TEXTURE_2D, depthMap);
	renderScene(shader);
  1. 顶点着色器
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords;


out vec2 TexCoords;

//代码块输出
out VS_OUT {
    vec3 FragPos;
    vec3 Normal;
    vec2 TexCoords;
    vec4 FragPosLightSpace;//经过矩阵转换的点
} vs_out;

uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
uniform mat4 lightSpaceMatri
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值