当前位置: 首页 > news >正文

【光照】Unity[经验模型]和[物理模型]

Unity URP(Universal Render Pipeline)中的光照模型BRDF(双向反射分布函数)是PBR(基于物理的渲染)的核心组成部分,用于模拟真实世界的光照交互。

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

一、BRDF发展历史(时间线)

  • 1971年‌:Bouknight提出首个光反射模型,引入Lambert漫反射定律计算表面光强,并用环境光处理阴影区域‌。
  • 1975年‌:裴祥风(Phong)提出Phong光照模型,首次结合漫反射、环境光和高光反射,成为图形学首个经验模型‌。
  • 1980年‌:Whitted提出光线追踪模型,整合反射、折射和阴影,但仅适用于理想镜面反射‌。
  • 1982年‌:Cook和Terrance提出Cook-Torrance BRDF模型,基于微表面理论,首次用数学公式描述镜面高光反射‌。
  • 1986年‌:Kajiya提出渲染方程,统一描述光在场景中的流动,BRDF作为核心函数被纳入‌。
  • 2000年代后‌:GGX、Beckmann等法线分布函数(NDF)和几何遮蔽函数(G)的加入,完善了PBR体系(如Unity URP中的实现)‌。

二、理论原理

BRDF函数描述入射光方向(ωi)和出射光方向(ωo)的反射关系,核心公式为:

fr(ωi,ωo)=出射辐亮度入射辐照度

关键理论包括:

微表面理论‌:

  • 表面由无数微小镜面组成,粗糙度决定反射扩散程度‌。

能量守恒‌:

  • 出射光能量 ≤ 入射光能量,粗糙表面反射区域扩大但亮度降低‌。

菲涅尔效应‌:

  • b反射率随视角变化,金属材质表现更明显‌。

Cook-Torrance模型‌:

  • 法线分布函数(NDF):如GGX描述微表面法线分布‌。

  • 几何遮蔽函数(G):如Smith模型处理自遮挡‌。

  • 菲涅尔项(F):计算基础反射率‌。完整公式:fr=4⋅(ωin)⋅(ωon)D(ωh)⋅F(ωi)⋅G(ωi,ωo)其中,ωh为半向量,n为表面法线‌。

    fr=D(ωh)⋅F(ωi)⋅G(ωi,ωo)4⋅(ωi⋅n)⋅(ωo⋅n)


三、实际应用与示例

在Unity URP中,BRDF通过Shader实现,核心应用包括:

标准光照模型‌:

// 漫反射(Lambert)
float3 diffuse = albedo * saturate(dot(lightDir, normal));
// 高光反射(Blinn-Phong)
float3 specular = pow(saturate(dot(halfVector, normal)), shininess) * specularStrength;

结合环境光和自发光,形成完整光照‌。

PBR材质系统‌:

  • 金属度(Metallic)和粗糙度(Roughness)参数控制BRDF行为‌。

  • 示例:URP Shader中集成GGX NDF和菲涅尔项:实现真实金属/非金属反射‌。

    float3 F0 = mix(vec3(0.04), baseColor, metallic);
    float3 F = F0 + (1.0 - F0) * pow(1.0 - max(dot(halfVector, viewDir), 0.0), 5.0);
    float3 specular = (D * F * G) / (4.0 * max(dot(normal, viewDir), 0.0) * max(dot(normal, lightDir), 0.0));
    

各向异性反射‌:

  • 通过修改NDF模拟拉丝金属等效果.

BRDF(双向反射分布函数)与标准光照模型(如Phong模型)是计算机图形学中描述光照交互的两种不同方法,二者在理论基础、计算方式和应用场景上存在显著差异。

一、理论定位差异

BRDF

  • 基于物理的渲染(PBR)核心模型,严格遵循能量守恒和微表面理论,通过数学公式描述光线在任意入射/出射方向上的反射分布‌。
  • 包含漫反射和镜面反射的完整物理模拟,如GGX法线分布、菲涅尔效应等‌。

‌标准光照模型(Phong)

  • 经验模型,通过简化渲染方程,将光照分解为环境光、漫反射和镜面反射三部分‌。
  • 镜面反射使用Phong公式(如(v·r)^n)计算,缺乏物理依据,仅依赖经验参数(如高光指数n)‌。

二、计算方式对比

特性 BRDF模型 Phong模型
反射计算 基于微表面理论,分项计算D/F/G‌ 直接使用(v·r)^n计算高光‌
能量守恒 严格满足(如菲涅尔项限制反射率)‌ 可能超出(如高光指数n过大)‌
参数意义 物理参数(粗糙度、金属度)‌ 经验参数(光泽度、高光强度)‌

三、应用场景

BRDF的适用性

  • 用于PBR材质(如Unity URP的Standard Shader),模拟真实材质(金属、布料)的光照行为‌。
  • 示例:通过调整粗糙度参数,实现从镜面到漫反射的平滑过渡‌。

标准光照模型的适用性

  • 适用于低性能设备或风格化渲染(如卡通效果),计算效率高但物理准确性低‌。
  • 示例:Phong模型在早期游戏(如《魔兽争霸3》)中广泛使用‌。

四、演进关系

  • 从Phong到BRDF‌:Phong模型是BRDF的简化前身,后者通过引入物理理论(如微表面、能量守恒)解决了前者的非物理问题‌。
  • 现代替代‌:Unity等引擎已逐步用BRDF替代Phong模型,但Phong仍用于教学或快速原型开发‌

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

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

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

http://www.zskr.cn/news/4343.html

相关文章:

  • 9.14做题随记
  • centos 安装 postgresql 数据库
  • STM32 HAL学习笔记:EC11的使用和定时器中编码器模式的中断
  • Java并发编程(1)
  • 「嘶吼」第一章:吃饭睡觉打豆豆
  • go代码(1)
  • 7种常见的入侵检测系统规避技术解析
  • MySQL 核心记录解析:从配置到存储的 “说明书 + 记录仪” 系统
  • 结合Spring和MyBatis实现DAO层操作综述
  • 202205_CHIMA_follow
  • Ubuntu 安装 CLion
  • 面向对象编程(OOP)的原则
  • 25/9/12(补,上一篇是9/11的)
  • 实用指南:操作系统类型全解析:从批处理到嵌入式
  • 111111111
  • 深入解析:“纳米总管”——Arduino Nano 的趣味生活
  • 洛谷题目难度系统优化
  • 202112_摆烂杯_WhatAHack!
  • 3 线性模型
  • windows系统缺失DLL库文件下载方法
  • Qt/C++开发监控GB28181系统/公网对讲/代码实现28181语音对讲/采集本地麦克风数据/支持udp和tcp模式
  • P3195 [HNOI2008] 玩具装箱 (斜率优化)
  • sh-2025模拟赛
  • Java 注解机制全解析:原理、用途与框架中的实战
  • 暑假
  • 6G 驱动的智慧城市新格局
  • Java 在移动开发与跨平台应用中的应用
  • PySimpleGUI安装4.60.5老版本安装教程!
  • PySimpleGUI-免注册版本
  • PySimpleGUI 开始注册了,怎样能免注册使用早期版本?