【光照】[物理模型]中的[BRDF]是什么?

news/2025/9/26 15:21:51/文章来源:https://www.cnblogs.com/SmalBox/p/19113565

【从UnityURP开始探索游戏渲染】专栏-直达

双向反射分布函数 Bidirectional Reflectance Distribution Function 解释当光线从某个方向照射到一个表面时,有多少光线被反射、反射方向有哪些。BRDF大多使用一个数学公式表示,并提供一些参数来调整材质属性。

BRDF(双向反射分布函数)是计算机图形学和光学中描述物体表面反射特性的核心数学模型,其定义和特性如下:


基本定义

BRDF(Bidirectional Reflectance Distribution Function)表示‌入射光方向(ωi)与出射光方向(ωr)的反射辐射率(radiance)与入射辐照度(irradiance)的比值‌,数学表达式为:

$f_r(ω_i,ω_r)=\frac{dL_r(ω_r)}{dE_i(ω_i)}$

其中,$L_rL_r$为反射辐射率,$E_i$为入射辐照度‌。


核心特性

  • 双向性‌同时依赖入射和出射方向,能精确描述光线在表面的空间分布‌。
  • 能量守恒‌反射率总和≤1,避免非物理的光能溢出‌。
  • 微观结构关联‌通过微表面理论(Microfacet Theory)建模表面粗糙度对反射的影响‌。

物理意义

  • 反射行为分解
    • 漫反射‌:光线均匀散射(如Lambert模型)
    • 镜面反射‌:光线集中反射(如GGX模型)‌。
  • 材质区分‌金属与非金属的BRDF差异显著(如菲涅尔效应在金属中更明显)‌。

‌BRDF的光照分解与实现原理‌

BRDF将表面反射分为‌漫反射Diffuse‌ 和‌镜面反射Specular‌ 两部分(环境光通过IBL技术整合),其数学表达式为:

$f_r(ω_i,ω_o)=f_{diffuse}+f_{specular}$

‌漫反射(Diffuse)‌

  • 作用‌:模拟光线在表面微结构中多次散射的均匀反射(如布料、粗糙墙面)。
  • 物理模型‌:
    • Lambertian模型‌:基础形式 $f_{\text{diff}} = \frac{\text{albedo}}{\pi}$
    • 改进模型‌:Oren-Nayar(考虑表面粗糙度)或 Disney BRDF(艺术可控)
  • 能量守恒约束‌:漫反射部分需满足:$∫_Ωf_{diff}(ω_i⋅n)dω_i≤1−F_0$其中 $F_0$ 是菲涅尔基础反射率。

‌镜面反射(Specular)‌

基于‌微表面理论‌(Microfacet Theory),分解为三个物理项:

$f_{spec}=\frac{F(θ_h)⋅D(α,θ_h)⋅G(α,θ_i,θ_o)}{4⋅(n⋅ω_i)⋅(n⋅ω_o)}$

  • 法线分布函数 NDF
    • 作用‌:描述微表面法线朝向的统计分布(决定高光形状)。
    • 常用模型‌:
      • GGX/Trowbridge-Reitz‌:$D(h) = \frac{\alpha_g^2}{\pi [(n \cdot h)^2 (\alpha_g^2 - 1) + 1]^2}$(α=粗糙度,h=半角向量)
      • Beckmann‌:较早的物理模型,拖尾效果不如GGX真实
  • 几何遮蔽函数 G
    • 作用‌:模拟微表面间阴影和遮挡(如粗糙表面的光能损失)。
    • Smith模型‌:$G = G_1(\omega_i) \cdot G_1(\omega_o)G_1(\omega) = \frac{n \cdot \omega}{(n \cdot \omega) (1 - k) + k}$(k=粗糙度重映射参数)
  • 菲涅尔项 F
    • 作用‌:计算不同视角下的反射率变化(如掠射角反射增强)。
    • Schlick近似‌:$F(\theta) = F_0 + (1 - F_0)(1 - \cos\theta)^5$($F_0$=基础反射率,金属≈0.5-1.0, 非金属≈0.02-0.05)

