UE4_如果快速做出毛玻璃效果_假景深

UE4_如果快速做出毛玻璃效果_假景深

2022-08-20 15:02

一个SpiralBlur-SceneTexture材质节点完成效果,启用半透明材质

通过修改BlurAmount数值大小调整效果

spiralBlur-SceneTexture

custom节点,HLSL语言

float3 CurColor = 0;

float2 BaseUV = MaterialFloat2(ScreenAlignedPosition(Parameters.ScreenPosition).xy);

float2 NewUV = BaseUV;

float StepSize = Distance / (int) DistanceSteps;

float CurDistance = 0;

float2 CurOffset = 0;

float TwoPi = 6.283185;

float Substep = 0;

float2 ScenePixels=View.BufferSizeAndInvSize.xy*BaseUV;

ScenePixels+=View.TemporalAAParams.r;

float2 RandomSamp = ((uint)(ScenePixels.x) + 2 * (uint)(ScenePixels.y)) % 5;

RandomSamp+=Texture2DSample(Tex,TexSampler,ScenePixels);

RandomSamp/=5;

RandomSamp-=0.5;

TempAARotation*=RandomSamp;

TempAADistance*=StepSize*RandomSamp;

int i=0;

if (DistanceSteps<1)

{ return DecodeSceneColorForMaterialNode(NewUV);

} else

{ //CurDistance += 0.5*StepSize;

while ( i < (int) DistanceSteps)

{

//CurDistance+=StepSize;

for (int j = 0; j < (int) RadialSteps; j++)

{ CurOffset.x = cos(TwoPi*((TempAARotation+Substep) / RadialSteps));

CurOffset.y = sin(TwoPi*((TempAARotation+Substep) / RadialSteps));

CurOffset *=DistanceMask;

NewUV.x = BaseUV.x + (CurOffset.x * (CurDistance+(RandomSamp*TempAADistance)));

NewUV.y = BaseUV.y + (CurOffset.y * (CurDistance+(RandomSamp*TempAADistance)));

CurColor += DecodeSceneColorForMaterialNode(NewUV);

//CurDistance+=(StepSize+(TempAADistance))/RadialSteps;

Substep++;

} CurDistance+=StepSize;

Substep+=RadialOffset;

i++;

} CurColor = CurColor / ((int)DistanceSteps*(int)RadialSteps);

return CurColor;

}

spiralBlur-Texture

float3 CurColor=0;

float2 NewUV = UV;

int i=0;

float StepSize = Distance / (int) DistanceSteps;

float CurDistance=0;

float2 CurOffset=0;

float SubOffset = 0;

float TwoPi = 6.283185;

float accumdist=0;

if (DistanceSteps < 1)

{ return Texture2DSample(Tex,TexSampler,UV);

} else

{ while ( i < (int) DistanceSteps)

{ CurDistance += StepSize;

for (int j = 0; j < (int) RadialSteps; j++)

{

SubOffset +=1;

CurOffset.x = cos(TwoPi*(SubOffset / RadialSteps));

CurOffset.y = sin(TwoPi*(SubOffset / RadialSteps));

NewUV.x = UV.x + CurOffset.x * CurDistance;

NewUV.y = UV.y + CurOffset.y * CurDistance;

float distpow = pow(CurDistance, KernelPower);

CurColor += Texture2DSample(Tex,TexSampler,NewUV)*distpow;

accumdist += distpow;

}

SubOffset +=RadialOffset;

i++;

} CurColor = CurColor;

CurColor /=accumdist;

return CurColor;

}

评论(0)

相关推荐
dexi.Chi 攻城狮12 小时前
SQL层次查询语法
经验分享·笔记·sql
阿星AI工作室13 小时前
WorkBuddy接入deepseek等9款平价大模型,告别积分焦虑
经验分享
BomanZQT13 小时前
NSK UPFC 2040-1 极速精密滚珠丝杠详述
经验分享·规格说明书
杨连江14 小时前
可变级数LC无源自均压海量级联多电平拓扑机理研究——代替传统LCC/MMC的新一代特高压直流逆变架构
经验分享
Xi-Xu17 小时前
什么时候需要 Multi-agent:不是分工,而是运行边界
人工智能·经验分享·安全
LaughingZhu18 小时前
Product Hunt 每日热榜 | 2026-07-05
人工智能·经验分享·深度学习·神经网络·产品运营
黑科技iOS上架19 小时前
分享一个开源的iOS应用AppIcon生成器
经验分享·ios
卡梅德生物科技小能手19 小时前
卡梅德生物科普CD80(B7-1):免疫系统的“双面间谍”
经验分享·深度学习·生活
BomanGe119 小时前
NSK微型精密滚珠丝杠W0801MA技术指南
经验分享·规格说明书
BomanZQT20 小时前
MCM06051H10D00:长行程重载双滑块模组详解
经验分享·规格说明书