OpenGL3.3_C++_Windows(23)

news2025/1/12 6:01:00

伽ga马校正

  • 物理亮度 = 光子数量 
  • 线性空间:光子数(亮度)和颜色值的线性关系
  • 人眼感知的亮度:对比较暗的颜色变化更敏感,感知亮度基于人的感觉
  • 非线性空间:光子数(亮度)和 颜色值^2.2,
  • 恰好符合屏幕显示的CRT2.2(显示设备都有自己的Gamma值,设备输出亮度 = 电压的Gamma次幂)符合人眼规律,也就是屏幕自动的为我们更改符合人眼规律的亮度

注意:

  • 应用中配置的亮度和颜色是基于监视器所看到的,是非线性的配置
  • 也就是:我们把物体颜色值翻倍,将颜色值改变为【0.5——1】,可是在监视器中,我们看到的颜色变化其实是【0.25——1】,亮度翻了4.5倍以上
  • 通常将光照值设置得比本来更亮一些(由于监视器会将其亮度显示的更暗一些)

Gamma校正(最终颜色变回线性):

  • 在最终的颜色输出上应用监视器Gamma的倒数(1/2.2次幂),这样应用了监视器Gamma以后最终的颜色将会变为线性的
    • 方法一:
    • glEnable(GL_FRAMEBUFFER_SRGB);在颜色储存到颜色缓冲之前先校正sRGB颜色。包括默认帧缓冲。
    • 注意:如果你使用多个帧缓冲,应只将发送给监视器的最后的那个帧缓冲应用gamma校正。让两个帧缓冲之间传递的中间结果仍然保持线性空间颜色,
    • 方法二:
float gamma = 2.2;
fragColor.rgb = pow(fragColor.rgb, vec3(1.0/gamma));
    • 第二个方法有完全的控制权:很好了解决了上面多个帧缓冲的问题,但是同时有很多Fragment着色器的话,必须在像素着色器里加上这个gamma校正

gamma校正的问题:(针对外部引用的sRGB空间创作的资源)   

  • sRGB空间(Gamma == 2.2):创建或编辑的图片,是在非线性空间进行,比如将颜色翻倍,实际上是根据你所感知到的亮度进行的,并不等于将颜色值加倍。
  • 在我们没有应用gamma校正,没有问题的,纹理在sRGB空间创建和展示,同样我们还是在sRGB空间中使用,
  • 当应用gamma校正之后:纹理在sRGB空间创建和展示,在线性空间中使用,纹理图像会特别亮,
  • 原因是:基于sRGB空间中显示的更暗一些,纹理制作者设置的颜色值就比本来更亮,当将这个颜色值应用gamma校正之后,转变为线性空间,颜色会比没有应用gamma校正看到的更亮

解决:

  • 确保纹理制作者是在线性空间中进行创作的,这样颜色值是正确的,应用gamma校正之后,亮度也是相同的
  • 但是:大多数纹理制作者并不知道什么是gamma校正,另一个解决方案是重校:
  • 每个sRGB空间的纹理:在进行任何颜色值的计算前^2.2,变回监视器看到的颜色效果
  • 但是:为每个sRGB空间的纹理做这件事非常烦人。OpenGL给我们提供了另一个方案,glTexImage2D(),GL_SRGB和GL_SRGB_ALPHA内部纹理格式。

另一个不同之处是光照衰减

  • 物理公式:光照的衰减和光源的距离的平方成反比。
  • 二次函数:1.0 / (distance * distance);但是衰减效果总是过于强烈,光只能照亮一小圈,看起来并不真实
  • 双曲线方程:1.0 / distance;
  • 不用gamma校正的时候,双曲线比使用二次函数变体更真实,开启gamma校正以后,符合物理的二次函数突然出现了更好的效果
  • 不用gamma校正,为什么?双曲线比使用二次函数变体更真实?
  • 二次函数:(1.0/distance2)2.2将产生更强烈的衰减,双曲线1.0/distance2.2,和物理公式是很相似

Gamma校正作用:

  • 线性空间更符合物理世界,大多数物理公式现在都可以获得较好效果,
  • 应用中配置的亮度和颜色,在不同的显示设备上呈现一致的效果,正确的设置物理颜色值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1873110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Navicat数据库软件免费了!推出Navicat Premium Lite

2024年6月26日,数据库管理工具领域的知名品牌Navicat,推出其免费版本——Navicat Premium Lite,用户可从Navicat官网下载体验这款软件。 这款针对入门级用户的数据库管理开发工具,支持基础的数据库管理和协同合作功能&#xff0c…

仓颉开发入门初体验

作者:黄林晴 顺便吆喝一声,如果你计算机、软件工程、电子等相关专业本科及以上学历,欢迎来共事。前端/后端/测试均可投,技术大厂。 前言 在刚刚召开的华为开发者大会(HDC 2024)上,华为内部研…

观测到“量子反常霍尔效应”,为何就被称为“离诺奖最近的物理学家”?

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:2000字丨8分钟阅读 6 月 24 日,2023 年度国家最高科学技术奖在京揭晓,61岁的凝聚态物理领域科学家、清华大学薛其坤院士荣…

基于改进天鹰优化算法(IAO)优化BP神经网络数据分类预测(IAO-BP)

