虚幻4 添加变量控制UI的渲染,详细教程。

本文提供了一种在虚幻4中通过添加变量来控制UI渲染的详细教程。首先,你需要更新UI的shader,涉及的文件包括Engine_Updating中的多个Shaders。接着,修改代码,在SlateCore的头文件和DrawElements.h中添加新的变量。之后,你需要遍历所有构造FSlateVertex的地方,传递新的参数。最后,通过UMG将该变量暴露给编辑器,实现UI元素禁用状态的灰度调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先更改UI的shader。

结构体:

Engine_Updating\Engine\Shaders\SlateShaderCommon.usf

struct VertexToPixelInterpolants
{
	float4 Position : SV_POSITION;
	float4 Color : COLOR0;
	float4 ClipOriginAndPos : TEXCOORD0;
	float4 ClipExtents : TEXCOORD1;
	float2 MaterialTexCoords : TEXCOORD2;
	float4 TextureCoordinates[NUM_SLATE_TEXCOORDS] : TEXCOORD3;
	<span style="background-color: rgb(255, 102, 102);">float DisableValue:TEXCOORD4;</span>
};

VertexShader:

Engine_Updating\Engine\Shaders\SlateVertexShader.usf

VertexToPixelInterpolants Main(
	in float4 InTextureCoordinates : ATTRIBUTE0,
	in float2 InMaterialTextureCoordinates : ATTRIBUTE1,
	in float2 InPosition : ATTRIBUTE2,
	in float2 InClipOrigin : ATTRIBUTE3,
	in float4 InClipExtents : ATTRIBUTE4,
	in float4 InColor : ATTRIBUTE5,
	<span style="color:#ff6666;">in float InDisableValue : ATTRIBUTE6</span>
#if USE_SLATE_INSTANCING
	, in float4 InstanceParam : ATTRIBUTE7
#endif
	)
{
	VertexToPixelInterpolants VOut = (VertexToPixelInterpolants)0;

	float4 WorldPosition = float4(InPosition.xy,0,1);

#if (!(ES2_PROFILE || ES3_1_PROFILE)) || USE_MATERIALS
	InColor.rgb = sRGBToLinear(InColor.rgb);
#endif

	float4 FinalVertexColor = InColor FCOLOR_COMPONENT_SWIZZLE;

	VOut.MaterialTexCoords = InMaterialTextureCoordinates;
	VOut.ClipOriginAndPos = float4(InClipOrigin, InPosition.xy);
	VOut.ClipExtents = InClipExtents;
	VOut.Color = FinalVertexColor;
	VOut.TextureCoordinates[0] = InTextureCoordinates;
	<span style="color:#ff6666;">VOut.DisableValue = InDisableValue;</span>


PixelShader:

Engine_Updating\Engine\Shaders\SlateElementPixelShader.usf

#if DRAW_DISABLED_EFFECT
	//desaturate
	float3 LumCoeffs = float3( 0.3, 0.59, .11 );
	float Lum = dot( LumCoeffs, OutColor.rgb );
<span style="color:#ff0000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值