‌环境光的处理(间接光照)‌

传统“环境光”在BRDF中被升级为 ‌IBL Image-Based Lighting‌:

  • 漫反射环境光‌:通过‌辐照度贴图Irradiance Map‌ 预计算半球积分$L_{diff}=albedo⋅\frac1π∫_ΩL_i(ω_i)(n⋅ω_i)dω_i$
  • 镜面反射环境光‌:
    • 预过滤环境贴图(Prefiltered Environment Map)
    • 重要性采样 + BRDF LUT(查找表)

‌与传统光照模型的对比‌

光照成分 标准光照模型 BRDF实现方式
漫反射 $Lambert = k_d * (n·l)$ 能量守恒约束的Oren-Nayar/Disney模型
高光反射 $Phong = k_s * (v·r)^n$ 微表面模型(D+F+G项物理计算)
环境光 恒定或环境贴图采样 IBL技术(辐照度图+预过滤镜面贴图)
能量守恒 不保证(可能过曝) 强制满足diffuse + specular ≤ 1

‌BRDF在渲染管线中的实现流程(以GGX为例)‌

hlsl
// Unity URP 中的核心代码片段(简化版)
float3 BRDF_PBS(float3 albedo, float metallic, float roughness,float3 N, float3 V, float3 L) {// 计算基础参数float3 H = normalize(V + L);float NdotV = saturate(dot(N, V));float NdotL = saturate(dot(N, L));// 1. 菲涅尔项 (F)float3 F0 = lerp(0.04, albedo, metallic); // 基础反射率float3 F = FresnelSchlick(saturate(dot(H, V)), F0);// 2. 法线分布 (D)float D = NDF_GGX(roughness, N, H);// 3. 几何遮蔽 (G)float G = GeometrySmith(roughness, NdotV, NdotL);// 4. 组合镜面反射float3 nominator = D * G * F;float denominator = 4 * NdotV * NdotL;float3 specular = nominator / max(denominator, 0.001);// 5. 漫反射 (能量守恒)float3 kD = (1 - F) * (1 - metallic); // 金属无漫反射float3 diffuse = kD * albedo / PI;return (diffuse + specular) * NdotL;
}

‌关键突破‌

  • 物理正确性‌:通过微表面理论和能量守恒避免人工调参的不真实感。
  • 材质统一性‌:参数(金属度/粗糙度)在所有光照环境下保持一致性。
  • 环境响应‌:IBL使物体自然融入环境光照(如金属反射周围景物)。

‌示例对比‌:传统Phong模型在粗糙金属表面会产生圆形高光,而GGX BRDF会生成拖尾式高光(符合真实相机拍摄效果)。


【从UnityURP开始探索游戏渲染】专栏-直达

