首页 > 其他分享 >ue4.26 forward translucency shadow

ue4.26 forward translucency shadow

时间:2023-10-12 15:24:37浏览次数:36  
标签:正则表达式 shader translucency 前向 forward shadow Disassembly pixel

对于前向透明材质:

想找到其阴影代码。

首先由于是前向透明物体,所以肯定不是像不透明物体那样有screen space shadow mask图,而是在shader中计算前向光照时顺便计算阴影。所以只需找到相应shader文件。

为此用renderDoc截帧,但默认截帧只显示pass名,而不显示shader名,为了显示shader名,把r.Shaders.Optimize=0和r.Shaders.KeepDebugInfo=1两行注释(分号)去掉:

找到绘制前向透明物体的drawcall:

 在Pipline State标签页点View,跳转到Pixel Shader:

左边File List中Disassembly就是pixel shader的内容,其余是其代码来源文件。

比如Disassembly中的:

      /Engine/Private/Common.ush:85 - MainPS()
      const static  float  PI = 3.1415926535897932f;
   0: mov r0.x, l(3.1416)

  意思是说:pixel shader的第0行汇编语句是:mov r0.x, l(3.1416),它是由/Engine/Private/Common.ush第85行,MainPS函数中的语句“const static float PI = 3.1415926535897932f”翻译而来。

如果想看紧凑的pixel shader代码,可以把汇编行及文件名行都删掉,在vs2022中可用正则表达式替换实现:

(以下正则表达式来自gpt)
以数字开头,开头允许有空格的行,正则表达式: ^\s*\d.*\n 以 / 开头,开头允许有空格的行,正则表达式: ^\s*/.*\n 空行,正则表达式: ^\s*\n

  但Disassembly中的代码毕竟是展平后的,看不到各种函数名了。

更有用的信息是,由于File List中排在Disassembly下面的文件是BasePassPixelShader.usf,所以可知Pxiel Shader就是BasePassPixelShader.usf中的FPixelShaderInOut_MainPS。

于是就不难找到计算前向透明光照的位置为:

GetForwardDirectLightingSplit中通过ComputeDirectionalLightDynamicShadowing来计算阴影:

在ComputeDirectionalLightDynamicShadowing中可以看到有两种模式,带pcf和不带pcf:

 

标签:正则表达式,shader,translucency,前向,forward,shadow,Disassembly,pixel
From: https://www.cnblogs.com/wantnon/p/17759553.html

相关文章

  • 顺序容器(vector、deque、list、forward_list、array 、string)
    一、顺序容器概述   顺序容器提供了控制元素存储和访问顺序的能力,顺序与元素加入容器时的位置相对应。1、常见的顺序容器类型:vector:可变大小的数组。支持快速随机访问,在尾部之外的位置插入或者删除元素可能很慢。deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很......
  • 顺序容器(vector、deque、list、forward_list、array 、string)
    一、顺序容器概述   顺序容器提供了控制元素存储和访问顺序的能力,顺序与元素加入容器时的位置相对应。1、常见的顺序容器类型:vector:可变大小的数组。支持快速随机访问,在尾部之外的位置插入或者删除元素可能很慢。deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很快......
  • adb端口转发-adbportforward
    adb端口转发-adbportforward   目录概述配置参考 概述一台Android设备连接着一台远程服务器,然后本地计算机可以使用adb来连接远程服务器的Android设备,来进行调试。配置背景:虚拟机Ubuntu电脑,编译了sdk_phone_x86镜像,使用emulator-verbose-show-kernel运行了......
  • X-Forwarded-For
    来自:[MRCTF2020]PYWebsite开始一看还以为要去写脚本,打开一看是个买flag的页面。以前做过一个buy的题,具体怎么做忘了,反正也没啥事做,翻翻源码,找到个东西:显然是验证函数,但这里的hex_md5()操作让我没法碰撞。但是发现了个./flag.php,那就转一下:看到除了购买者和我自己,直觉X-Fo......
  • RPF(reverse path forwarding)
    RPF(反向路径转发)路由器收到组播数据报文后,只有确定这个数据报文是从自身连接到组播源的接口上收到的,才进行转发,否则丢弃RPF检查在大伯路由表中查找到组播报文源地址的路由如果该路由的出接口就是组播报文的入接口,RPF检查成功,否则RPF检查失败,报文丢弃注意:该路由的出接口就是组播报文......
  • 第15节课:AI框架图片识别之数据解析、Network初始化、Sigmoid激活函数及Feedforward函
    第15节课:AI框架图片识别之数据解析、Network初始化、Sigmoid激活函数及Feedforward函数详细内容请关注微信公众号:从零起步学习人工智能 https://mp.weixin.qq.com/s?__biz=MzU3OTc4OTEzNw==&mid=2247483658&idx=1&sn=3d8b40ce71e84c717428d4a1994581e0&chksm=fd618934ca1600229308......
  • C++完美转发为什么必须要有std::forward?
    先看一种情况,它的输出结果是什么?#include<iostream>usingnamespacestd;voidF(constint&a){cout<<"int:"<<a<<endl;}voidF(int&&a){cout<<"int&&:"<<a<<endl......
  • shadow credentials
    前言:修改目标计算机或用户账户的msDS-KeyCredentiallink属性的域内权限维持技术这个属性能够设置原始公钥.当试图用pkinit进行预认证时,KDC将检查认证用户是否知道匹配的私钥,匹配的话会发送TGT,实现对目标对象的持久和隐蔽的访攻击思路获取高权限用户,通过目标用户添加s......
  • 记录下常用的boxShadow样式
    预览图代码1.box-shadow#0csscode====>box-shadow:rgba(149,157,165,0.2)0px8px24px;2.box-shadow#1csscode====>box-shadow:rgba(100,100,111,0.2)0px7px29px0px;3.box-shadow#2csscode====>box-shadow:rgba(0,0,0,0.15)1.95......
  • C++11——3.21-3.22 move,forward
    ★★★原文链接★★★:https://subingwen.cn/cpp/move-forward/3.21move资源的转移3.22forward完美转发3.21move资源的转移move方法可以将左值转换为右值使用这个函数并不能移动任何东西,它将一个对象的所有权从这个对象转移到另一个对象,只是转移,没有内存拷贝。move语......