【URP】Unity光照阴影Light shadow

news/2025/11/22 7:27:55/文章来源:https://www.cnblogs.com/SmalBox/p/19255074

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

URP 光照阴影 使用 阴影贴图 (Shadow Maps) 和 阴影级联 (Shadow Cascades)。屏幕空间阴影渲染器功能 (Screen Space Shadows Renderer Feature),使 URP 通过单一渲染纹理计算并绘制主方向光的阴影,而不是使用多个阴影级联贴图。

URP阴影系统核心机制‌

  • 阴影贴图Shadow Maps
    • 通过光源视角的深度渲染生成_MainLightShadowmapTexture
    • 使用ShadowCaster Pass(需声明LightMode标签)生成深度数据
    • 通过_ShadowBias参数解决自阴影问题(含深度/法线偏移)
  • 阴影级联Cascaded Shadow Maps
    • 将视锥体分割为近/中/远多级区域(默认4级)
    • 不同级联使用_MainLightShadowmapTexture的不同区域
    • 通过MainLightShadowCasterPass.cs动态计算级联边界
  • 屏幕空间阴影Screen Space Shadows
    • 基于_CameraDepthTexture和阴影贴图实时混合计算
    • 相比级联方案减少纹理采样但增加GPU计算负担
    • 适合移动端等需要减少带宽的场景

关键实现原理‌

  • 阴影生成流程

    • 深度图渲染阶段:执行ShadowCaster Pass生成光源空间深度
    • 阴影比较阶段:通过_MainLightWorldToShadow矩阵转换坐标
    • 最终混合阶段:根据阴影强度(Shadow Strength)混合光照结果

    Shader示例展示阴影比较逻辑:

    hlsl
    float4 shadowCoord = mul(_MainLightWorldToShadow, float4(worldPos, 1.0));
    float shadow = SampleShadowmap(shadowCoord); // 采样ShadowMap
    float lightAttenuation = shadow > 0 ? 1.0 : 0.0; // 阴影判断
    
  • 优化参数体系

    | 参数 | 作用域 | 典型值 |
    | --- | --- | --- |
    | 分辨率 | 全局/光源级 | 1024-4096 |
    | 级联分割 | 方向光 | 2-4级 |
    | 深度偏移 | 材质/光源 | 0.001-0.1 |
    | 法线偏移 | 材质/光源 | 0.01-0.5 |

  • 性能敏感操作

    • 阴影距离(Shadow Distance):控制最大生成范围
    • 软阴影滤波(Soft Shadows):增加PCSS滤波开销
    • 动态批处理:影响ShadowCaster Pass执行效率

阴影贴图(Shadow Maps)

实现原理是从光源视角渲染场景深度到纹理(_MainLightShadowmapTexture),通过比较当前像素深度与ShadowMap值判断阴影区域。关键步骤包括:

  • ShadowCaster Pass生成深度图,需声明LightMode="ShadowCaster"标签和对应宏
  • 深度比较时使用_MainLightWorldToShadow矩阵转换坐标到光源空间
  • 通过_ShadowBias参数调整深度/法线偏移防止阴影失真

阴影级联(Cascaded Shadow Maps)

将视锥体分割为多个区域(通常2×2图集),近处使用高精度贴图,远处使用低精度,解决大场景阴影锯齿问题。URP通过MainLightShadowCasterPass.cs管理级联:

  • GetShadowCasterBounds()计算影响范围
  • 不同级联区域对应_MainLightShadowmapTexture的不同部分

屏幕空间阴影(Screen Space Shadows)

替代传统级联的方案,工作流程:

  • 生成_CameraDepthTexture和_MainLightShadowmapTexture
  • 重建世界坐标后转换到阴影空间生成_ScreenSpaceShadowmapTexture
  • 相比级联方案减少纹理采样次数但增加深度预处理开销

关键参数优化

参数 作用 示例
分辨率 影响阴影精度 2048x2048适合中端设备
图集 存储多级联/多光源阴影 _MainLightShadowmapTexture为2×2图集
深度偏移 防止自阴影 _ShadowBias.x调整深度值
法线偏移 解决Peter Panning _ShadowBias.y沿法线偏移
近裁剪面 控制阴影生成范围 Light组件中Cascade Split设置

技术对比‌

方案 优点 缺点
传统级联 精度可控 带宽占用高
屏幕空间 节省带宽 边缘锯齿明显
混合方案 平衡性能/质量 实现复杂度高

文档中特别强调:URP 14.1版本后优化了阴影图集分配策略,减少了约20%的显存占用。建议开发者通过Frame Debugger验证阴影生成各阶段的实际效果。

性能优化建议:

  • 静态物体使用光照贴图烘焙阴影
  • 动态物体根据距离调整阴影分辨率
  • 屏幕空间阴影适合移动端(减少采样),PC端推荐级联阴影
  • 硬阴影(Hard Shadow)比软阴影节省30% GPU开销
  • 移动端适配
    • 推荐使用屏幕空间阴影+中等分辨率(1024)
    • 关闭非必要级联(如保留2级)
    • 静态物体烘焙光照贴图
  • PC端高精度方案
    • 4级级联+2048分辨率
    • 启用PCSS软阴影滤波
    • 动态调整阴影距离(建议30-100米)
  • 常见问题解决
    • 阴影锯齿‌:提高分辨率或启用软阴影
    • Peter Panning‌:增加法线偏移值
    • 性能瓶颈‌:使用Debugger分析ShadowCaster耗时

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

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

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

相关文章

P1659 [国家集训队] 拉拉队排练 踢姐