改进天鹰优化算法(IAO)见:【智能优化算法】改进的AO算法(IAO)-CSDN博客 BP神经网络的数据分类预测:基于BP神经网络的数据分类预测-CSDN博客 代码原理 基于改进天鹰优化算法(IAO)优化BP神经网络数据分类预测(IAO-BP&…

win系统缺少vcruntime140.dll文件的解决办法,亲测实用的解决方法

运行软件的时候提示无法启动此程序,因为计算机中丢失 vcruntime140.dll 尝试重新安装该程序以解决此问题,其实主要因为vcruntime140.dll丢失,如果您启动程序并收到 Windows 无法找到 vcruntime140.dll DLL 或它丢失的错误,您可以使…

# Kafka_深入探秘者(10):kafka 监控

Kafka_深入探秘者(10):kafka 监控 一、kafka JMX 1、JMX :全称 Java Managent Extension 在实现 Kafka 监控系统的过程中,首先我们要知道监控的数据从哪来,Kafka 自身提供的监控指标(包括 broker 和主题的…

如何进行员工 OKR 反馈?

目标和关键结果框架是一种协作性的目标设定方法,帮助团队设定理想的目标(目标),并有具体的、可衡量的行动项目,称为关键结果。实施 OKR 为一个富有成效的、以目标为导向的环境奠定了基础,从而消除了提供反馈…

报名通道开启!2024国际燃气轮机运维大会将于10月登陆花城

驱动未来运维技术革新 共筑燃机生态新纪元 | 2024国际燃气轮机运维大会报名通道正式开启 随着全球燃气轮机装备技术不断升级与“双碳”战略的深入,全球燃气轮机市场规模也将进一步扩大,预计到2033年达到536.7亿美元左右,2023-2033年预测期间年…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…

普元MDM主数据管理系统与金蝶云星空ERP系统(企业版)集成方案(工程机械行业)

一、客户介绍 某工程机械行业龙头公司业务范围包括工程机械、矿山机械、农业机械、环卫机械、应急救援装备和商用汽车、现代服务业等,产品远销190多个国家和地区,覆盖“一带一路”沿线95%以上的国家和地区,年出口总额和海外收入持续居中国行…

10种超强图像特征提取算法Python代码实现

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的VX公众号:python算法小当家,不定期会有很多免费代码分享~ 图像特征提取是计算机视觉和图像处理的关键步骤,因…

中国航天:星舰与猛禽发动机数据分析

文章目录 MainReference Main 马斯克坚信,随着星舰的全面投入运营,SpaceX将能够承担地球上主轨道超过99%的载荷质量。这款第三代星舰的起飞推力将跃升至10000吨以上,其有效载荷质量亦将高达200吨以上。 不仅如此,每次发射的成本控…

文华财经盘立方同花顺期货通均线多空变色指标公式源码

文华财经盘立方同花顺期货通均线多空变色指标公式源码: VAR1:(HHV(HIGH,21)-C)/(HHV(HIGH,21)-LLV(LOW,21))*100-10; VAR2:(C-LLV(LOW,21))/(HHV(HIGH,21)-LLV(LOW,21))*100; VAR3:SMA(VAR2,13,8); 多方: SMA(VAR3,13,8),LINETHICK2; A:MA(-100*(HHV(HIGH,34)-…

又是一篇关于GD32堆栈的梳理+FreeRTOS的空间

GD32F103CB:SRAM 20K(0x5000) 这篇文章主要想讲清楚几个事情: 1、启动文件Stack_Size、Heap_Size的大小设置有啥影响; 2、FreeRTOS的内存:FreeRTOSConfig.h文件configTOTAL_HEAP_SIZE; 问题2…

Linux[高级管理]——Squid代理服务器的部署和应用(传统模式详解)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年6月24日11点11分 🀄️文章质量:95分 目录 ————前言———— Squid功能 Squ…

仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt

本文主要讲述使用MindOpt工具优化仓库选址的数学规划问题。 视频讲解👈👈👈👈👈👈👈👈👈 一、案例场景 仓库选址问题在现代物流和供应链管理中具有重要的应用。因为仓库…

AI 时代程序员生存指南 —— 一名普通程序员的ChatGPT 一周年回顾

ChatGPT 发布一周年了,切实改变了我的工作方式和职业路径,趁着周末写下这篇文章,我希望以一名普通程序员的视角,带大家回顾一下过去一年大模型领域的发展情况,以及个人的所思所想。文章会分为四个部分,从初…

AWS云计算平台:全方位服务与实践案例

摘要 在数字化浪潮的推动下,云计算已成为企业转型的强大引擎。AWS作为云计算的先锋,不仅提供了一系列强大的基础设施服务,更是在人工智能领域不断探索和创新。本文将带您领略AWS的全方位服务,并透过实际案例,感受其在…

文心一言 VS 讯飞星火 VS chatgpt (291)-- 算法导论21.3 4题

四、假设想要增加一个 PRINT-SET(x) 操作,它是对于给定的结点 x 打印出 x 所在集合的所有成员,顺序可以任意。如何对一棵不相交集合森林的每个结点仅增加一个属性,使得 PRINT-SET(x) 所花费的时间同 x 所在集合元素的个数呈线性关系&#xff…

新手必备!短视频剪辑常用的18个技巧——剪映篇

导入素材:这里我们可以选择自己拍摄好的素材(图片、视频或录制好的音频),按照顺序导入剪辑区剪辑。这一步是剪辑的基础,确定剪辑的大体思路与成片框架!别忽略了,剪映官方素材库提供的素材&#…