实现U3D独立阴影材质

  1. 前言:

U3d URP阴影大场景,消耗大,可以使用只接受,不投射影,特别是大平面场景。

思路如下:

做一个shaderGraph,设一个颜色,让阴影投下来,可以单一调节阴影强度

步聚如下:

以2022.3.14为例,其他版本有所不同,思路都差不多,URP是主流了

  1. 先自定义一个函数,取得阴影强度输值,shadowAtten
自定义函数代码如下:

void MainLight_half(half3 WorldPos, out half3 Direction, out half3 Color, out half DistanceAtten, out half ShadowAtten)
{
#if SHADERGRAPH_PREVIEW
   Direction = half3(0.5, 0.5, 0);
   Color = half3(0.5, 0.5, 0.5);
   DistanceAtten = 1;
   ShadowAtten = 1;
#else
#if SHADOWS_SCREEN
   half4 clipPos = TransformWorldToHClip(WorldPos);
   half4 shadowCoord = ComputeScreenPos(clipPos);
#else
   half4 shadowCoord = TransformWorldToShadowCoord(WorldPos);
#endif
   Light mainLight = GetMainLight(shadowCoord);
   Direction = mainLight.direction;
   Color = mainLight.color;
   DistanceAtten = mainLight.distanceAttenuation;
   //ShadowAtten = mainLight.shadowAttenuation;
    
    ShadowSamplingData shadowSamplingData = GetMainLightShadowSamplingData();
    half shadowStrength = GetMainLightShadowStrength();
    ShadowAtten = SampleShadowmap(shadowCoord, TEXTURE2D_ARGS(_MainLightShadowmapTexture, sampler_MainLightShadowmapTexture), shadowSamplingData, shadowStrength, false);
#endif
}
  1. 新建最单的ShaderGraph的unlit,再如图所示制作
  2. 自定义阴影颜色混合,合成到alpha上

问题总结:

1.光线必须同时照到物品与阴影面片

2.镜头需打开阴影

3.灯光需要打开阴影

4.如果第一次用shaderGraph自定义方法,注意顺序与数据参数对齐,与使用HLSL文件方法

下载地址:

https://download.csdn.net/download/dreamform/88800663

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值