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

(145)光线追踪距离场柔和阴影

https://blog.csdn.net/zl908760230/article/details/72792422

 

光线追踪距离场阴影利用场景距离场展示的属性用于计算动态网格体的有效区域阴影。这使用的数据和 距离场环境遮挡 相同,因此许多限制也相同。

为计算阴影,从场景定向距离场被遮挡的点到每个光源进行光线追踪。使用到遮挡物的最近距离使锥形追踪的消耗与光线追踪相近。可从球形光源生成高精度区域阴影。

距离场阴影要求启用项目设置 'Generate Mesh Distance Fields'(Rendering 下)。变更此设置的数值后,必须重启编辑器。

点光源和聚光源

“源半径”用于确定点光源上的阴影半影的大小。区域阴影与明显接触面一同计算。接触面在较长的距离中将变得更柔和。注意:光源球体不应和场景相交,否则将导致穿帮。

LightSourceVis.jpg

编辑器以黄线绘制光源形状。

PointLightAreaShadows.jpg

源半径为 100,来自点光源光线的追踪柔和阴影。

Video of a moving point light using Ray Traced Distance Field shadowing.

定向光源

“光源角度”用于确定定向光源上的阴影半影的大小。光线追踪阴影出现自我相交的问题较少,因此能避免远处的泄露和过度偏移问题,而这正是传统阴影贴图存在的问题。

DirectionalLightAreaShadows.jpg

光源角度为 2,来自定向光源光线的追踪柔和阴影。

级联阴影贴图用于生成定向光源的动态阴影。它们要求将场景中的网格体渲染为数个级联阴影贴图。阴影的消耗在阴影距离较大时急剧上升,因为诸多网格体和三角面被渲染为阴影图。

光线追踪距离场阴影在远处时消耗较低,只为可见的像素产生阴影。级联阴影贴图可用于覆盖摄像机附近的区域,光线追踪阴影将覆盖到“距离场阴影距离”的区域。

A foliage scene with CSM covering up to 100 meters.

A foliage scene with CSM covering up to 100 meters.

A foliage scene with CSM covering up to 100 meters, and Ray Traced Distance Field shadows covering up to 1.2 kilometers.

A foliage scene with CSM covering up to 100 meters, and Ray Traced Distance Field shadows covering up to 1.2 kilometers.

Video of changing time of day using Ray Traced Distance Field shadowing.

精度

距离场保真度对阴影的准确性有较大影响,比距离场环境遮挡大得多。在需要“Distance Field Resolution”(Build 设置下)的静态网格体上将其设置为更高的值。

这些阴影以一个知悉深度的上采样进行半分辨率计算。临时抗锯齿(AA)可有效降低半分辨率闪烁,但阴影中偶尔仍会出现锯齿。

限制

此技术的限制与 距离场环境遮挡 的限制相似。

  • 只有静态网格体组件、范例静态网格体组件和植物(启用“Affect Distance Field Lighting”后)能生成距离场并投射阴影。然而,骨骼网格体仍可使用“Cast Inset Shadow”合成阴影。地形的最佳处理方式是使用远级联(由“Far Shadow Cascade Count”启用)。

  • 只支持轻微的网格体非等分缩放(挤压)。半影中的穿帮带有更多的网格体挤压。

  • 世界位置偏移或曲面细分引起的变形无法被展示,还可能导致自身阴影穿帮。有效的做法是:使用 CSM 覆盖观察者附近的区域以支持顶点动画,同时在远处使用光线追踪阴影。

性能

在定向光源上,较大的光源角度将增加消耗,因为每个被阴影遮挡的点上需要考虑更多物体。较大的“DistanceField Shadow Distance”数值将略微降低消隐效率。从设置“Generate Distance Field As If Two Sided”的网格体上生成阴影消耗更高,因为阴影效果不为完全不透明。

以下 GPU 时间以 Radeon 7870 显卡在 1920x1080 精度的完整游戏场景中进行计算。

距离为 10k 的定向光源,3 级联

  • 级联阴影贴图 3.1ms

  • 距离场阴影 2.3ms(快 25%)

距离为 30k 的定向光源,6 级联

  • 级联阴影贴图 4.9ms

  • 距离场阴影 2.8ms(快 43%)

一个大型点光源

  • 立方体贴图阴影贴图 1.8ms

  • 距离场阴影 1.3ms(快 30%)

五个小型点光源

  • 立方体贴图阴影贴图 3.2ms

  • 距离场阴影 1.8ms(快 45%)

设置

光源

 

属性

描述

Use RayTraced DistanceField Shadows

从阴影贴图技术切换到距离场阴影。

Ray Start Offset Depth Scale

确定摄像机离远时接收表面光线追踪阴影所拥有的偏移量。可用于隐藏巨型静态网格体上低分辨率距离场中的自身阴影穿帮。

点光源和聚光源

 

属性

描述

Source Radius

光源球体的尺寸。更大的数值将生成更大的半影,但对性能的消耗也更大。

定向光源

 

属性

描述

DistanceField Shadow Distance

光线追踪阴影覆盖的距离。必须比级联阴影贴图使用的“Dynamic Shadow Distance”更远,以便使用光线追踪阴影。

Light Source Angle

定向光源从接收者角度覆盖的半角。更大的角度将形成更大的半影,但对性能的消耗也更大。

人工智能学习大纲,小白转型利器,5万人看过

人工智能技术向前发展,也必然会出现一些岗位被人工智能取代,但我们相信,随着人工智能的发展,会有更多的新的、属于未来的工作岗位出现,是社会发展的必然产物,我们能做的也许只能是与时俱进了

--------------------- 本文来自 革命队伍的螺丝钉 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zl908760230/article/details/72792422?utm_source=copy

相关文章:

  • MaterialTemplate.ush
  • Monoscopic Far Field Rendering
  • Ray Tracing From Ground Up
  • 图形学数学基础之Hammersley采样
  • 图形学基础(5)——Sobol 采样
  • Hammersley–Clifford theorem
  • Sobol sequence generator
  • PaniniProjection
  • Shadowmask
  • UE4 How To use Colored Translucent Shadows
  • EvaluateSurfelMaterial.usf
  • FilterPixelShader.usf
  • 晕影Vignette
  • 自定义AssetBundle包扩展名
  • 【已解决】C#中的#ifdef
  • [nginx文档翻译系列] 控制nginx
  • 【刷算法】从上往下打印二叉树
  • Create React App 使用
  • crontab执行失败的多种原因
  • Markdown 语法简单说明
  • Nacos系列:Nacos的Java SDK使用
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring声明式事务管理之一:五大属性分析
  • uni-app项目数字滚动
  • vue的全局变量和全局拦截请求器
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 关于 Cirru Editor 存储格式
  • 关于for循环的简单归纳
  • 理解在java “”i=i++;”所发生的事情
  • 小程序button引导用户授权
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • !!java web学习笔记(一到五)
  • #微信小程序(布局、渲染层基础知识)
  • (+4)2.2UML建模图
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [AIGC] MySQL存储引擎详解
  • [BJDCTF 2020]easy_md5
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++] 统计程序耗时
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [HNOI2015]实验比较
  • [No000010F]Git8/9-使用GitHub
  • [Perl] Find Shell on your Wordpress site
  • [pytorch入门] 3. torchvision中的transforms
  • [Redis源码阅读]当你输入get/set命令的时候,Redis做了什么