【光照】[光照模型]发展里程碑时间线

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

图形学光照模型发展史:技术演进与里程碑

section 基础奠基期(1960s-1970s)

  • 1967 : Lambert模型(漫反射) - Bui Tuong Phong提出
  • 1971 : Gouraud着色 - Henri Gouraud发明顶点插值着色
  • 1973 : Warnock算法 - 首次实现隐藏面消除
  • 1975 : Phong模型 - Bui Tuong Phong提出完整反射模型

section 物理模型探索期(1980s)

  • 1980 : Whitted光线追踪 - Turner Whitted实现全局光照
  • 1981 : Cook-Torrance模型 - 首个微表面BRDF
  • 1982 : Blinn-Phong改进 - Jim Blinn优化Phong模型
  • 1984 : Radiosity方法 - Cornell大学提出热辐射算法
  • 1986 : Kajiya渲染方程 - 奠定现代渲染数学基础

section 实时渲染突破期(1990s)

  • 1991 : Ward各向异性模型 - 解决拉丝金属效果
  • 1993 : Schlick近似 - 高效菲涅尔计算
  • 1996 : Oren-Nayar模型 - 粗糙表面漫反射
  • 1997 : HDR渲染 - Debevec首次实现高动态范围

section 现代PBR时期(2000s-)

  • 2003 : Ashikhmin-Shirley模型 - 各向异性BRDF
  • 2007 : GGX分布 - Bruce Walter引入长尾高光
  • 2010 : Disney BRDF - Brent Burley统一艺术工作流
  • 2014 : UE4 PBR - Tim Sweeney推动游戏业标准化
  • 2016 : 路径追踪实时光追 - NVIDIA Turing架构

一、基础奠基期(1967-1979)

1967:‌Lambert漫反射模型‌

  • 提出者‌:法国计算机科学家Bui Tuong Phong
  • 核心贡献‌:L = k_d * I * max(0, N\cdot L)
  • 背景‌:犹他大学早期CG研究,受限于SDS 9300主机(32KB内存)
  • 意义‌:首个可计算的漫反射模型

1971:‌Gouraud着色‌

  • 提出者‌:法国科学家Henri Gouraud(犹他大学博士)
  • 原理‌:顶点光照插值
  • 硬件支持‌:GE CT扫描仪专用图形系统
  • 突破‌:实现光滑表面效果,计算量降低95%

1975:‌Phong反射模型‌

  • 提出者‌:Bui Tuong Phong(完成博士论文后不久去世)
  • 核心公式‌:L = ambient + diffuse + k_s * (R\cdot V)^n
  • 实验环境‌:在DEC PDP-10主机上实现,单帧渲染耗时数小时
  • 历史意义‌:奠定现代光照模型三大组件基础

二、物理模型探索期(1980-1989)

1980:‌Whitted光线追踪‌

  • 提出者‌:Turner Whitted(贝尔实验室)
  • 突破‌:首次实现反射、折射全局效果
  • 硬件背景‌:VAX-11/780主机,512x512图像需74分钟

1981:‌Cook-Torrance微表面模型‌

  • 提出者‌:Robert Cook(Lucasfilm)和Kenneth Torrance(康奈尔大学)
  • 核心突破‌:分解BRDF为D/F/G三项
  • 应用‌:电影《星际迷航2》特效制作

1984:‌Radiosity方法‌

  • 研发机构‌:康奈尔大学(Donald Greenberg团队)
  • 原理‌:热辐射能量传递在CG的应用
  • 代表成果‌:康奈尔盒子(至今仍是标准测试场景)

1986:‌Kajiya渲染方程‌

  • 提出者‌:Jim Kajiya(Caltech)
  • 数学表达‌:L_o = L_e + \int f_r L_i\cos \theta d\omega
  • 意义‌:统一光照计算理论框架

三、实时渲染突破期(1990-1999)

1991:‌Ward各向异性模型‌

  • 提出者‌:Greg Ward(LBNL)
  • 解决痛点‌:金属拉丝、CD光盘等方向性反射

1993:‌Schlick菲涅尔近似‌

  • 提出者‌:Christophe Schlick(法国蒙彼利埃大学)
  • 公式‌:F = F_0 + (1-F_0)(1-\cos \theta )^5
  • 价值‌:计算效率提升20倍,沿用至今

1996:‌Oren-Nayar粗糙漫反射‌

  • 提出者‌:Michael Oren和Shree Nayar(哥伦比亚大学)
  • 背景‌:NASA火星探测计划表面材质研究
  • 突破‌:修正Lambert对粗糙表面的失真

四、现代PBR时期(2000至今)

