opengl聚光手电筒效果

80 篇文章 9 订阅
订阅专栏
61 篇文章 10 订阅
订阅专栏
  • 有一个光源方向,和顶点与光源方向夹角

  • 切光角:当平面上点和光源方向的角度的cos大于cos切光角,就把聚光的效果叠加上去在这里插入图片描述

  • 着色器代码的修改:1.定义手电筒光源的属性2.传参数以及修改算法3.着色修改

  • main函数修改:添加front相机(手电筒光源)参数位置

uniform vec3 front;

//手电筒光源
struct SpotLight{
	vec3 position;
	vec3 direction;
	float cutOff;	//角度,自己定义的切光角
};
	spotLight.position = viewPos;
	spotLight.direction = front;
	spotLight.cutOff = 12.5;
	float theta = dot(normalize(vec3(spotLight.position) - FragPos),-spotLight.direction);	//注意这里向量方向
	float spotI = 0;	//着色点对于手电筒的亮度
	if(theta>cos(radians(spotLight.cutOff)))
	{
		spotI = 0.8;
	}
	FragColor = vec4((light.ambient*material.ambient
		+diffuse*light.diffuse*material.diffuse
		+specular*light.specular*material.specular)*lightColor*(attenuation+spotI), 1.0);
  • 处理平滑的范围:再设定一个角度,光圈里边是1之后都是递减的
    在这里插入图片描述
  • 着色器代码:添加了新的变量outerCutOff来规定外圈,并且这里使用了clamp函数来限定范围就不需要做if判断了
//手电筒光源
struct SpotLight{
	vec3 position;
	vec3 direction;
	float cutOff;	//角度,自己定义的切光角
	float outerCutOff;	//外圈处理平滑过渡
};
	spotLight.position = viewPos;
	spotLight.direction = front;
	spotLight.cutOff = 12.5;
	spotLight.outerCutOff = 17.5;
	float theta = dot(normalize(vec3(spotLight.position) - FragPos),-spotLight.direction);	//注意这里向量方向
	float spotI = 0;	//着色点对于手电筒的亮度
	//这里使用了clamp函数来限定范围就不需要做if判断了
	float epsilon = cos(radians(spotLight.cutOff)) - cos(radians(spotLight.outerCutOff));
	spotI = clamp((theta-cos(radians(spotLight.outerCutOff)))/epsilon,0.0,1.0);//约束到0-1之间
