гитигнор епты

This commit is contained in:
Andron666
2023-02-14 19:09:19 +05:00
parent 96665adbc8
commit dff991c87e
306 changed files with 89 additions and 325348 deletions
+89
View File
@@ -0,0 +1,89 @@
# ---> UnrealEngine
# Visual Studio 2015 user specific files
.vs/
# Visual Studio 2015 database file
*.VC.db
# Compiled Object files
#*.slo
#*.lo
#*.o
*.obj
# Precompiled Headers
#*.gch
#*.pch
# Compiled Dynamic libraries
#*.so
#*.dylib
*.dll
#plugins exception
*.pdb
*.exp
*.response
*.modules
# Fortran module files
#*.mod
# Compiled Static libraries
#*.lai
#*.la
#*.a
*.lib
# Executables
#*.exe
#*.out
#*.app
#*.ipa
# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb
# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga
# Binary Files
Binaries/*
# Builds
**/Build/*
# Don't ignore icon files in Build
!Build/**/*.ico
# Built data for maps
*_BuiltData.uasset
# Configuration files generated by the Editor
Saved/*
# Compiled source files for the engine to use
**/Intermediate/*
# Cache files for the editor to use
DerivedDataCache/*
# Application folders
Offers/
Users/
# UnrealCLR
Managed/
Releases/
!Plugins/**
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,3 +0,0 @@
[Internationalization]
ShouldUseLocalizedNumericInput=True
Binary file not shown.
@@ -1,489 +0,0 @@
// 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;
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;
MrtFloat5.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat5.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat5.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat5.w = GBuffer.PrecomputedShadowFactors.w;
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) + .5f) / 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.PrecomputedShadowFactors.x = InMRT5.x;
Ret.PrecomputedShadowFactors.y = InMRT5.y;
Ret.PrecomputedShadowFactors.z = InMRT5.z;
Ret.PrecomputedShadowFactors.w = InMRT5.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;
float4 InMRT5 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, 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.GBufferDTexture.Load(int3(PixelPos, 0)).xyzw;
float4 InMRT5 = SceneTexturesStruct.GBufferETexture.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 = GBufferDTexture.SampleLevel(GBufferDTextureSampler, UV, 0).xyzw;
float4 InMRT5 = GBufferETexture.SampleLevel(GBufferETextureSampler, 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 = GBufferDTexture.Load(int3(PixelCoord, 0)).xyzw;
float4 InMRT5 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
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;
float2 MrtFloat4 = 0.0f;
float4 MrtFloat5 = 0.0f;
float4 MrtFloat6 = 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;
MrtFloat6.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat6.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat6.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat6.w = GBuffer.PrecomputedShadowFactors.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) + .5f) / 255.0f);
Out.MRT[3] = MrtFloat3;
Out.MRT[4] = float4(MrtFloat4.x, MrtFloat4.y, 0.0f, 0.0f);
Out.MRT[5] = MrtFloat5;
Out.MRT[6] = MrtFloat6;
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
}
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
float4 InMRT2,
float4 InMRT3,
float2 InMRT4,
float4 InMRT5,
float4 InMRT6,
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.PrecomputedShadowFactors.x = InMRT6.x;
Ret.PrecomputedShadowFactors.y = InMRT6.y;
Ret.PrecomputedShadowFactors.z = InMRT6.z;
Ret.PrecomputedShadowFactors.w = InMRT6.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;
float2 InMRT4 = Texture2DSampleLevel(SceneTexturesStruct.GBufferVelocityTexture, SceneTexturesStruct_GBufferVelocityTextureSampler, UV, 0).xy;
float4 InMRT5 = Texture2DSampleLevel(SceneTexturesStruct.GBufferDTexture, SceneTexturesStruct_GBufferDTextureSampler, UV, 0).xyzw;
float4 InMRT6 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float2 InMRT4 = SceneTexturesStruct.GBufferVelocityTexture.Load(int3(PixelPos, 0)).xy;
float4 InMRT5 = SceneTexturesStruct.GBufferDTexture.Load(int3(PixelPos, 0)).xyzw;
float4 InMRT6 = SceneTexturesStruct.GBufferETexture.Load(int3(PixelPos, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float2 InMRT4 = GBufferVelocityTexture.SampleLevel(GBufferVelocityTextureSampler, UV, 0).xy;
float4 InMRT5 = GBufferDTexture.SampleLevel(GBufferDTextureSampler, UV, 0).xyzw;
float4 InMRT6 = GBufferETexture.SampleLevel(GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float2 InMRT4 = GBufferVelocityTexture.Load(int3(PixelCoord, 0)).xy;
float4 InMRT5 = GBufferDTexture.Load(int3(PixelCoord, 0)).xyzw;
float4 InMRT6 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
CustomNativeDepth,
AnisotropicData,
CustomStencil,
SceneDepth,
bGetNormalizedNormal,
CheckerFromPixelPos(PixelCoord));
return Ret;
}
#endif
#endif
@@ -1,511 +0,0 @@
// 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;
float4 MrtFloat5 = 0.0f;
float4 MrtFloat6 = 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;
MrtFloat6.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat6.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat6.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat6.w = GBuffer.PrecomputedShadowFactors.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) + .5f) / 255.0f);
Out.MRT[3] = MrtFloat3;
Out.MRT[4] = MrtFloat4;
Out.MRT[5] = MrtFloat5;
Out.MRT[6] = MrtFloat6;
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
}
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
float4 InMRT2,
float4 InMRT3,
float4 InMRT4,
float4 InMRT5,
float4 InMRT6,
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.PrecomputedShadowFactors.x = InMRT6.x;
Ret.PrecomputedShadowFactors.y = InMRT6.y;
Ret.PrecomputedShadowFactors.z = InMRT6.z;
Ret.PrecomputedShadowFactors.w = InMRT6.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;
float4 InMRT6 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = SceneTexturesStruct.GBufferETexture.Load(int3(PixelPos, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.SampleLevel(GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 MrtFloat6 = 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;
MrtFloat6.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat6.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat6.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat6.w = GBuffer.PrecomputedShadowFactors.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) + .5f) / 255.0f);
Out.MRT[3] = MrtFloat3;
Out.MRT[4] = MrtFloat4;
Out.MRT[5] = MrtFloat5;
Out.MRT[6] = MrtFloat6;
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
}
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
float4 InMRT2,
float4 InMRT3,
float4 InMRT4,
float4 InMRT5,
float4 InMRT6,
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.PrecomputedShadowFactors.x = InMRT6.x;
Ret.PrecomputedShadowFactors.y = InMRT6.y;
Ret.PrecomputedShadowFactors.z = InMRT6.z;
Ret.PrecomputedShadowFactors.w = InMRT6.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;
float4 InMRT6 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = SceneTexturesStruct.GBufferETexture.Load(int3(PixelPos, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.SampleLevel(GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
CustomNativeDepth,
AnisotropicData,
CustomStencil,
SceneDepth,
bGetNormalizedNormal,
CheckerFromPixelPos(PixelCoord));
return Ret;
}
#endif
#endif
@@ -1,511 +0,0 @@
// 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;
float4 MrtFloat5 = 0.0f;
float4 MrtFloat6 = 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;
MrtFloat6.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat6.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat6.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat6.w = GBuffer.PrecomputedShadowFactors.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) + .5f) / 255.0f);
Out.MRT[3] = MrtFloat3;
Out.MRT[4] = MrtFloat4;
Out.MRT[5] = MrtFloat5;
Out.MRT[6] = MrtFloat6;
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
}
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
float4 InMRT2,
float4 InMRT3,
float4 InMRT4,
float4 InMRT5,
float4 InMRT6,
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.PrecomputedShadowFactors.x = InMRT6.x;
Ret.PrecomputedShadowFactors.y = InMRT6.y;
Ret.PrecomputedShadowFactors.z = InMRT6.z;
Ret.PrecomputedShadowFactors.w = InMRT6.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;
float4 InMRT6 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = SceneTexturesStruct.GBufferETexture.Load(int3(PixelPos, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.SampleLevel(GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 MrtFloat6 = 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;
MrtFloat6.x = GBuffer.PrecomputedShadowFactors.x;
MrtFloat6.y = GBuffer.PrecomputedShadowFactors.y;
MrtFloat6.z = GBuffer.PrecomputedShadowFactors.z;
MrtFloat6.w = GBuffer.PrecomputedShadowFactors.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) + .5f) / 255.0f);
Out.MRT[3] = MrtFloat3;
Out.MRT[4] = MrtFloat4;
Out.MRT[5] = MrtFloat5;
Out.MRT[6] = MrtFloat6;
Out.MRT[7] = float4(0.0f, 0.0f, 0.0f, 0.0f);
}
FGBufferData DecodeGBufferDataDirect(float4 InMRT1,
float4 InMRT2,
float4 InMRT3,
float4 InMRT4,
float4 InMRT5,
float4 InMRT6,
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.PrecomputedShadowFactors.x = InMRT6.x;
Ret.PrecomputedShadowFactors.y = InMRT6.y;
Ret.PrecomputedShadowFactors.z = InMRT6.z;
Ret.PrecomputedShadowFactors.w = InMRT6.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;
float4 InMRT6 = Texture2DSampleLevel(SceneTexturesStruct.GBufferETexture, SceneTexturesStruct_GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = SceneTexturesStruct.GBufferETexture.Load(int3(PixelPos, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.SampleLevel(GBufferETextureSampler, UV, 0).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
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;
float4 InMRT6 = GBufferETexture.Load(int3(PixelCoord, 0)).xyzw;
FGBufferData Ret = DecodeGBufferDataDirect(InMRT1,
InMRT2,
InMRT3,
InMRT4,
InMRT5,
InMRT6,
CustomNativeDepth,
AnisotropicData,
CustomStencil,
SceneDepth,
bGetNormalizedNormal,
CheckerFromPixelPos(PixelCoord));
return Ret;
}
#endif
#endif
@@ -1,32 +0,0 @@
[/Script/HoloLensPlatformEditor.HoloLensTargetSettings]
bBuildForEmulation=False
bBuildForDevice=True
bUseNameForLogo=True
bBuildForRetailWindowsStore=False
bAutoIncrementVersion=False
bShouldCreateAppInstaller=False
AppInstallerInstallationURL=
HoursBetweenUpdateChecks=0
bEnablePIXProfiling=False
TileBackgroundColor=(B=64,G=0,R=0,A=255)
SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255)
+PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=())
TargetDeviceFamily=Windows.Holographic
MinimumPlatformVersion=
MaximumPlatformVersionTested=10.0.18362.0
MaxTrianglesPerCubicMeter=500.000000
SpatialMeshingVolumeSize=20.000000
CompilerVersion=Default
Windows10SDKVersion=10.0.18362.0
+CapabilityList=internetClientServer
+CapabilityList=privateNetworkClientServer
+Uap2CapabilityList=spatialPerception
bSetDefaultCapabilities=False
SpatializationPlugin=
SourceDataOverridePlugin=
ReverbPlugin=
OcclusionPlugin=
SoundCueCookQualityIndex=-1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 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.

Some files were not shown because too many files have changed in this diff Show More