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

【OpenGL】聚光灯照明 Assignment | 5.3.7.Tiger Shading PS SC BL GLSL

Assignment:以下 OpenGL 基本照明公式的理解

(提交内容中必须清楚地描述公式中每个变量的含义)

c=e_{cm}+a_{cm}*a_{cs}+\sum_{i=0}^{n-1}(att_i)(spot_i)[a_{cm}*a_{cli}+(n\odot\overrightarrow{VP}_{pli})d_{cm}*d_{cli}+f(f_i)(n\odot \hat{h}_i)^{s_{rm}}s_{cm}*s_{cli}

自发光项

 e_{cm}

材质的自发光颜色,该项表示物体本身的发光颜色,而不依赖于任何光源。

环境光标项

 a_{cm}\cdot a_{cs}

a_{cm}:材质的环境光反射系数,表示材质在环境光下的反射能力。

a_{cs}场景的环境光颜色,表示环境光对场景的贡献。

点光源贡献项

\sum_{i=0}^{n-1}(att_i)(spot_i)[...]

  • \sum_{i=0}^{n-1}:表示场景中所有点光源的贡献总和。
  • att_i:光源衰减系数,随距离变化的光强度衰减。
  • spot_i:聚光灯系数,表示光源能否为聚光灯

环境光部分

a_{cm}\cdot a_{cli}

  • a_{cli}:第 i 个光源的环境光颜色。

漫反射部分

(n\cdot\overrightarrow{VP}_{pli} )d_{cm}\cdot d_{cli}

  • n:法线向量,垂直于定点表面的单位向量
  • \overrightarrow{VP}_{pli}:从定点指向第 i 个光源的单位向量
  • d_{cm}:材质的漫反射系数。
  • d_{cli}:第 i 个光源的漫反射颜色。

镜面反射部分

f(f_i)(n\cdot \hat{h}_i)^{s_{cm}}s_{cm}\cdot s_{cli}

f(f_i):聚光灯衰减函数,表示光源在镜面反射中的贡献。

\hat{h}_i:半角向量,表示视线与光线方向的角平分线单位向量。

s_{rm}:材质的镜面反射高光指数,表示镜面反射的锐度。

s_{cm}:材质的镜面反射系数。

s_{cli}:第 i 个光源的镜面反射光颜色。

环境光照明

环境光表示场景中均匀分布的基础光照,独立于特定光源,通常模拟间接光源反射的光线。公式中环境光的计算为:

a_{cm}\cdot a_{cs}

其中,材质的环境光反射系数 a_{cm} 决定了材质在环境光下的反射成都,环境光颜色 a_{cs} 则是场景中环境光的颜色。

漫反射光照明

漫反射光表示光线在粗糙表面均匀反射,其计算为:

(n\cdot\overrightarrow{VP}_{pli} )d_{cm}\cdot d_{cli}

其中,发现向量 n 与光线方向向量 \overrightarrow{VP}_{pli} 的点积决定了光线与表面的角度,材质的漫反射系数 d_{cm} 和光源的漫反射颜色 d_{cli} 决定了漫反射光颜色和强度。

镜面反射光照明

镜面反射光表示光线在光滑表面反射。其计算为:

f(f_i)(n\cdot \hat{h}_i)^{s_{cm}}s_{cm}\cdot s_{cli}

其中,聚光灯衰减函数 f(f_i) 决定光源在镜面反射中的衰减程度,法线向量 n 与半角向量 \hat{h}_i 的点积的高次方 (n\cdot \hat{h}_i)^{s_{rm}} 决定了反射光的聚集程度,材质的镜面反射系数 s_{cm} 和光源的镜面反射颜色 s_{cli} 决定了镜面反射光的颜色和强度。

该公式通过将自发光、环境光、漫反射光和镜面反射光的贡献综合起来,精确地计算出每个顶点在场景中的最终颜色。理解和应用这个公式是实现真实感三维图形渲染的基础。

2. 以上公式中如何计算聚光灯效应值 ( spot_i ),请结合适当的图示和几何计算部分进行说明。

参考:示例代码5.3.7.Tiger Shading PS SC BL GLSL中的片段着色器是基于对本照明公式的理解。

http://www.xdnf.cn/news/2090.html

相关文章:

  • 汽车行业EDI教程——北美X12标准 需求分析及方案
  • 【EDA】EDA中聚类(Clustering)和划分(Partitioning)的应用场景
  • React类组件与React Hooks写法对比
  • Float32、Float16、BFloat16
  • 【KWDB 创作者计划】_深度学习篇---数据获取
  • 一篇速成Linux 设置位 S(SetUID)
  • 欧拉计划 Project Euler56(幂的数字和)题解
  • SAP ABAP S/4新语法
  • python代做推荐系统深度学习知识图谱c#代码代编神经网络算法创新
  • ai聊天流式响应,阻塞式和流式响应 nginx遇到的坑
  • c#加密证件号的中间部分,改为*号
  • Flask 请求数据获取方法详解
  • 信息学奥赛一本通 1509:【例 1】Intervals | OpenJudge 百练 1201:Intervals
  • NLP高频面试题(五十四)——深度学习归一化详解
  • 使用npm install或cnpm install报错解决
  • 鼠标指定范围内随机点击
  • websheet之 编辑器
  • PyTorch与CUDA的关系
  • Android——Activity与Fragment通信
  • Asp.Net Core 异常筛选器ExceptionFilter
  • Python教程(一)——Python速览
  • 白鲸开源与亚马逊云科技携手推动AI-Ready数据架构创新
  • <论文>(谷歌)用于时序链接预测的迁移学习
  • Asp.Net Core 基于(asp.net core 2.2) 创建asp .net core空项目
  • vite+vue2+elementui构建之 package.json
  • 深度解析:从12306看混合云架构下的高并发系统设计
  • Z-Wave正通过自我革新,重塑在智能家居领域新定位
  • 2025年的营销趋势-矩阵IP
  • (Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
  • 数据湖DataLake和传统数据仓库Datawarehouse的主要区别是什么?优缺点是什么?