2007:‌GGX法线分布‌

  • 提出者‌:Bruce Walter(康奈尔大学)
  • 特性‌:长尾高光分布,符合真实材质
  • 工业应用‌:迪士尼动画《长发公主》(2010)

2010:‌Disney BRDF‌

  • 领导者‌:Brent Burley(迪士尼动画工作室)
  • 核心思想‌:"艺术家友好"的参数化
  • 参数体系‌:Metallic/Roughness工作流成为行业标准

2014:‌游戏PBR革命‌

  • 里程碑产品‌:
    • Unreal Engine 4(Tim Sweeney)
    • Unity 5(Unity Technologies)
    • Frostbite引擎(EA DICE)
  • 硬件支撑‌:PlayStation 4/Xbox One统一PBR管线

2018:‌实时光线追踪‌

  • 硬件突破‌:NVIDIA Turing架构(RT Core)
  • 标志产品‌:
    • NVIDIA OptiX 5.0
    • Microsoft DXR API
    • UE4 Ray Tracing
  • 性能数据‌:1080p路径追踪达60fps(对比1980年74分钟/帧)

技术演进关键转折点

理论到应用的跨越(1980s)

实时渲染民主化(2000s)

年份硬件性能代表游戏光照技术
200110M tris/sec最终幻想X预烘焙光照
2007500M tris/sec孤岛危机动态光影
20132G tris/sec战地4屏幕空间反射
202015G tris/sec赛博朋克2077混合光追

学术-工业协同创新

  • SIGGRAPH纽带‌:自1974年创办,成为技术转化桥梁
  • 关键人物迁移‌:
    • Jim Blinn (NASA → Caltech → Microsoft)
    • Pat Hanrahan (皮克斯 → 斯坦福 → Tableau)
    • Eric Veach (谷歌 → 迪士尼 → Waymo)

未来发展方向

‌神经辐射场(NeRF)

  • 2020年伯克利提出,实现照片级新视角合成

材质感知光传输

  • MIT 2023年实现亚表面散射实时模拟(Joule: 0.3ms/frame)

量子光照计算

  • 谷歌Quantum AI实验室光量子处理器(2025目标)

光照模型发展史是计算机图形学从经验公式到物理真理的演进历程,每一步突破都凝聚着学术智慧与工业实践的碰撞,持续推动着虚拟世界与现实边界的融合。


【从UnityURP开始探索游戏渲染】专栏-直达
(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)

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

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

相关文章

【从零开始java学习|第十篇】面向对象

目录 一、面向对象介绍 二、类和对象 1. 类(Class):对象的模板 2. 对象(Object):类的实例 三、封装 1. 封装的概念 2. 封装的优势 四、就近原则和 this 关键字 1. 就近原则 2. this 关键字 五、…

Spark算子调优

Spark中可用下面的算子对数据计算进行优化处理,包括: mapPartition:一次处理一个分区数据,能够使用mapPartition的尽量使用,但是使用时会一次性读取整个分区数据到内存,占内存很大,同理还有fore…

码农特供版《消费者权益保护法》逆向工程指北——附源码级注释与异常处理方案

尊敬的审核: 本人文章《码农特供版〈消费者权益保护法〉逆向工程指北——附源码级注释与异常处理方案》 1. 纯属技术交流,无任何违法内容 2. 所有法律引用均来自公开条文 3. 请依据《网络安全法》第12条“不得无故删除合法内容”处理 附:本文…

MQTT 连接建立与断开流程详解(二)

三、核心机制与最佳实践(一)会话管理与 QoS 保障Clean Session vs 持久会话:在 MQTT 连接中,会话管理是一个重要的概念,其中 Clean Session 和持久会话是两种不同的会话模式。Clean Session,当设置为 1 时&…

[光学原理与应用-332]:ZEMAX - 序列模式与非序列模式的本质、比较

序列模式(Sequential Mode)与非序列模式(Non-Sequential Mode)是ZEMAX光学设计软件中的两种核心设计模式,二者在光路定义、分析工具、应用场景等方面存在本质差异。以下是两者的详细比较:一、本质差异光路定…

WeakAuras Lua Script (My Version)

