Working on combat and movement, added is basic animations
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -188,8 +188,8 @@ VisualizeCalibrationCustomMaterialPath=None
|
|||||||
VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale
|
VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale
|
||||||
|
|
||||||
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
||||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
DefaultGraphicsRHI=DefaultGraphicsRHI_DX11
|
||||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
DefaultGraphicsRHI=DefaultGraphicsRHI_DX11
|
||||||
-D3D12TargetedShaderFormats=PCD3D_SM5
|
-D3D12TargetedShaderFormats=PCD3D_SM5
|
||||||
+D3D12TargetedShaderFormats=PCD3D_SM6
|
+D3D12TargetedShaderFormats=PCD3D_SM6
|
||||||
-D3D11TargetedShaderFormats=PCD3D_SM5
|
-D3D11TargetedShaderFormats=PCD3D_SM5
|
||||||
@@ -232,8 +232,8 @@ CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet'
|
|||||||
|
|
||||||
[/Script/Engine.UserInterfaceSettings]
|
[/Script/Engine.UserInterfaceSettings]
|
||||||
RenderFocusRule=NavigationOnly
|
RenderFocusRule=NavigationOnly
|
||||||
HardwareCursors=((None, (CursorPath="Default")))
|
HardwareCursors=()
|
||||||
SoftwareCursors=()
|
SoftwareCursors=((Default, "/Game/Blueprint/WBP_Cursor.WBP_Cursor_C"),(Hand, "/Game/Blueprint/WBP_Cursor_Interact.WBP_Cursor_Interact_C"),(Crosshairs, "/Game/Blueprint/WBP_Cursor_Interact_Attack.WBP_Cursor_Interact_Attack_C"))
|
||||||
ApplicationScale=1.000000
|
ApplicationScale=1.000000
|
||||||
UIScaleRule=ShortestSide
|
UIScaleRule=ShortestSide
|
||||||
CustomScalingRuleClass=None
|
CustomScalingRuleClass=None
|
||||||
|
|||||||
BIN
Content/Animations/BS_UnitMovement.uasset
Normal file
BIN
Content/Animations/BS_UnitMovement.uasset
Normal file
Binary file not shown.
BIN
Content/Animations/Lite Sword and Shield Pack/draw sword 1.fbx
Normal file
BIN
Content/Animations/Lite Sword and Shield Pack/draw sword 1.fbx
Normal file
Binary file not shown.
BIN
Content/Animations/Lite Sword and Shield Pack/sheath sword 1.fbx
Normal file
BIN
Content/Animations/Lite Sword and Shield Pack/sheath sword 1.fbx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Content/Animations/Lite_Sword_and_Shield_Pack/AM_Attack.uasset
Normal file
BIN
Content/Animations/Lite_Sword_and_Shield_Pack/AM_Attack.uasset
Normal file
Binary file not shown.
BIN
Content/Animations/Lite_Sword_and_Shield_Pack/AM_Death.uasset
Normal file
BIN
Content/Animations/Lite_Sword_and_Shield_Pack/AM_Death.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Content/Blueprint/ABP_Unit.uasset
Normal file
BIN
Content/Blueprint/ABP_Unit.uasset
Normal file
Binary file not shown.
Binary file not shown.
BIN
Content/Blueprint/BP_Enemy.uasset
Normal file
BIN
Content/Blueprint/BP_Enemy.uasset
Normal file
Binary file not shown.
Binary file not shown.
BIN
Content/Blueprint/BP_NPC.uasset
Normal file
BIN
Content/Blueprint/BP_NPC.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Content/Blueprint/E_Classification.uasset
Normal file
BIN
Content/Blueprint/E_Classification.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/E_NPCAttitude.uasset
Normal file
BIN
Content/Blueprint/E_NPCAttitude.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/E_NPCClass.uasset
Normal file
BIN
Content/Blueprint/E_NPCClass.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/E_NPCWeapon.uasset
Normal file
BIN
Content/Blueprint/E_NPCWeapon.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/S_CombatStats.uasset
Normal file
BIN
Content/Blueprint/S_CombatStats.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/WBP_Cursor.uasset
Normal file
BIN
Content/Blueprint/WBP_Cursor.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/WBP_Cursor_Interact.uasset
Normal file
BIN
Content/Blueprint/WBP_Cursor_Interact.uasset
Normal file
Binary file not shown.
BIN
Content/Blueprint/WBP_Cursor_Interact_Attack.uasset
Normal file
BIN
Content/Blueprint/WBP_Cursor_Interact_Attack.uasset
Normal file
Binary file not shown.
Binary file not shown.
BIN
Content/Exports/M_Character_Knight_Black.uasset
Normal file
BIN
Content/Exports/M_Character_Knight_Black.uasset
Normal file
Binary file not shown.
BIN
Content/Exports/M_Character_Knight_Blue.uasset
Normal file
BIN
Content/Exports/M_Character_Knight_Blue.uasset
Normal file
Binary file not shown.
BIN
Content/Exports/SK_Character_Soldier_02.FBX
Normal file
BIN
Content/Exports/SK_Character_Soldier_02.FBX
Normal file
Binary file not shown.
BIN
Content/Exports/SK_Character_Soldier_02.uasset
Normal file
BIN
Content/Exports/SK_Character_Soldier_02.uasset
Normal file
Binary file not shown.
BIN
Content/Exports/SK_Character_Soldier_02_PhysicsAsset.uasset
Normal file
BIN
Content/Exports/SK_Character_Soldier_02_PhysicsAsset.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
457
Intermediate/ShaderAutogen/PCD3D_SM5/AutogenShaderHeaders.ush
Normal file
457
Intermediate/ShaderAutogen/PCD3D_SM5/AutogenShaderHeaders.ush
Normal file
@@ -0,0 +1,457 @@
|
|||||||
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5
|
||||||
|
float SampleDeviceZFromSceneTexturesTempCopy(float2 UV)
|
||||||
|
{
|
||||||
|
return SceneDepthTexture.SampleLevel(SceneDepthTextureSampler, UV, 0).r;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GBUFFER_LAYOUT
|
||||||
|
#define GBUFFER_LAYOUT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GBUFFER_LAYOUT == 0
|
||||||
|
|
||||||
|
void EncodeGBufferToMRT(inout FPixelShaderOut Out, FGBufferData GBuffer, float QuantizationBias)
|
||||||
|
{
|
||||||
|
float4 MrtFloat1 = 0.0f;
|
||||||
|
float4 MrtFloat2 = 0.0f;
|
||||||
|
uint4 MrtUint2 = 0;
|
||||||
|
float4 MrtFloat3 = 0.0f;
|
||||||
|
float4 MrtFloat4 = 0.0f;
|
||||||
|
|
||||||
|
float3 WorldNormal_Compressed = EncodeNormalHelper(GBuffer.WorldNormal, 0.0f);
|
||||||
|
|
||||||
|
MrtFloat1.x = WorldNormal_Compressed.x;
|
||||||
|
MrtFloat1.y = WorldNormal_Compressed.y;
|
||||||
|
MrtFloat1.z = WorldNormal_Compressed.z;
|
||||||
|
MrtFloat1.w = GBuffer.PerObjectGBufferData.x;
|
||||||
|
MrtFloat2.x = GBuffer.Metallic.x;
|
||||||
|
MrtFloat2.y = GBuffer.Specular.x;
|
||||||
|
MrtFloat2.z = GBuffer.Roughness.x;
|
||||||
|
MrtUint2.w |= ((((GBuffer.ShadingModelID.x) >> 0) & 0x0f) << 0);
|
||||||
|
MrtUint2.w |= ((((GBuffer.SelectiveOutputMask.x) >> 0) & 0x0f) << 4);
|
||||||
|
MrtFloat3.x = GBuffer.BaseColor.x;
|
||||||
|
MrtFloat3.y = GBuffer.BaseColor.y;
|
||||||
|
MrtFloat3.z = GBuffer.BaseColor.z;
|
||||||
|
MrtFloat3.w = GBuffer.GenericAO.x;
|
||||||
|
MrtFloat4.x = GBuffer.CustomData.x;
|
||||||
|
MrtFloat4.y = GBuffer.CustomData.y;
|
||||||
|
MrtFloat4.z = GBuffer.CustomData.z;
|
||||||
|
MrtFloat4.w = GBuffer.CustomData.w;
|
||||||
|
|
||||||
|
Out.MRT[1] = MrtFloat1;
|
||||||
|
Out.MRT[2] = float4(MrtFloat2.x, MrtFloat2.y, MrtFloat2.z, float(MrtUint2.w) / 255.0f);
|
||||||
|
Out.MRT[3] = MrtFloat3;
|
||||||
|
Out.MRT[4] = MrtFloat4;
|
||||||
|
Out.MRT[5] = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
Out.MRT[6] = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
|
||||||
|
float4 InMRT2,
|
||||||
|
float4 InMRT3,
|
||||||
|
float4 InMRT4,
|
||||||
|
|
||||||
|
float CustomNativeDepth,
|
||||||
|
float4 AnisotropicData,
|
||||||
|
uint CustomStencil,
|
||||||
|
float SceneDepth,
|
||||||
|
bool bGetNormalizedNormal,
|
||||||
|
bool bChecker)
|
||||||
|
{
|
||||||
|
FGBufferData Ret = (FGBufferData)0;
|
||||||
|
float3 WorldNormal_Compressed = 0.0f;
|
||||||
|
WorldNormal_Compressed.x = InMRT1.x;
|
||||||
|
WorldNormal_Compressed.y = InMRT1.y;
|
||||||
|
WorldNormal_Compressed.z = InMRT1.z;
|
||||||
|
Ret.PerObjectGBufferData.x = InMRT1.w;
|
||||||
|
Ret.Metallic.x = InMRT2.x;
|
||||||
|
Ret.Specular.x = InMRT2.y;
|
||||||
|
Ret.Roughness.x = InMRT2.z;
|
||||||
|
Ret.ShadingModelID.x = (((uint((float(InMRT2.w) * 255.0f) + .5f) >> 0) & 0x0f) << 0);
|
||||||
|
Ret.SelectiveOutputMask.x = (((uint((float(InMRT2.w) * 255.0f) + .5f) >> 4) & 0x0f) << 0);
|
||||||
|
Ret.BaseColor.x = InMRT3.x;
|
||||||
|
Ret.BaseColor.y = InMRT3.y;
|
||||||
|
Ret.BaseColor.z = InMRT3.z;
|
||||||
|
Ret.GenericAO.x = InMRT3.w;
|
||||||
|
Ret.CustomData.x = InMRT4.x;
|
||||||
|
Ret.CustomData.y = InMRT4.y;
|
||||||
|
Ret.CustomData.z = InMRT4.z;
|
||||||
|
Ret.CustomData.w = InMRT4.w;
|
||||||
|
|
||||||
|
Ret.WorldNormal = DecodeNormalHelper(WorldNormal_Compressed);
|
||||||
|
Ret.WorldTangent = AnisotropicData.xyz;
|
||||||
|
Ret.Anisotropy = AnisotropicData.w;
|
||||||
|
|
||||||
|
GBufferPostDecode(Ret,bChecker,bGetNormalizedNormal);
|
||||||
|
|
||||||
|
Ret.CustomDepth = ConvertFromDeviceZ(CustomNativeDepth);
|
||||||
|
Ret.CustomStencil = CustomStencil;
|
||||||
|
Ret.Depth = SceneDepth;
|
||||||
|
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataUV(float2 UV, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
float CustomNativeDepth = Texture2DSampleLevel(SceneTexturesStruct.CustomDepthTexture, SceneTexturesStruct_CustomDepthTextureSampler, UV, 0).r;
|
||||||
|
int2 IntUV = (int2)trunc(UV * View.BufferSizeAndInvSize.xy * View.BufferToSceneTextureScale.xy);
|
||||||
|
uint CustomStencil = SceneTexturesStruct.CustomStencilTexture.Load(int3(IntUV, 0)) STENCIL_COMPONENT_SWIZZLE;
|
||||||
|
float SceneDepth = CalcSceneDepth(UV);
|
||||||
|
float4 AnisotropicData = Texture2DSampleLevel(SceneTexturesStruct.GBufferFTexture, SceneTexturesStruct_GBufferFTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = Texture2DSampleLevel(SceneTexturesStruct.GBufferATexture, SceneTexturesStruct_GBufferATextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT2 = Texture2DSampleLevel(SceneTexturesStruct.GBufferBTexture, SceneTexturesStruct_GBufferBTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT3 = Texture2DSampleLevel(SceneTexturesStruct.GBufferCTexture, SceneTexturesStruct_GBufferCTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT4 = Texture2DSampleLevel(SceneTexturesStruct.GBufferDTexture, SceneTexturesStruct_GBufferDTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromSceneColorUV(UV));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataUint(uint2 PixelPos, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
float CustomNativeDepth = SceneTexturesStruct.CustomDepthTexture.Load(int3(PixelPos, 0)).r;
|
||||||
|
uint CustomStencil = SceneTexturesStruct.CustomStencilTexture.Load(int3(PixelPos, 0)) STENCIL_COMPONENT_SWIZZLE;
|
||||||
|
float SceneDepth = CalcSceneDepth(PixelPos);
|
||||||
|
float4 AnisotropicData = SceneTexturesStruct.GBufferFTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = SceneTexturesStruct.GBufferATexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT2 = SceneTexturesStruct.GBufferBTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT3 = SceneTexturesStruct.GBufferCTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT4 = SceneTexturesStruct.GBufferDTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromPixelPos(PixelPos));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataSceneTextures(float2 UV, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
uint CustomStencil = 0;
|
||||||
|
float CustomNativeDepth = 0;
|
||||||
|
float DeviceZ = SampleDeviceZFromSceneTexturesTempCopy(UV);
|
||||||
|
float SceneDepth = ConvertFromDeviceZ(DeviceZ);
|
||||||
|
float4 AnisotropicData = GBufferFTexture.SampleLevel(GBufferFTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = GBufferATexture.SampleLevel(GBufferATextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT2 = GBufferBTexture.SampleLevel(GBufferBTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT3 = GBufferCTexture.SampleLevel(GBufferCTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT4 = GBufferDTexture.SampleLevel(GBufferDTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromSceneColorUV(UV));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataSceneTexturesLoad(uint2 PixelCoord, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
uint CustomStencil = 0;
|
||||||
|
float CustomNativeDepth = 0;
|
||||||
|
float DeviceZ = SceneDepthTexture.Load(int3(PixelCoord, 0)).r;
|
||||||
|
float SceneDepth = ConvertFromDeviceZ(DeviceZ);
|
||||||
|
float4 AnisotropicData = GBufferFTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = GBufferATexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT2 = GBufferBTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT3 = GBufferCTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT4 = GBufferDTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromPixelPos(PixelCoord));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GBUFFER_LAYOUT == 1
|
||||||
|
|
||||||
|
void EncodeGBufferToMRT(inout FPixelShaderOut Out, FGBufferData GBuffer, float QuantizationBias)
|
||||||
|
{
|
||||||
|
float4 MrtFloat1 = 0.0f;
|
||||||
|
float4 MrtFloat2 = 0.0f;
|
||||||
|
uint4 MrtUint2 = 0;
|
||||||
|
float4 MrtFloat3 = 0.0f;
|
||||||
|
float4 MrtFloat4 = 0.0f;
|
||||||
|
float4 MrtFloat5 = 0.0f;
|
||||||
|
|
||||||
|
float3 WorldNormal_Compressed = EncodeNormalHelper(GBuffer.WorldNormal, 0.0f);
|
||||||
|
|
||||||
|
MrtFloat1.x = WorldNormal_Compressed.x;
|
||||||
|
MrtFloat1.y = WorldNormal_Compressed.y;
|
||||||
|
MrtFloat1.z = WorldNormal_Compressed.z;
|
||||||
|
MrtFloat1.w = GBuffer.PerObjectGBufferData.x;
|
||||||
|
MrtFloat2.x = GBuffer.Metallic.x;
|
||||||
|
MrtFloat2.y = GBuffer.Specular.x;
|
||||||
|
MrtFloat2.z = GBuffer.Roughness.x;
|
||||||
|
MrtUint2.w |= ((((GBuffer.ShadingModelID.x) >> 0) & 0x0f) << 0);
|
||||||
|
MrtUint2.w |= ((((GBuffer.SelectiveOutputMask.x) >> 0) & 0x0f) << 4);
|
||||||
|
MrtFloat3.x = GBuffer.BaseColor.x;
|
||||||
|
MrtFloat3.y = GBuffer.BaseColor.y;
|
||||||
|
MrtFloat3.z = GBuffer.BaseColor.z;
|
||||||
|
MrtFloat3.w = GBuffer.GenericAO.x;
|
||||||
|
MrtFloat4.x = GBuffer.Velocity.x;
|
||||||
|
MrtFloat4.y = GBuffer.Velocity.y;
|
||||||
|
MrtFloat4.z = GBuffer.Velocity.z;
|
||||||
|
MrtFloat4.w = GBuffer.Velocity.w;
|
||||||
|
MrtFloat5.x = GBuffer.CustomData.x;
|
||||||
|
MrtFloat5.y = GBuffer.CustomData.y;
|
||||||
|
MrtFloat5.z = GBuffer.CustomData.z;
|
||||||
|
MrtFloat5.w = GBuffer.CustomData.w;
|
||||||
|
|
||||||
|
Out.MRT[1] = MrtFloat1;
|
||||||
|
Out.MRT[2] = float4(MrtFloat2.x, MrtFloat2.y, MrtFloat2.z, float(MrtUint2.w) / 255.0f);
|
||||||
|
Out.MRT[3] = MrtFloat3;
|
||||||
|
Out.MRT[4] = MrtFloat4;
|
||||||
|
Out.MRT[5] = MrtFloat5;
|
||||||
|
Out.MRT[6] = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
|
||||||
|
float4 InMRT2,
|
||||||
|
float4 InMRT3,
|
||||||
|
float4 InMRT4,
|
||||||
|
float4 InMRT5,
|
||||||
|
|
||||||
|
float CustomNativeDepth,
|
||||||
|
float4 AnisotropicData,
|
||||||
|
uint CustomStencil,
|
||||||
|
float SceneDepth,
|
||||||
|
bool bGetNormalizedNormal,
|
||||||
|
bool bChecker)
|
||||||
|
{
|
||||||
|
FGBufferData Ret = (FGBufferData)0;
|
||||||
|
float3 WorldNormal_Compressed = 0.0f;
|
||||||
|
WorldNormal_Compressed.x = InMRT1.x;
|
||||||
|
WorldNormal_Compressed.y = InMRT1.y;
|
||||||
|
WorldNormal_Compressed.z = InMRT1.z;
|
||||||
|
Ret.PerObjectGBufferData.x = InMRT1.w;
|
||||||
|
Ret.Metallic.x = InMRT2.x;
|
||||||
|
Ret.Specular.x = InMRT2.y;
|
||||||
|
Ret.Roughness.x = InMRT2.z;
|
||||||
|
Ret.ShadingModelID.x = (((uint((float(InMRT2.w) * 255.0f) + .5f) >> 0) & 0x0f) << 0);
|
||||||
|
Ret.SelectiveOutputMask.x = (((uint((float(InMRT2.w) * 255.0f) + .5f) >> 4) & 0x0f) << 0);
|
||||||
|
Ret.BaseColor.x = InMRT3.x;
|
||||||
|
Ret.BaseColor.y = InMRT3.y;
|
||||||
|
Ret.BaseColor.z = InMRT3.z;
|
||||||
|
Ret.GenericAO.x = InMRT3.w;
|
||||||
|
Ret.Velocity.x = InMRT4.x;
|
||||||
|
Ret.Velocity.y = InMRT4.y;
|
||||||
|
Ret.Velocity.z = InMRT4.z;
|
||||||
|
Ret.Velocity.w = InMRT4.w;
|
||||||
|
Ret.CustomData.x = InMRT5.x;
|
||||||
|
Ret.CustomData.y = InMRT5.y;
|
||||||
|
Ret.CustomData.z = InMRT5.z;
|
||||||
|
Ret.CustomData.w = InMRT5.w;
|
||||||
|
|
||||||
|
Ret.WorldNormal = DecodeNormalHelper(WorldNormal_Compressed);
|
||||||
|
Ret.WorldTangent = AnisotropicData.xyz;
|
||||||
|
Ret.Anisotropy = AnisotropicData.w;
|
||||||
|
|
||||||
|
GBufferPostDecode(Ret,bChecker,bGetNormalizedNormal);
|
||||||
|
|
||||||
|
Ret.CustomDepth = ConvertFromDeviceZ(CustomNativeDepth);
|
||||||
|
Ret.CustomStencil = CustomStencil;
|
||||||
|
Ret.Depth = SceneDepth;
|
||||||
|
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataUV(float2 UV, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
float CustomNativeDepth = Texture2DSampleLevel(SceneTexturesStruct.CustomDepthTexture, SceneTexturesStruct_CustomDepthTextureSampler, UV, 0).r;
|
||||||
|
int2 IntUV = (int2)trunc(UV * View.BufferSizeAndInvSize.xy * View.BufferToSceneTextureScale.xy);
|
||||||
|
uint CustomStencil = SceneTexturesStruct.CustomStencilTexture.Load(int3(IntUV, 0)) STENCIL_COMPONENT_SWIZZLE;
|
||||||
|
float SceneDepth = CalcSceneDepth(UV);
|
||||||
|
float4 AnisotropicData = Texture2DSampleLevel(SceneTexturesStruct.GBufferFTexture, SceneTexturesStruct_GBufferFTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = Texture2DSampleLevel(SceneTexturesStruct.GBufferATexture, SceneTexturesStruct_GBufferATextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT2 = Texture2DSampleLevel(SceneTexturesStruct.GBufferBTexture, SceneTexturesStruct_GBufferBTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT3 = Texture2DSampleLevel(SceneTexturesStruct.GBufferCTexture, SceneTexturesStruct_GBufferCTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT4 = Texture2DSampleLevel(SceneTexturesStruct.GBufferVelocityTexture, SceneTexturesStruct_GBufferVelocityTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT5 = Texture2DSampleLevel(SceneTexturesStruct.GBufferDTexture, SceneTexturesStruct_GBufferDTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
InMRT5,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromSceneColorUV(UV));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataUint(uint2 PixelPos, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
float CustomNativeDepth = SceneTexturesStruct.CustomDepthTexture.Load(int3(PixelPos, 0)).r;
|
||||||
|
uint CustomStencil = SceneTexturesStruct.CustomStencilTexture.Load(int3(PixelPos, 0)) STENCIL_COMPONENT_SWIZZLE;
|
||||||
|
float SceneDepth = CalcSceneDepth(PixelPos);
|
||||||
|
float4 AnisotropicData = SceneTexturesStruct.GBufferFTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = SceneTexturesStruct.GBufferATexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT2 = SceneTexturesStruct.GBufferBTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT3 = SceneTexturesStruct.GBufferCTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT4 = SceneTexturesStruct.GBufferVelocityTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
float4 InMRT5 = SceneTexturesStruct.GBufferDTexture.Load(int3(PixelPos, 0)).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
InMRT5,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromPixelPos(PixelPos));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataSceneTextures(float2 UV, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
uint CustomStencil = 0;
|
||||||
|
float CustomNativeDepth = 0;
|
||||||
|
float DeviceZ = SampleDeviceZFromSceneTexturesTempCopy(UV);
|
||||||
|
float SceneDepth = ConvertFromDeviceZ(DeviceZ);
|
||||||
|
float4 AnisotropicData = GBufferFTexture.SampleLevel(GBufferFTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = GBufferATexture.SampleLevel(GBufferATextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT2 = GBufferBTexture.SampleLevel(GBufferBTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT3 = GBufferCTexture.SampleLevel(GBufferCTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT4 = GBufferVelocityTexture.SampleLevel(GBufferVelocityTextureSampler, UV, 0).xyzw;
|
||||||
|
float4 InMRT5 = GBufferDTexture.SampleLevel(GBufferDTextureSampler, UV, 0).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
InMRT5,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromSceneColorUV(UV));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @param PixelPos relative to left top of the rendertarget (not viewport)
|
||||||
|
FGBufferData DecodeGBufferDataSceneTexturesLoad(uint2 PixelCoord, bool bGetNormalizedNormal = true)
|
||||||
|
{
|
||||||
|
uint CustomStencil = 0;
|
||||||
|
float CustomNativeDepth = 0;
|
||||||
|
float DeviceZ = SceneDepthTexture.Load(int3(PixelCoord, 0)).r;
|
||||||
|
float SceneDepth = ConvertFromDeviceZ(DeviceZ);
|
||||||
|
float4 AnisotropicData = GBufferFTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
|
||||||
|
float4 InMRT1 = GBufferATexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT2 = GBufferBTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT3 = GBufferCTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT4 = GBufferVelocityTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
float4 InMRT5 = GBufferDTexture.Load(int3(PixelCoord, 0)).xyzw;
|
||||||
|
|
||||||
|
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
|
||||||
|
InMRT2,
|
||||||
|
InMRT3,
|
||||||
|
InMRT4,
|
||||||
|
InMRT5,
|
||||||
|
|
||||||
|
CustomNativeDepth,
|
||||||
|
AnisotropicData,
|
||||||
|
CustomStencil,
|
||||||
|
SceneDepth,
|
||||||
|
bGetNormalizedNormal,
|
||||||
|
CheckerFromPixelPos(PixelCoord));
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 45 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user