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

原始背光面

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统课程设计-Windows 线程的互斥和同步

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 创建生产者和消费者进程 3.2.2 生产者和消费者进程 4 实验结果与分析 5 代码 前言 本实验为课设内容,博客内容为部分报告内容,仅为大家提供参考,请勿直接抄…

python PyQt5的学习

一、安装与配置 1、环境: python3.7 2、相关模块 pip install pyqt5 pyqt5-tools pyqt5designer 可以加个镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple3、配置设计器 python的pyqt5提供了一个设计器,便于ui的设计 界面是这样的&#xff1a…

MySQL三大日志

1. redo log 1.1 特点 InnoDB存储引擎独有物理日志,记录在数据页上做的修改让MySQL拥有了崩溃恢复能力,保证事务的持久性 1.2 刷盘时机 事务提交时log buffer 空间使用大约一半时事务日志缓冲区满InnoDB 定期执行检查点Checkpoint后台刷新线程&#…

网工内推 | 运维工程师,最高10K*15薪,思科认证优先

01 乐歌股份 招聘岗位:服务器运维工程师 职责描述: 1、负责公司云上云下所有服务器的日常运维工作,包括应用部署、巡检、备份、日志、监控,故障处理,性能优化等,保障公司相关系统稳定运行。 2、为开发、测…

SMART PLC 模拟量批量转换功能块“Multi_ITR“

模拟量输入转换功能块S_ITR详细公式和代码介绍请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/121347697https://rxxw-control.blog.csdn.net/article/details/121347697Smart PLC指针和FOR循环组合应用 https://rxxw-control.blog.csdn.net/arti…

go实现判断20000数据范围内哪些是素数(只能被1和它本身整除的数),采用多协程和管道实现

实现一个并发程序,用于寻找 20000 以内的所有素数。使用了 Goroutines 和 Channels 来分发和处理任务,并通过 WaitGroup(实现为 exitChan)来同步 Goroutines 的退出。 一.GO代码 package mainimport ("fmt""time…

捍卫中华数学产权系列6.Σ1/n的分级通式与对应的求和公式

调和级数Σ1/n在欧系数学是极为重要的概念,它是纯粹数学的七寸、关乎欧系数学的存废。然而欧洲人对Σ1/n从来没有发现任意一个求和公式。本人以简单而充分的逻辑给Σ1/n进行了多种多样的分级、并给出了各自对应的求和公式,所以,一切关于调和级…

vue+elementui实现12个日历平铺,初始化工作日,并且可点击

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true"><el-form-item label"年份" prop"holidayYear"><el-date-…

Verilog基础:强度建模(一)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式&#xff0c;这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…

string 模拟实现

string的数据结构 char* _str; size_t _size; size_t _capacity; _str 是用来存储字符串的数组&#xff0c;采用new在堆上开辟空间&#xff1b; _size 是用来表示字符串的长度&#xff0c;数组大小strlen(_str)&#xff1b; _capacity 是用来表示_str的空间大小, _capacity…

使用 Postman 发送 get 请求的简易教程

在API开发与测试的场景中&#xff0c;Postman 是一种普遍应用的工具&#xff0c;它极大地简化了发送和接收HTTP请求的流程。要发出GET请求&#xff0c;用户只需设定正确的参数并点击发送即可。 如何使用 Postman 发送一个GET请求 创建一个新请求并将类型设为 GET 首先&#…

余承东发声!预测:2024年,鸿蒙OS将取代苹果iOS…

半导体行业观察机构Techinsights&#xff0c;1月3日发布报告预测&#xff1b;从2024年起&#xff0c;鸿蒙Harmony OS将取代苹果iOS&#xff0c;成为中国市场上第二大智能手机操作系统。 TechInsights预测&#xff0c;2024年全球智能手机销量将同比反弹3%。华为手机在2024年将坚…

基于Harris角点的多视角图像全景拼接算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Harris角点检测 4.2 图像配准 4.3 图像变换和拼接 4.4 全景图像优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 function [ImageB…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务&#xff0c;ingress service作用现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部&#xff1a;类似于负载均衡器&a…

如何在Linux运行RStudio Server并实现Web浏览器远程访问

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. …

Linux系统编程(二)文件IO/系统调用IO

一、IO 简介 I/O 是一切实现的基础&#xff1a; 标准 IO&#xff08;stdio&#xff09;&#xff1b;系统调用 IO&#xff08;sysio&#xff0c;文件IO&#xff09;&#xff1b; 不同系统上的系统调用 IO 的使用方式可能不一样&#xff0c;为了隐藏不同系统上的细节&#xff…

mysql 为大表新增字段或索引

1 问题 mysql 为大表增加或增加索引等操作时&#xff0c;直接操作原表可能会因为执行超时而导致失败。解决办法如下。 2 解决办法 &#xff08;1&#xff09;建新表-复制表A 的数据结构&#xff0c;不复制数据 create table B like A; &#xff08;2&#xff09;加字段或索…

使用muduo库编写网络server端

muduo库源码编译安装和环境搭建 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 #include<iostream> #include<muduo/net/TcpServer.h> #include<muduo/net/EventLoop.h> using namespace std; using namespace muduo; using name…

两道有挑战的问题(算法村第九关黄金挑战)

将有序数组转换为二叉搜索树 108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个…

作为班主任如何管理好班级

作为班主任&#xff0c;如何才能把班级管理得井井有条&#xff0c;让每个学生都能够得到全面的发展呢&#xff1f;这个问题一直困扰着许多班主任。接下来&#xff0c;我将从几个方面来分享一下自己的经验和看法。 建立良好的师生关系是班级管理的基石。作为班主任&#xff0c;…