美文网首页ios 开发
OpenGLES 光照计算

OpenGLES 光照计算

作者: iOS小洁 | 来源:发表于2023-01-03 21:40 被阅读0次

光照基础

1、环境光照

2、漫反射光照

3、镜面光照

光照比较

光照特性

1、发射光:由物体资深发光

2、环境光:环境中充分散射的光,且无法分辨它的方向

3、漫反射光:光纤来自某个方向,但在物体上各个方向反射

4、镜面高光:光纤来自一个特定的方向,然后再物体表面上亿一个特定的方向反射出去

光照分类

环境光,漫反射光和镜⾯光的强度都会受距离的增⼤而衰减,只有发射光和全局环境光的强度不会受影响

材质属性

1、泛射材质

2、漫反射材质

3、镜面反射材质

4、发射材质

光照计算

1、环境光计算

环境光 = 光源的环境光颜⾊ * 物体的材质颜⾊

2、发射光的计算

发射颜色 = 物体的反射材质颜色

3、漫反射光照计算

光照有阴面和阳面,由法线计算光与物体之间的夹角,这个夹角分为入射角和反射角

漫反射颜色 = 光源的漫反射颜色 * 物体的漫反射材质颜色 * DiffuseFactor

DiffuseFactor = max(0, dot(N, L));

4、镜面光计算

镜面反射颜色 = 光源的镜面光颜色 * 物体的镜面材质颜色 * SpecularFactor

SpecularFactor = power(max(0, dot(N, H)), shininess);

H:视线向量E 与光线向量L 的半向量

dot(N, H):H,N的点积几何意义,平方线与法线夹角的cos值

shininess:高光的反光度

5、普通光照计算

光照颜色 = (环境颜色 + 漫反射颜色 + 镜面反射颜色) * 衰减因子

衰减因子计算:

img

衰减因⼦ = 1.0/(距离衰减常量 + 线性衰减常量 * 距离 + ⼆次衰减常量 * 距离的平方)

距离衰减常量,线性衰减常量和二次衰减常量均为常量值

6、聚光灯因子

聚光灯夹角cos值 = power(max(0, dot(单位光源位置, 单位光线向量)), 聚光灯指数);

单位光线向量:是从光源指向顶点的单位向量

聚光灯指数:表示聚光灯的亮度程度

公式解读:单位光源位置 * 单位光线向量 点积 的 聚光灯指数次方

增加过渡计算

聚光灯因子 = clamp((外环的聚光灯角度cos值 - 当前顶点的聚光灯角度cos值) / (外环的聚光灯角度cos值 - 内环聚光灯的角度cos值), 0.1)

聚光灯

7、光照计算终极公式

光照颜色 = 发射颜色 + 全局环境颜色 + (环境颜色 + 漫反射颜色 + 镜面颜色) * 聚光灯效果 * 衰减因子

相关文章

  • OpenGLES 光照计算

    光照基础 1、环境光照 2、漫反射光照 3、镜面光照 光照特性 1、发射光:由物体资深发光 2、环境光:环境中充分...

  • NDK OpenGLES3.0 开发(九):光照基础

    该原创文章首发于微信公众号:字节流动 OpenGLES 基础光照模型 OpenGLES 目前还无法模拟现实世界的复...

  • OpenGLES5-光照

    光照基础 环境光照 漫反射光照 镜面光照 光照特性 材质属性 泛射材质 漫反射材质 镜面反射材质 发射材质 光照计...

  • 光照计算

    光照计算 顶点着色器 业务 矩阵变换位置 计算光照公式生成逐顶点颜色 生成/变换纹理坐标 总结:用于执行自定义计算...

  • iOS-OpenGLES-进阶-基础光照

    这是一篇OpenGlES 系统学习教程,记录自己的学习过程。环境: Xcode10.2.1 + OpenGL ES...

  • GLSL 计算光照

    新建一个 xcode 项目,自定义 SLView 继承 UIView,在Main.storyboard 中把 Vi...

  • [GLES] OpenGLES系列教程

    OpenGLES目前可用的有3个大版本: OpenGLES 1.x OpenGLES 2.x OpenGLES 3...

  • OpenGL学习历程三:基于iOS的OpenGL ES

    iOS OpenGLES入门教程OpenGLES文集

  • OpenGLES笔记五光照和矩阵堆

    GLKBaseEffect苹果封装用于简单渲染的类,在官方文档中这样解释: 一个简单的照明和阴影系统,用于基于着色...

  • Unity 渲染教程(五):多个光源

    对每个物体渲染多个光源的光照效果。 支持不同的光源类型。 使用光源cookie。 计算顶点光照。 在光照计算中添加...

网友评论

    本文标题:OpenGLES 光照计算

    本文链接:https://www.haomeiwen.com/subject/elekcdtx.html