(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

网站开发公司企业青海省公路建设总公司网站

大前端、微服务、数据库、更多精彩,尽在开发者分会场 【Apache Dubbo】 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,是国内影响力最大、使用最广泛的开源服务框架之一,它提供了三大核心能力:面向接口的远程方法调用&…

江苏海通建设有限公司网站做下载网站用阿里云的什么产品

CleanMyMac X帮助Mac系统进行垃圾清理,清除多余的缓存、应用程序等,在提高工作效率上起了很大的作用。但是随着对软件的需求不断增加,很多人开始研究通过捷径破解正版软件,但是是否能成功呢?今天小编就为大家揭开“断网…

[fakeadmin]-(session伪造flask框架)-CTF

[fakeadmin](session伪造&flask框架) 一,打开题目,发现源码 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, session import os import randomapp = Flask(__name__) app.config[SEC…

《Linux Robust锁》

1.Robust锁Robust锁(健壮锁)是POSIX线程库提供的一种特殊互斥锁,专门设计用于处理持有锁的进程或线程意外终止的情况,核心目的是解决因锁持有者崩溃导致的死锁问题。2.使用场景多进程共享内存的时候,某个进程持有…

实用指南:Agent智能体+DeepSeek全教程:零基础到精通,一键生成可视化报表!

实用指南:Agent智能体+DeepSeek全教程:零基础到精通,一键生成可视化报表!2025-09-26 15:16 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-…

Manim实现气泡特效

本文将介绍如何使用Manim框架实现一个简单而实用的气泡特效,该特效可用于多种场景,如背景装饰、数据可视化过渡等。 1. 实现原理 气泡特效的核心在于BubbleEffect类,它继承自Manim的Animation类,通过重写关键方法来…

石家庄商标设计小黄人seo

#停止原有工程 ps -ef | grep demo | grep -v grep | awk {print $2} | xargs kill#删除原有工程 rm -rf /opt/app/demo.jar#解压压缩包指定文件,并存入指定路径 #tar -zxf 压缩包 -C 解压到的路径 压缩包中指定文件名 tar -zxf /opt/app/demo.tgz -C /opt/app .…

完整教程:决策树(Decision Tree)

完整教程:决策树(Decision Tree)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

C# Inno Setup

1.安装 inno Setup 2.参考博客 Inno Setup编译器巨详细使用教程-CSDN博客

CF2139虚拟游记

前言 CF2139 \(Div.2\) 难度。 由于刚上大学,开学有很多活动,连参加 vp 的时间都挤不出来。 A.Maple and Multiplication 题面 共 \(t\) 组数据,每组数据: 给定两个数 \(a,b\) ,你可以进行任意次操作:选择一个整…

新方向 - MKT

新方向 1 国防科技大学 语义 2 美团 毛一年 机器人研究院 120m 200-300米 无人机基本参数 老版本 新版本2.4kg (1)视觉卫星图定位 (2)动态重新规划路径 (3)夜间场景 多视角相机的夜间视觉导航下视觉 3…

网站 框架wordpress 换页面

十一章:Java 集合 一、集合框架的概述 1、集合:就像一个容器,可以动态的把多个对象的引用放入容器中。简称 Java 容器 ​ 说明:此时的存储,主要指的是内存层面的存储,不涉及到持续化的存储(.t…

用h5做简易网站代码wordpress视频弹窗

diannao1xiejiandeMacBook-Air ~ % su Password: su: Sorry输入 sudo passwd 命令重置密码即可。

融合多元定位技术,帮助应用破解精准定位难题

从查阅天气到记录运动轨迹,从打车到路径规划等,移动终端已深入人们日常生活的方方面面,看似简单的操作背后,都依赖于精准的定位技术。对于应用开发者,位置数据的实时性与准确性直接决定用户体验。当前主流定位技术…

PP-OCRv5 C++ 基准测试工具:打造高性能OCR评测标杆 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

自定义中间件进入管道中执行队列的流程

自定义中间件进入管道中执行队列的流程 1. 自定义中间件类的标准写法 public class CustomLoggingMiddleware {private readonly RequestDelegate _next;// 1. 构造函数必须包含 RequestDelegate next 参数public Cust…

网站推广的常用途径有哪些网站ftp需要关闭

一、集成测试和系统测试的区别 (一)测试的目的 • 集成测试:主要目的是验证各个模块组合在一起后,它们之间的接口和交互是否正确,是否能够按照设计要求协同工作,以确保系统的稳定性和可靠性,重…

做一个回收网站怎么做免费网站建

当人用眼睛看事物的时候,会感觉到近处的东西是比远处的东西要大一些的,通俗的说,这就是透视。 总的来说。透视变换是将3D的世界转换到2D图像上的一种手段,人的视觉系统和摄像头视觉系统也是基于这一工作原理。 对透视变化的研究&a…

ps做产品的网站怎么做免费的产品图片网站

大家好,今天来聊聊论文降重隐藏字符怎么识别,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 论文降重隐藏字符的识别方法 一、引言 在论文降重过程中&#xff…

翻斗幼儿园历险记-CTF-WP

翻斗幼儿园历险记 一、搭建: docker-compose up -d 运行那个docker-compose.yml文件即可打开127.0.0.1:32777就运行好了2、打法 文件上传前端过滤,bp抓包改后缀即可盲猜一波,上传的目录是/uploads下面 哥斯拉连上马…