首页 > 其他分享 >UE5 材质 布料shader

UE5 材质 布料shader

时间:2023-05-12 19:22:19浏览次数:43  
标签:控制 power 实现 shader 边缘 布料 UE5

前言

本篇实现一个简单的布料shader,需要注意的是本篇仅仅模拟布料的外观,但物理上并不是正确的因为还需要改光照

目标

  • 通过观察缎子、棉布、丝绸可以看出,这些物体有些是中间亮,边缘暗,有些是中间暗,边缘亮,因此我们需要实现控制物体中间和边缘亮度的shader
  • 布料算法
    顽皮狗工作室曾在SIGGRAPH上分享过一个布料算法
    image-20230512185212578

实现控制边缘和中心的亮度

实现边缘比中心亮

第一次实现

  • 按照正常的光照方程,向边缘靠近更多颜色越暗,因此我们只需1-x将效果反向

image-20230512183040434

第二次实现

  • 控制中间的黑色的幅度

很自然的,我们采用power()控制幅度。power幂取4,可以得到如下效果

image-20230512183722781

第三次实现

  • 控制亮度

    power()后乘以一个常数即可

    image-20230512183959684

实现中心比边缘亮

知道上个实现的原理,那么这个实现也就不难了

image-20230512184449959

最后将以后两个实现进行相加,就能实现最终效果

现在只需控制中间黑色和边缘亮色的幅度且对布料纹理进行采样,输出结果如下
image-20230512191131723

reference

Cloth Shading - UE4 Materials 101 - Episode 10 - YouTube

标签:控制,power,实现,shader,边缘,布料,UE5
From: https://www.cnblogs.com/chenglixue/p/17396113.html

相关文章

  • UE5 材质 Flipbook火焰特效
    原理因为游戏为了保证舒适的帧数,通常不能临时计算特效,所以一般是提前将动画做成单独的帧,最后渲染至纹理流程UE5提供的FlipBook节点原理提供uv坐标,time节点,指定行列即可实现FLipBook实现使用的flipbook纹理有五行五列,因此提供一个float=5的节点连接到FlipBook的"......
  • Unity Shader Toggle KeywordEnum Enum 使用
    Shader"Unlit/Custom/Shader05"{Properties{_MainTex("MainTex",2D)="white"{}[Toggle]_INVERT("Invertcolor?",Float)=0//_INVERT必须是大写的_Invert不可以[KeywordEnum(None,Add,M......
  • OpenGL学习笔记-3:编译shader报错: cannot convert from 'const highp float' to 'Frag
    报错信息: ERROR::SHADER_COMPILATION_ERRORoftype:FRAGMENTERROR:0:10:'assign':cannotconvertfrom'consthighpfloat'to'FragUserData4-componentvectorofhighpfloat'-------------------------------------------------......
  • shader变体
    用法以multi_compile为例:Variant.shaderShader"My/Variant/Variant"{SubShader{//...Pass{CGPROGRAM#pragmavertexvert#pragmafragmentfrag#pragmamulti_compil......
  • UE5 程序切出活动窗口/后台运行时掉帧问题
    依次点击“编辑”—>“编辑器偏好设置“—>“通用/性能”,取消选中“后台运行时使用较少CPU”即可,如下图所示: ......
  • UE5新功能StateTree源码解析
    StateTree是一种UE5中新增的通用分层状态机,其组合了行为树中的选择器(Selectors)与状态机中的状态(States)和过渡(Transitions)。用户可以创建非常高效、保持灵活且井然有序的逻辑。StateTree包含以树结构布局的状态。状态选择可以在树中的任意位置触发。相比行为树,其组织方式更......
  • 噪音及其在shader中的应用
    噪声的发明起初是为了解决“非纯色不规则”纹理占用内存太大的问题。噪声可以实现“局部细微渐变,全局差别很大”的效果。随机数无法达到这样的效果,但用随机数可以生产白噪声,再用高斯模糊达到类似的效果。在图形学api中,噪声可以看出是一个函数,用于模糊在网格上生成的随机数。所有......
  • UE5 流送的子关卡中导航网格体不生效
    依次点击“编辑”—>“项目设置“—>“导航网格体”,将运行时生成(默认为静态)改为动态即可,如下所示: ......
  • UE5 子弹/弓箭/能量球 飞行轨迹控制
    添加一个ProjectileMovement组件,设置下初始速度和重力即可。如下所示:注1:重力为0时,子弹不受重力影响,直线飞行。  ......
  • Houdini和UE4/UE5的协同操作&Project Titan是什么?
    通常当涉及到Houdini时,有3种常见的方式来与材质共享/发送数据,它们是顶点颜色、纹理和UV数据(我们将更多地讨论)。根据您想要做什么以及需要多少数据,其中一个将优先于另一个。顶点颜色:电缆工具是Houdini计算要在着色器中使用的顶点颜色的一个很好的例子。这里的想法是,我们有一条大......