PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型,它的公式如下

C_{diffuse} = C_{light} * M_{diffuse} * max(0, n \bullet l)

其中:

        C_{diffuse} :漫反射光颜色

        C_{light} :入射光颜色

        M_{diffuse} :材质的漫反射系数

        n :法线方向

        l :光源方向

由于背光面的法线方向和光源方向的点积为负数,因此光线无法照射到的区域最终漫反射始终为黑色,无法看到物体的表面细节。

半兰伯特光照模型是在兰伯特光照模型基础上做的改进,用于解决兰伯特模型中光线无法照射到的区域完全没有漫反射导致看起来全黑的问题。虽然半兰伯特模型没有任何物理依据,但是它的确能改善视觉效果。它按如下公式计算漫反射:

C_{diffuse} = C_{light} * M_{diffuse} * (0.5 (n \bullet l) + 0.5)

可以看到和兰伯特模型的区别在于对点积部分做了一个变化,使得光线能照到的地方点积在 [ 0.5, 1.0 ] 区间,光线照不到的地方点积在 [ 0, 0.5 ] 范围内,这样背光面也会有明暗变化。

PBR材质中漫反射的计算也遵循兰伯特模型,因此也可以用半兰伯特模型来改进效果。只需要对点积的区间做上述变换就可实现。

原始背光面

半兰伯特模型改造后的背光面 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android中的anr定位指导与建议

1.背景 8月份安卓出现了一次直播间卡死(ANR)问题,且由于排查难度较大,持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨. 这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住…

新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?

随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电桩设备的安全和稳定运行。 通过TSINGSEE青犀&触角…

牛客周赛 Round 14 题解报告 | 珂学家 | 环形模拟 + 滑窗前缀和二分 + 数学

前言 整体评价 这场牛客周赛很特别,没有一题是水题(签到),也没真正意义上的压轴题。 牛客周赛还是注重数学,B,D是数学题,A是模拟题,C的解法偏多,滑窗/26组前缀和&二…

欧科云链与《警察技术》联合发布技术专题.pdf

欧科云链受《警察技术》邀请,于第201期期刊正式刊登“区块链生态安全与虚拟货币犯罪治理”技术专题。欧科云链作为该技术专题主要作者,直接参与本次期刊2篇文章撰写,同时为多篇文章提供欧科云链的最新数据和研究成果。 《警察技术》期刊创办于…

深入Docker5:安装nginx部署完整项目

目录 准备 为什么要使用nginx mysql容器构建 1.删除容器 2.创建文件夹 3.上传配置文件 4.命令构建mysql容器 5.进入mysql容器,授予root所有权限 6.在mysql中用命令运行sql文件 7.创建指定数据库shop 8.执行指定的sql文件 nginx安装与部署 1.拉取镜像 2…

C++ 之路如逆水行舟 不进则退

C 核心编程 内存分区模型 C 程序在执行时,将内存大方向划分为 4 个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放 , 存放函数的参数…

15、注册表永久关闭Citrix云桌面UAC功能

一、说明 我们经常使用Citrix云桌面时候遇到打开软件会弹出一个输密码的界面,这个其实是UAC,此次我们主要使用注册表方式彻底关闭。 二、注册表方式 打开路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Syst…

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目?那下面这些坑我们就需要来避免了,否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…

Mysql root 密码重置详解

文章目录 1 概述1.1 前言1.2 mysql 版本查询 2 windows 操作系统2.1 mysql 8 及以上版本2.1.1 关闭 mysql 服务2.1.2 通过无认证方式启动 mysql2.1.3 新开窗口,登录 mysql,重置密码 1 概述 1.1 前言 不同的操作系统(如:windows、…

Unity 编辑器篇|(十)Handles (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Handles两种使用方式3.1 基于Editor类的OnSceneGUI3.2 基于EditorWindow 4 Handles绘制4.1 Draw:绘制元几何体(点、线、面)4.1.1 抗锯齿: DrawAAPolyLine 、 DrawAAConvexPolygon4.1.2 绘制实线: DrawLine 、 DrawLines 、DrawP…

Python基础第一篇(Python概念介绍)

文章目录 一、前言:二、第一个Python程序三,理解Python的解释器四,Python解释器的使用五,Python开发环境 一、前言: 欢迎来到我们的Python学习专栏。在这里,我们将一起探索Python这门强大、灵活、易于学习…

electron+vite+vue3 快速入门教程

文章目录 前言一、electron是什么?二、electron 进程模型1.主进程2.渲染进程3.预加载脚本4.进程通信4.1 sendon(单向)4.2 invokehandle (双向)4.3 主进程向渲染进程发送事件 三、窗口创建与应用事件四、技术栈和构建工具五、electron-vite安装…