Update consoles building
This commit is contained in:
BIN
Content/Shaders/GI/DDGI.flax
(Stored with Git LFS)
BIN
Content/Shaders/GI/DDGI.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/GI/GlobalSurfaceAtlas.flax
(Stored with Git LFS)
BIN
Content/Shaders/GI/GlobalSurfaceAtlas.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/GUI.flax
(Stored with Git LFS)
BIN
Content/Shaders/GUI.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/GlobalSignDistanceField.flax
(Stored with Git LFS)
BIN
Content/Shaders/GlobalSignDistanceField.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/ProbesFilter.flax
(Stored with Git LFS)
BIN
Content/Shaders/ProbesFilter.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/SSR.flax
(Stored with Git LFS)
BIN
Content/Shaders/SSR.flax
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Shaders/TAA.flax
(Stored with Git LFS)
BIN
Content/Shaders/TAA.flax
(Stored with Git LFS)
Binary file not shown.
@@ -354,7 +354,7 @@ bool CookAssetsStep::Process(CookingData& data, CacheData& cache, Asset* asset)
|
||||
if (asset->WaitForLoaded())
|
||||
{
|
||||
LOG(Error, "Failed to load asset \'{0}\'", asset->ToString());
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Switch based on an asset type
|
||||
@@ -1132,7 +1132,10 @@ bool CookAssetsStep::Perform(CookingData& data)
|
||||
|
||||
// Cook asset
|
||||
if (Process(data, cache, assetRef.Get()))
|
||||
{
|
||||
cache.Save();
|
||||
return true;
|
||||
}
|
||||
data.Stats.CookedAssets++;
|
||||
|
||||
// Auto save build cache after every few cooked assets (reduces next build time if cooking fails later)
|
||||
|
||||
@@ -428,6 +428,7 @@ void GPUContextDX11::Dispatch(GPUShaderProgramCS* shader, uint32 threadGroupCoun
|
||||
|
||||
void GPUContextDX11::DispatchIndirect(GPUShaderProgramCS* shader, GPUBuffer* bufferForArgs, uint32 offsetForArgs)
|
||||
{
|
||||
ASSERT(bufferForArgs && EnumHasAnyFlags(bufferForArgs->GetFlags(), GPUBufferFlags::Argument));
|
||||
CurrentCS = (GPUShaderProgramCSDX11*)shader;
|
||||
|
||||
auto bufferForArgsDX11 = (GPUBufferDX11*)bufferForArgs;
|
||||
|
||||
@@ -111,7 +111,7 @@ bool GPUBufferDX12::OnInit()
|
||||
if (useUAV)
|
||||
resourceDesc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
|
||||
#if PLATFORM_XBOX_SCARLETT || PLATFORM_XBOX_ONE
|
||||
if (_desc.Flags & GPUBufferFlags::Argument)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Argument))
|
||||
resourceDesc.Flags |= D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ void SceneRendering::AddActor(Actor* a, int32& key)
|
||||
listener->OnSceneRenderingAddActor(a);
|
||||
}
|
||||
|
||||
void SceneRendering::UpdateActor(Actor* a, int32 key)
|
||||
void SceneRendering::UpdateActor(Actor* a, int32& key)
|
||||
{
|
||||
const int32 category = a->_drawCategory;
|
||||
ScopeLock lock(Locker);
|
||||
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
|
||||
public:
|
||||
void AddActor(Actor* a, int32& key);
|
||||
void UpdateActor(Actor* a, int32 key);
|
||||
void UpdateActor(Actor* a, int32& key);
|
||||
void RemoveActor(Actor* a, int32& key);
|
||||
|
||||
FORCE_INLINE void AddPostFxProvider(IPostFxSettingsProvider* obj)
|
||||
|
||||
@@ -320,7 +320,7 @@ void DrawEmitterCPU(RenderContext& renderContext, ParticleBuffer* buffer, DrawCa
|
||||
auto positionOffset = emitter->Graph.GetPositionAttributeOffset();
|
||||
if (positionOffset == -1 || buffer->CPU.Count < 2 || buffer->CPU.RibbonOrder.IsEmpty())
|
||||
break;
|
||||
int32 count = buffer->CPU.Count;
|
||||
uint32 count = buffer->CPU.Count;
|
||||
ASSERT(buffer->CPU.RibbonOrder.Count() == emitter->Graph.RibbonRenderingModules.Count() * buffer->Capacity);
|
||||
int32* ribbonOrderData = buffer->CPU.RibbonOrder.Get() + module->RibbonOrderOffset;
|
||||
ParticleBufferCPUDataAccessor<Float3> positionData(buffer, emitter->Graph.Layout.GetAttributeOffset(module->Attributes[0]));
|
||||
|
||||
@@ -64,7 +64,7 @@ PACK_STRUCT(struct ModelsRasterizeData
|
||||
Int3 ChunkCoord;
|
||||
float MaxDistance;
|
||||
Float3 CascadeCoordToPosMul;
|
||||
int32 ObjectsCount;
|
||||
uint32 ObjectsCount;
|
||||
Float3 CascadeCoordToPosAdd;
|
||||
int32 CascadeResolution;
|
||||
int32 CascadeIndex;
|
||||
|
||||
@@ -198,7 +198,7 @@ void PostProcessingPass::Render(RenderContext& renderContext, GPUTexture* input,
|
||||
if (checkIfSkipPass() || !(useBloom || useToneMapping || useCameraArtifacts))
|
||||
{
|
||||
// Resources are missing. Do not perform rendering. Just copy raw frame
|
||||
context->SetViewportAndScissors(output->Width(), output->Height());
|
||||
context->SetViewportAndScissors((float)output->Width(), (float)output->Height());
|
||||
context->SetRenderTarget(*output);
|
||||
context->Draw(input);
|
||||
return;
|
||||
|
||||
@@ -73,7 +73,7 @@ PACK_STRUCT(struct Data
|
||||
{
|
||||
Float2 Dummy0;
|
||||
int32 CubeFace;
|
||||
int32 SourceMipIndex;
|
||||
float SourceMipIndex;
|
||||
});
|
||||
|
||||
namespace ProbesRendererImpl
|
||||
@@ -515,8 +515,8 @@ void ProbesRenderer::OnRender(RenderTask* task, GPUContext* context)
|
||||
auto cb = shader->GetCB(0);
|
||||
for (int32 mipIndex = 1; mipIndex < mipLevels; mipIndex++)
|
||||
{
|
||||
int32 mipSize = 1 << (mipLevels - mipIndex - 1);
|
||||
data.SourceMipIndex = mipIndex - 1;
|
||||
const int32 mipSize = 1 << (mipLevels - mipIndex - 1);
|
||||
data.SourceMipIndex = (float)mipIndex - 1.0f;
|
||||
context->SetViewportAndScissors((float)mipSize, (float)mipSize);
|
||||
for (int32 faceIndex = 0; faceIndex < 6; faceIndex++)
|
||||
{
|
||||
|
||||
@@ -220,13 +220,9 @@ float3 TransmittanceWithDistance(float radius, float Mu, float D)
|
||||
float R1 = sqrt(radius * radius + D * D + 2.0 * radius * Mu * D);
|
||||
float Mu1 = (radius * Mu + D) / R1;
|
||||
if (Mu > 0.0)
|
||||
{
|
||||
result = min(Transmittance(radius, Mu) / Transmittance(R1, Mu1), 1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = min(Transmittance(R1, -Mu1) / Transmittance(radius, -Mu), 1.0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -249,7 +245,7 @@ float OpticalDepthWithDistance(float H, float radius, float Mu, float D)
|
||||
float particleDensity = 6.2831; // REK 04, Table 2
|
||||
float a = sqrt(0.5 / H * radius);
|
||||
float2 A01 = a * float2(Mu, Mu + D / radius);
|
||||
float2 A01Sign = sign(A01);
|
||||
float2 A01Sign = (float2)sign(A01);
|
||||
float2 A01Squared = A01 * A01;
|
||||
float x = A01Sign.y > A01Sign.x ? exp(A01Squared.x) : 0.0;
|
||||
float2 y = A01Sign / (2.3193 * abs(A01) + sqrt(1.52 * A01Squared + 4.0)) * float2(1.0, exp(-D / H * (D / (2.0 * radius) + Mu)));
|
||||
|
||||
@@ -232,7 +232,7 @@ float3 SampleDDGIIrradiance(DDGIData data, Texture2D<snorm float4> probesData, T
|
||||
weight *= Square(weight) * (1.0f / (minWeightThreshold * minWeightThreshold));
|
||||
|
||||
// Calculate trilinear weights based on the distance to each probe to smoothly transition between grid of 8 probes
|
||||
float3 trilinear = lerp(1.0f - biasAlpha, biasAlpha, probeCoordsOffset);
|
||||
float3 trilinear = lerp(1.0f - biasAlpha, biasAlpha, (float3)probeCoordsOffset);
|
||||
weight *= max(trilinear.x * trilinear.y * trilinear.z, 0.001f);
|
||||
|
||||
// Sample irradiance texture
|
||||
|
||||
@@ -54,7 +54,7 @@ float3 GetSphericalFibonacci(float sampleIndex, float samplesCount)
|
||||
// Calculates a random normalized ray direction (based on the ray index and the current probes rotation phrase)
|
||||
float3 GetProbeRayDirection(DDGIData data, uint rayIndex)
|
||||
{
|
||||
float3 direction = GetSphericalFibonacci(rayIndex, data.RaysCount);
|
||||
float3 direction = GetSphericalFibonacci((float)rayIndex, (float)data.RaysCount);
|
||||
return normalize(QuaternionRotate(data.RaysRotation, direction));
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ void CS_TraceRays(uint3 DispatchThreadId : SV_DispatchThreadID)
|
||||
else
|
||||
{
|
||||
// Ray hits sky
|
||||
radiance.rgb = Skybox.SampleLevel(SamplerLinearClamp, probeRayDirection, 0);
|
||||
radiance.rgb = Skybox.SampleLevel(SamplerLinearClamp, probeRayDirection, 0).rgb;
|
||||
radiance.a = 1e27f; // Sky is the limit
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ float4 SampleGlobalSurfaceAtlasTile(const GlobalSurfaceAtlasData data, GlobalSur
|
||||
bilinearWeights.w = (1 - bilinearWeightsUV.x) * (1 - bilinearWeightsUV.y);
|
||||
|
||||
// Tile depth weight based on sample position occlusion
|
||||
float4 tileZ = depth.Gather(SamplerLinearClamp, atlasUV, 0.0f);
|
||||
float4 tileZ = depth.Gather(SamplerLinearClamp, atlasUV);
|
||||
float depthThreshold = 2.0f * surfaceThreshold / tile.ViewBoundsSize.z;
|
||||
float4 depthVisibility = 1.0f;
|
||||
UNROLL
|
||||
|
||||
@@ -330,7 +330,7 @@ float4 PS_Debug(Quad_VS2PS input) : SV_Target
|
||||
else
|
||||
{
|
||||
// Sample skybox
|
||||
float3 skybox = Skybox.SampleLevel(SamplerLinearClamp, viewRay, 0);
|
||||
float3 skybox = Skybox.SampleLevel(SamplerLinearClamp, viewRay, 0).rgb;
|
||||
float3 sky = float3(0.4f, 0.4f, 1.0f) * saturate(hit.StepsCount / 80.0f);
|
||||
color = lerp(sky, skybox, SkyboxIntensity);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ VS2PS VS(Render2DVertex input)
|
||||
|
||||
// Render2D::RenderingFeatures::VertexSnapping
|
||||
if ((int)input.CustomDataAndClipOrigin.y & 1)
|
||||
input.Position = (int2)input.Position;
|
||||
input.Position = (float2)(int2)input.Position;
|
||||
|
||||
output.Position = mul(float4(input.Position, 0, 1), ViewProjection);
|
||||
output.Color = input.Color;
|
||||
|
||||
@@ -34,7 +34,7 @@ META_CB_BEGIN(1, ModelsRasterizeData)
|
||||
int3 ChunkCoord;
|
||||
float MaxDistance;
|
||||
float3 CascadeCoordToPosMul;
|
||||
int ObjectsCount;
|
||||
uint ObjectsCount;
|
||||
float3 CascadeCoordToPosAdd;
|
||||
int CascadeResolution;
|
||||
int CascadeIndex;
|
||||
@@ -91,7 +91,11 @@ float DistanceToModelSDF(float minDistance, ObjectRasterizeData modelData, Textu
|
||||
BRANCH if (minDistance <= distanceToVolume) return distanceToVolume;
|
||||
|
||||
// Sample SDF
|
||||
#if defined(PLATFORM_PS4) || defined(PLATFORM_PS5)
|
||||
float volumeDistance = 0; // TODO: fix shader compilation error
|
||||
#else
|
||||
float volumeDistance = modelSDFTex.SampleLevel(SamplerLinearClamp, volumeUV, modelData.MipOffset).x * modelData.DecodeMul + modelData.DecodeAdd;
|
||||
#endif
|
||||
volumeDistance *= volumeScale; // Apply uniform instance scale (non-uniform is not supported)
|
||||
|
||||
// Combine distance to the volume with distance to the surface inside the model
|
||||
@@ -153,7 +157,11 @@ void CS_RasterizeHeightfield(uint3 DispatchThreadId : SV_DispatchThreadID)
|
||||
float2 heightfieldUV = float2(volumeUV.x, volumeUV.z);
|
||||
|
||||
// Sample the heightfield
|
||||
#if defined(PLATFORM_PS4) || defined(PLATFORM_PS5)
|
||||
float4 heightmapValue = 0; // TODO: fix shader compilation error
|
||||
#else
|
||||
float4 heightmapValue = ObjectsTextures[i].SampleLevel(SamplerLinearClamp, heightfieldUV, objectData.MipOffset);
|
||||
#endif
|
||||
bool isHole = (heightmapValue.b + heightmapValue.a) >= 1.9f;
|
||||
if (isHole || any(heightfieldUV < 0.0f) || any(heightfieldUV > 1.0f))
|
||||
continue;
|
||||
@@ -198,7 +206,7 @@ Texture3D<float> GlobalSDFTex : register(t0);
|
||||
float SampleSDF(uint3 voxelCoordMip, int3 offset)
|
||||
{
|
||||
// Sample SDF
|
||||
voxelCoordMip = (uint3)clamp((int3)voxelCoordMip * GenerateMipCoordScale + offset, 0, GenerateMipTexResolution - 1);
|
||||
voxelCoordMip = (uint3)clamp((int3)(voxelCoordMip * GenerateMipCoordScale) + offset, int3(0, 0, 0), (int3)(GenerateMipTexResolution - 1));
|
||||
voxelCoordMip.x += GenerateMipTexOffsetX;
|
||||
float result = GlobalSDFTex[voxelCoordMip].r;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
META_CB_BEGIN(0, Data)
|
||||
float2 Dummy0;
|
||||
int CubeFace;
|
||||
int SourceMipIndex;
|
||||
float SourceMipIndex;
|
||||
META_CB_END
|
||||
|
||||
TextureCube Cube : register(t0);
|
||||
|
||||
@@ -199,11 +199,11 @@ float4 PS_ResolvePass(Quad_VS2PS input) : SV_Target0
|
||||
{
|
||||
float2 offsetUV = Offsets[i] * SSRtexelSize;
|
||||
offsetUV = mul(offsetRotationMatrix, offsetUV);
|
||||
float4 sample = Texture0.SampleLevel(SamplerLinearClamp, uv + offsetUV, 0);
|
||||
float4 value = Texture0.SampleLevel(SamplerLinearClamp, uv + offsetUV, 0);
|
||||
#if SSR_REDUCE_HIGHLIGHTS
|
||||
sample.rgb /= 1 + Luminance(sample.rgb);
|
||||
value.rgb /= 1 + Luminance(value.rgb);
|
||||
#endif
|
||||
result += sample;
|
||||
result += value;
|
||||
}
|
||||
|
||||
// Calculate final result value
|
||||
|
||||
@@ -145,7 +145,7 @@ float SampleShadowMapFixedSizePCF(Texture2DArray shadowMap, float2 shadowMapSize
|
||||
s.x += (1.0f - fc.y) * (v1[0].w * (CSMFilterWeights[row + FS_2][col + FS_2]
|
||||
- CSMFilterWeights[row + FS_2][col + FS_2] * fc.x)
|
||||
+ v1[0].z * (fc.x * (CSMFilterWeights[row + FS_2][col + FS_2]
|
||||
- CSMFilterWeights[row + FS_2][col + FS_2 + 1.0f])
|
||||
- CSMFilterWeights[row + FS_2][col + FS_2 + 1])
|
||||
+ CSMFilterWeights[row + FS_2][col + FS_2 + 1]));
|
||||
s.y += fc.y * (v1[0].x * (CSMFilterWeights[row + FS_2][col + FS_2]
|
||||
- CSMFilterWeights[row + FS_2][col + FS_2] * fc.x)
|
||||
|
||||
@@ -69,7 +69,7 @@ float4 PS(Quad_VS2PS input) : SV_Target0
|
||||
|
||||
// Sample history by clamp it to the nearby colors range to reduce artifacts
|
||||
float4 history = SAMPLE_RT_LINEAR(InputHistory, prevUV);
|
||||
float lumaOffset = abs(Luminance(neighborhoodAvg) - Luminance(current));
|
||||
float lumaOffset = abs(Luminance(neighborhoodAvg.rgb) - Luminance(current.rgb));
|
||||
float aabbMargin = lerp(4.0, 0.25, saturate(velocityLength * 100.0)) * lumaOffset;
|
||||
history = ClipToAABB(history, neighborhoodMin - aabbMargin, neighborhoodMax + aabbMargin);
|
||||
//history = clamp(history, neighborhoodMin, neighborhoodMax);
|
||||
|
||||
Reference in New Issue
Block a user