当前位置: 首页 > news >正文

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights)

多光源渲染技术概览
光源管理
前向渲染
延迟渲染
性能问题
高效多光源
1. 光源数据结构统一化
struct Light {int type; // 0=定向光, 1=点光源, 2=聚光灯vec3 position;vec3 direction;vec3 ambient;vec3 diffuse;vec3 specular;float constant;float linear;float quadratic;float cutOff;float outerCutOff;
};
uniform Light lights[MAX_LIGHTS];
uniform int lightCount;
2. 统一光照计算函数
vec3 CalculateLight(Light light, vec3 normal, vec3 fragPos, vec3 viewDir, vec3 materialDiffuse, vec3 materialSpecular, float shininess) {vec3 lightDir;float attenuation = 1.0;// 计算光线方向和衰减if (light.type == 0) { // 定向光lightDir = normalize(-light.direction);} else { // 点光源或聚光灯lightDir = normalize(light.position - fragPos);float distance = length(light.position - fragPos);attenuation = 1.0 / (light.constant + light.linear * distance + light.quadratic * (distance * distance));}// 聚光灯强度float intensity = 1.0;if (light.type == 2) {float theta = dot(lightDir, normalize(-light
http://www.xdnf.cn/news/924625.html

相关文章:

  • [面试精选] 0104. 二叉树的最大深度
  • 历史数据分析——唐山港
  • QT聊天项目DAY14
  • STC8H系列 驱动步进电机
  • 分享下量化快速选股和回测的方法
  • 题目 3241: 蓝桥杯2024年第十五届省赛真题-挖矿
  • 性能优化笔记
  • 《机器学习》(周志华)第一章 绪论
  • 【看到哪里写到哪里】C的“数组指针”
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • 罗尔斯·罗伊斯数字孪生技术赋能航空发动机运维革新:重构维护范式,驱动行业低碳转型
  • 如何拥有自己的镜像和仓库
  • Java 反射机制详解及示例
  • 【数据结构初阶】--算法复杂度的深度解析
  • python中从队列里取出全部元素的两种写法
  • 【C++字符串基础解析1】
  • Java Smart 系统题库试卷管理模块设计:从需求到开发的实战指南
  • 蓝桥杯单片机之通过实现同一个按键的短按与长按功能
  • ubuuntu24.04 编译安装 PostgreSQL15.6+postgis 3.4.2 + pgrouting 3.6.0 +lz4
  • 《拓扑排序》题集
  • 【JavaSE】泛型学习笔记
  • 【评测】用Flux的图片文本修改的PS效果
  • ECharts 提示框(tooltip)居中显示位置的设置技巧
  • CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
  • Python 接口:从协议到抽象基 类(定义并使用一个抽象基类)
  • 僵尸进程是什么?怎么回收?孤儿进程?
  • vue3: bingmap using typescript
  • 快速上手shell脚本运行流程控制
  • 深度相机的日常学习
  • 20250607-在Ubuntu中使用Anaconda创建新环境并使用本地的备份文件yaml进行配置