ogl_lighting.zip_手电筒
09-20
3. **手电筒效果**:手电筒效果通常通过聚光灯和剪切平面实现。聚光灯有一个光锥,只有在光锥内的物体才能被照亮。剪切平面用于限制照亮区域,模拟手电筒的射程。 4. **顶点着色器和片段着色器**:在OpenGL中,光照...
OpenGL多点光源加手电筒
weixin_30300523的博客
05-17 191
转自 https://learnopengl-cn.github.io/02%20Lighting/06%20Multiple%20lights/ 1,多光源 当我们在场景中使用多个光源时,通常使用以下方法:我们需要有一个单独的颜色向量代表片段的输出颜色。对于每一个光源,它对片段的贡献颜色将会加到片段的输出颜色向量上。所以场景中的每个光源都会计算它们各自对片段的影响,并结...
OpenGL基础24:聚光
加载中...
06-16 1976
前置:OpenGL基础23:平行光与点光源 一、聚光灯 三种基础光源在上一章讲了2种,现在只剩下聚光灯了 手电筒就是一个很经典例子,相对于点光源,聚光灯拥有以下特点 依然有衰减,但是聚光灯的光照一般都是非常强的(也就是有着非常远的射程) 有一定的范围,在这个范围外光照极速衰减,距离聚光方向超过一定角度,哪怕离光源很近,也有可能完全没有光照 依上,既有位置属性,又有方向属性(聚光方向) 那么也就是说,相对于点光源,聚光灯会额外多出2个属性:聚光方向和切光角 如下图:其中就是入射光向量与...
opengl学习-多光源(随心记录)(包括手电筒图片)
最新发布
m0_57958061的博客
04-30 627
我们在前面的教程中已经学习了许多关于OpenGL中光照的知识,其中包括冯氏着色(Phong Shading)、材质(Material)、光照贴图(Lighting Map)以及不同种类的投光物(Light Caster)。在这一节中,我们将结合之前学过的所有知识,创建一个包含六个光源的场景。我们将模拟一个类似太阳的定向光(Directional Light)光源,四个分散在场景中的点光源(Point Light),以及一个手电筒(Flashlight)。
OpenGL中创建聚光灯的效果
清道夫的专栏(3D程序员,炼心,终生编程)
12-29 9217
OpenGL中创建聚光灯的效果      现在,我们使用如下的数组来指定一个光源的位置:      // 指定光源位置的数组       GLfloat lightPos[] = {0.0f, 0.0f, 75.0f, 1.0f};      // 设置光源0的位置      glLightfv(GL_LIGHT0,GL_POSITION,ligh
学习OpenGL ES之激光特效
weixin_33890526的博客
01-25 512
获取示例代码 本文主要介绍如何使用2个四边形实现一个简单的激光效果。下面是最终效果图。 在了解激光实现原理之前,先介绍一下我对上一篇文章的代码进行的简单重构。我把OpenGL关键性的代码都集成到了GLContext类中。 #import <GLKit/GLKit.h> @interface GLContext : NSObject @property (assign, nonat...
opengl内使用聚光灯对模型进行照明
05-13
聚光灯是一种方向性光源,具有一定的发射范围和聚焦点,就像手电筒或舞台聚光灯一样。这种光源的特点是可以对特定区域集中投射光亮,从而创造出更真实的阴影和高光效果。 2. **聚光灯参数**:在OpenGL中设置聚光灯...
OpenGL光照效果
10-10
聚光灯则有明确的投射方向和范围,可以模拟手电筒聚光灯的效果。 在实现光照效果时,我们需要设置光源的属性,包括位置、颜色、衰减因子等。同时,也需要定义物体的材质属性,如颜色、反光率、粗糙度等。材质属性...
OpenGL3.3_Lighting_SpotLight
08-14
聚光灯是一种特殊的光源类型,它的光线具有方向性和衰减性,可以模拟现实世界中的手电筒或舞台灯光效果。 在OpenGL中,光照模型是用于模拟物体表面受光效果的关键部分。它包括环境光、漫射光、镜面光等不同的光源...
易语言源码易语言OpenGL光源参数例程源码.rar
02-17
聚光灯类似手电筒,有一个集中的光束范围。 5. **其他参数**:还有漫反射系数、镜面反射系数、衰减因子、剪切平面等。漫反射系数决定了物体表面如何吸收并散射光线;镜面反射系数控制镜面高光的效果;衰减因子影响...
移动光源,opengl经典例子
01-15
移动光源,opengl经典例子,方便入门者学习
OpenGL实现三种光源
东北砍王的栖息地
11-09 521
衰减:随着光线传播距离的增长逐渐削减光的强度通常叫做衰减(Attenuation)用一个世界空间位置、一个方向和一个切光角(Cutoff Angle)来表示的。衰减公式:1 / (常数项 + 一次项*距离 + 二次项 + 距离的平方)位于环境中某个位置的光源,它只朝一个特定方向而不是所有方向照射光线。当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。因为所有的光线都是平行的,所以物体与光源的相对位置是不重要的。分散在场景中的点,会朝着所有方向发光,会随着距离逐渐衰减。
OpenGL(LibGDX)激光束
perpetuity2006的专栏
09-01 969
几周前,我开始考虑如何在我们的游戏原型防御中集成一些不错的激光fx。 在互联网上搜索一些关于这个问题的指南后,我在开发者的博客上发现了一个单独的帖子; Cliffski的。 不过,令人遗憾的是,他只是就这个问题提出了一个大纲,没有任何真正的实施或细节。 在实施他的想法之后,我开始试图加强和扩大它; 这就是我这样做的。 最终结果 在游戏中
OpenGL聚光灯实现注解
qq_26328385的博客
04-17 591
#version 430 core uniform vec4 Ambient; //环境光 uniform vec3 LightColor; //聚光灯颜色 uniform vec3 LightPosition; //聚光灯位置 uniform vec3 SoptDirection; //聚光灯中心灯光方向 uniform float SoptCosCutoff; //聚光灯范围 ...
openGL ES进阶教程(一)之粒子光束
WangShuo的专栏
05-17 5512
2016AR/VR喊的火热,这些在Android上的实现或多或少与openGL 有关。 OpenGL能做的事情太多了!很多程序也看起来异常复杂。更有可能因为某一步的顺序错误导致最后渲染出错,这是因为,OpenGL和我们现在使用的C++、java这种面向对象的语言不同,OpenGL中的大多数函数使用了一种基于状态的方法。你可以看到Android中的播放器原理,就是API改变播放状态,逻辑性非常强~ 本
Android OpenGL添加光照和材料属性
huachao1001的专栏
08-09 8320
在上一篇文章【 Android OpenGL显示任意3D模型文件 】中,我们学习了如何读取并显示STL格式的3D文件,但是,最后,看到的并没有添加光照效果,导致虽然模型在旋转,但是我们看到的画面却像一个平面。今天我们开始学习如何给模型添加灯照效果,以及如何为模型添加材料属性,使得最终看到的旋转模型真正为3D效果。首先,看看最终效果,如下图所示
Unity3D图像后处理特效——Glow image effect
热门推荐
游戏点滴
07-15 1万+
Glow (sometimes called "Bloom") can dramatically enhance the rendered image by making overbright parts "glow" (e.g. sun, light sources, strong highlights). The Bloom and Lens Flares image effect g
OpenGL学习笔记(五)-投光物-多光源
Catog的博客
04-11 474
参考网址:LearnOpenGL 中文版 哔哩哔哩教程 2.5 投光物 2.5.1 平行光 1、当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行,例如太阳。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当假设光源处于无限远处的模型时,它就被称为定向光。 2、通过定义光线方向向量即可模拟一个定向光。 struct LightDirect { vec3 lightDir; vec3 ambient; vec3 diffuse; vec3
OpenGL学习笔记(九)
weixin_42050609的博客
06-07 578
OpenGL 中级篇(五)
OpenGL实现爆炸效果与动画模拟
OpenGL爆炸效果模拟,使用Xcode13.3在MacPro13-inch2020 M1上开发,OpenGL版本为4.5,编程语言为c++17,实现了球体爆炸的3D视觉效果。” 在这个项目中,开发者使用OpenGL库来创建一个3D场景,模拟爆炸的效果。...
写文章

热门文章

  • wallpaper-engine 操作热键 4109
  • 图形学知识:光栅化和光线追踪的区别 3288
  • opengl-PBR基于物理的渲染(Physically Based Rendering):理论基础 2664
  • opengl之高级GLSL(1)-顶点着色器变量与片段着色器变量 2616
  • opengl之抗锯齿(有用到帧缓冲) 2100

分类专栏

  • 图形学 80篇
  • C++ 2篇
  • vulkan 16篇
  • 光线追踪 4篇
  • 论文 3篇
  • 光线追踪学习 1篇
  • opengl学习 61篇
  • opengl配置 1篇
  • opengl复习 1篇
  • wallpaperengine 1篇
  • assimp 1篇
  • openGL环境 3篇
  • 图形学作业 1篇
  • 电脑环境 1篇
  • opencv 1篇
  • webstorm上的vue配置 1篇
  • GitHub配置 2篇

最新评论

  • OPenGl 引用 wingdi.h报错

    zixingcai: 帮大忙了!

  • 论文阅读-《用于有效计算间接照明的不完美阴影贴图》

    Unlickys: 你好,请问是否会代码实现部分呢?表情包

  • Vulkan-官方示例解读-RayTracingShadows&在这里边使用模型(2)

    Utotao: 想请教下,这个用的是NV的GPU跑的么?

  • opengl高级光照-Blinn-Phong

    傻瓜到我碗里来: 代码有无,请指路

  • opengl之高级GLSL(1)-顶点着色器变量与片段着色器变量

    weixin_47279489: 将两个不同的color加在一起就好了

大家在看

  • 2024年研赛-华为杯数模竞赛C题论文首发+论文讲解+代码分享
  • QT快速安装使用指南 364
  • RPG Maker:游戏资源管理与导入教程
  • 【有啥问啥】科普符号主义与连接主义:人工智能的两大主流学派 836
  • 一个.NET开发且功能强大的Windows远程控制系统 194

最新文章

  • 空间中的多变形面积学习
  • VS 使用注意-如果无法自动打开关闭之前的文件则删除.VS中的 .SUO文件
  • vulakn技巧调用ssbo的值
2022年29篇
2021年61篇
2020年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家天水人物玻璃钢雕塑桂林市玻璃钢雕塑定制平顶山人物玻璃钢雕塑张家口玻璃钢卡通雕塑厂家玻璃钢雕塑水景长沙玻璃钢佛像雕塑云浮玻璃钢仿真雕塑信誉好的玻璃钢景观雕塑玻璃钢红军雕塑哪家正规玻璃钢雕塑与铜雕塑玻璃钢雕塑制作过程中注意事项北京大型商场创意商业美陈传播邵阳玻璃钢人物雕塑生产玻璃钢卡通雕塑批发彭山玻璃钢卡通雕塑萍乡玻璃钢花盆玻璃钢雕塑品多少钱德州价值观玻璃钢人物雕塑长沙玻璃钢雕塑修复酒店玻璃钢雕塑设计需要多少钱马鞍山玻璃钢雕塑价位肇庆玻璃钢主题雕塑静安区玻璃钢雕塑厂果洛玻璃钢雕塑定制别致的山羊玻璃钢雕塑遵义玻璃钢造型雕塑湖北玻璃钢动物雕塑福建工业玻璃钢雕塑摆件安阳大象玻璃钢雕塑河源商场装饰玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化