P1659 [国家集训队] 拉拉队排练 踢姐 简要题意 给定一个长度为 \(n\) 的字符串 \(S\) ,求将 \(S\) 的所有长度为奇数的回文子串按照长度从大到小排序后,取出前 \(k\) 个回文子串,并输出这 \(k\) 个回文子串长度的乘…

世界就是个舞台

演戏的人饱尝生命的跳动而失去流连玩味的机会,看戏的人因为玩味生命的形象而失去“声临其境”的热闹。—2022-19网页主要用于学习交流作者:博客园 - 域出处:https://www.cnblogs.com/SeanRIchard本文版权归作者和博…

手写代码 可以锻炼编程能力吗

DeepSeek答复 当然可以!手写代码是锻炼编程能力的极佳方法,尤其是在初学者和中级阶段。 虽然我们日常开发都在IDE里进行,但刻意练习手写代码能带来很多意想不到的好处。 手写代码的核心好处 1. 加深语言理解迫使你真…

区域CSIRT/LEA跨机构合作演习:网络安全实战演练与技术应用

土耳其国家网络事件响应中心在毛里求斯共和国组织了区域性跨机构合作演习,15个国家参与演练了加密货币追踪、开源情报技术应用、恶意软件分析和数字取证等关键网络安全技术,提升了区域合作与应急响应能力。区域CSIRT…

2025年小型冻干机干燥机厂家选购指南:小型冻干机厂家推荐

2025小型冻干机干燥机厂家选购指南:小型冻干机厂家推荐!在冻干技术不断发展的当下,小型冻干机干燥机凭借其灵活、高效的特性,在实验室、小型企业等场景中发挥着重要作用。对于有相关需求的用户而言,选择合适的厂家至…

Chrome-Gemini-Nano

Chrome-Gemini-Nano导航 (返回顶部)1. Chrome-Weights.bin1.1 停用删除 1.2 转移目录2. 尝试失败记录20252.1 在 Chrome 中启用 AI 2.2 Next.js Chrome AI 聊天机器人 2.3 Chrome插件3. 相关帮助3.1 内置 AI 帮助 3.2 …

谷歌浏览器自带翻译的诡异Bug:ID翻译后竟然变化了

当前负责的项目主打海外业务,总免不了和多语言打交道。但最近我在Vite+Vue3+Element Plus技术栈的项目里,遇到了一个堪称“玄学”的bug——Chrome浏览器自带翻译功能,居然能把表格里的数字ID直接改了!从印度同事到…

i need rest.

i should only care myself.

代码随想录算法训练营第一天:数组part02

代码随想录算法训练营第一天:数组part02** 209.长度最小的子数组** leetcode链接:https://leetcode.cn/problems/minimum-size-subarray-sum/ 题目描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该…

对于生成式AI的思考:摘要

最容易滥用人工智能的人,往往是那些背景知识浅薄、辨别力弱或缺乏动力的人,他们恰恰最容易被人工智能的幻象所迷惑。 人工智能是知识的放大器,而非知识的替代品。 对于那些求知欲强、积极进取的人来说,人工智能是一…

元推理框架,是真正的AI“世界模型”

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891命题解析:元推理框架 ≡ 真AI世界模型世界模型的本质要求完备性:能容纳任意可能世界的逻辑结构 自指性:模型自身必须被包含在建模范围内 因果闭合:所有推…

LLM推理加速相关技术及框架

LLM推理加速相关技术及框架Posted on 2025-11-22 01:32 wsg_blog 阅读(0) 评论(0) 收藏 举报PagedAttention KVCache vllm TensorRT-LLM

TOPDIAG P150 Electrical Tester: 6-30V for Professional Vehicle Electrical Diagnostics

The Struggle with Vehicle Electrical Diagnostics: A Universal Challenge for Mechanics and Car Owners Vehicle electrical systems are the backbone of modern driving—but diagnosing issues like dead batte…

LilCTF2025部分wp

crypto [WARM UP] 对称!Just Decrypt idea 如果放在 LilCTF Crypto,本题难度可定级为 **签到** 短短的也很可爱。"""Just Decrypt - A simple LilCTF warmup challenge.""" from ran…

做题记录 #6

NOIP Day8A. 探测 (3) 2025.11.20 很有趣的题。我在考场上发现,因为为了满足全部限制条件,类似于这些限制条件的点一起走,汇聚到同一点,降低到同一个距离。由于保证答案存在,因此直接两两找汇聚点也是可以的,最后…

第三次作业:详细设计与接口实现报告

团队名称:洛珈山下 日期:2025-11-22本次作业目标 | 维度 | 目标 | | ---- | ---------------------------------------------------------- | | 对齐进度…

102302112王光诚作业3

作业①: 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 –务必控制总页数(学号尾数2位)、总下载的图片数量(尾数后3位)等…

【VSCode】为不同语言设置工作区减少内存占用的方法

本方法应该适用于VSCode以及基于VSCode开发的一系列编辑器(Cursor,Antigravity...) motivation是在我16GB内存的电脑上开了几个ide,挂了几个后台应用程序,就发现内存打满了,和同学交流后发现一个解法,通过设置不同…

Xhorse XDKP24 MB Power Adapter for VVDI Key Tool Plus Pad – Simplify MB Key Programming

Why You Need the Xhorse XDKP24 Mercedes-Benz MB Power Adapter In the world of automotive repair, time is critical. Whether you’re a European auto shop technician tackling a complex Mercedes-Benz diagn…

从“阅读”到“调用”:文档抽取技术如何重塑版式软件

在数字化办公时代,PDF、扫描图像等版式固定文档承载着海量的关键信息。然而,这些文档的“只读”特性使其内部的数据如同被锁在坚固的盒子中,难以被直接编辑、分析和利用。文档抽取技术的出现,正是打开这些“数据盒…