分享下我的WA的简约配置,大多数都是团队框架高亮,辅助大脚DBM监控 表格: WeakAuras Lua Script <BiaoGe>_wa拍卖字符串-CSDN博客 ICC 监控,只要团队框架监控 WeakAuras Lua Script ICC (Barne…

【Python+requests】解决Python requests中的ProxyError:SSL版本错误问题详解

解决Python requests中的ProxyError:SSL版本错误问题详解 在使用Python进行网络请求时,很多人都会用到requests库配合代理服务器进行调试或抓包。但有时会遇到令人困惑的ProxyError,尤其是伴随SSLError: [SSL: WRONG_VERSION_NUMBER]这样的错…

基于deepseek的Spring boot入门

一次跟着deepseek记笔记的尝试,由于CSDN没有思维导图,只能按层级记录提问 如果我想知道一个springboot项目的基本结构,比如用到了哪些组件,入口在哪,数据库配置是怎样的 应该从哪里开始 springboot有哪些常用注解 一个…

macOS 15.6 ARM golang debug 问题

前言 最近使用macmini m4在使用golang debug发现一些奇怪的问题,debug到c代码,莫名其妙,而且不知道什么原因,知道搜索查询,才发现是苹果的Command Line Tools 的锅,macOS 15果然是一堆bug,毕竟…

有个需求:切换车队身份实现Fragment的Tab隐藏显示(车队不显示奖赏)

核心实现: 1使用mmkv保存切换的身份 2借助eventbus实现通知Fragment的tab更新private void switchFleet(boolean isMore, EnterpriseInfo enterpriseInfo) {if (isMore) {tvSwitchFleetTitle.setText(getText(R.string.switch_to_other_accounts));} else {tvSwitch…

在 Android Studio 中修改 APK 启动图标(2025826)

在 Android Studio 中修改 Android 12 应用图标可以按照以下步骤进行:1、准备图标资源准备一个启动图标(建议使用 SVG 格式或高分辨率 PNG,推荐尺寸为 512x512 像素)图标应符合 Android 12 的设计规范(自适应图标&…

Linux三剑客grep-sed-awk

linux三剑客-grep、sed、awk 文章目录linux三剑客-grep、sed、awk1.正则表达式1.1正则表达式?1.2应用场景?-谁可以用?1.3正则注意事项(避免90%以上的坑)1.4正则符号1.5正则VS通配符2.基础正则2.1 ^ 以...开头的行2.2 $…

给某个conda环境安装CUDA 12.4版本 全局CUDA不变

文章目录🎯 正确的安装命令📋 为什么这个命令安全?⚠️ 重要说明🔧 安装后环境配置方法一:在虚拟环境中设置方法二:使用conda环境变量🧪 验证安装📊 版本共存确认💡 额外…

【C++】日期类实现详解:代码解析与复用优化

代码总览与总结// 实现一个完善的日期类 class Date { public:int GetMonthDay(int year, int month){int monthDays[13] { 0,31,28,31,30,31,30,31,31,30,31,30,31 };// 闰年2月if (month 2 && ((year % 4 0 && year % 100 ! 0) || year % 400 0))return …

零基础json入门教程(基于vscode的json配置文件)

一、什么是 JSON?—— 最核心的概念JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,长得像键值对的集合,用途是存储和传递数据。在 VS Code 中,它常被用来写配置文件(比如调试配置…

深入对比分析SpringCloud和Dubbo两大微服务框架的核心架构与特性。

1 微服务架构演进与核心概念1.1 微服务架构的本质微服务架构是一种将单一应用程序划分为一组小型服务的方法,每个服务运行在自己的进程中,服务之间通过轻量级的通信机制进行协作。这些服务围绕业务能力构建,并能够独立部署到生产环境中。微服…

鸿蒙ArkTS 核心篇-14-条件表达式(三目运算符)

目录 根据逻辑条件结果,执行不同的表达式,得到不同结果 DevEco Studio代码实战 ctrl s 日志输出 总结 根据逻辑条件结果,执行不同的表达式,得到不同结果 DevEco Studio代码实战 let num1: number 100 let num2: number 20l…

CDH集成LDAP进行身份验证

前言:在内网环境中部署LDAP并在CDH的hive和impala中集成,其中配置的端口,镜像名,密码等需要根据自己情况进行更改 1、镜像下载 在有网络的服务器上下载镜像或直接下载,这里需要自行配置下docker镜像下载地址 # 下载…

并发编程:Java中的多线程与线程池!

全文目录:开篇语线程的基础概念线程生命周期线程调度线程安全线程池:Executor框架、线程池的管理与调优Executor框架线程池的管理与调优并发工具类:ReentrantLock、CountDownLatch、CyclicBarrier等ReentrantLockCountDownLatchCyclicBarrier…

语义分割一站式到底怎么玩?

语义分割模型,复现或改进、对比实验,,欢迎交流,完爆各种详细需求1、可以接以下语义分割模型dai做 DeepLabV3、PSPnet、HRnet、Segformer、Unet、u2net、cenet、erfnet、hcanet、hiformer、uiunet、nnunet、saunet、unext、dscnet、…