Additional improvements to scene rendering

This commit is contained in:
Wojtek Figat
2022-11-15 22:39:03 +01:00
parent a2670dc3b5
commit eb281a7574
11 changed files with 68 additions and 79 deletions

View File

@@ -30,14 +30,12 @@ PACK_STRUCT(struct DeferredMaterialShaderData {
float TimeParam;
Float4 ViewInfo;
Float4 ScreenSize;
Float3 WorldInvScale;
float WorldDeterminantSign;
Float2 Dummy0;
float LODDitherFactor;
float PerInstanceRandom;
Float4 TemporalAAJitter;
Float3 GeometrySize;
float Dummy1;
float WorldDeterminantSign;
});
DrawPass DeferredMaterialShader::GetDrawModes() const
@@ -96,13 +94,6 @@ void DeferredMaterialShader::Bind(BindParameters& params)
materialData->TimeParam = params.TimeParam;
materialData->ViewInfo = view.ViewInfo;
materialData->ScreenSize = view.ScreenSize;
const float scaleX = Float3(drawCall.World.M11, drawCall.World.M12, drawCall.World.M13).Length();
const float scaleY = Float3(drawCall.World.M21, drawCall.World.M22, drawCall.World.M23).Length();
const float scaleZ = Float3(drawCall.World.M31, drawCall.World.M32, drawCall.World.M33).Length();
materialData->WorldInvScale = Float3(
scaleX > 0.00001f ? 1.0f / scaleX : 0.0f,
scaleY > 0.00001f ? 1.0f / scaleY : 0.0f,
scaleZ > 0.00001f ? 1.0f / scaleZ : 0.0f);
materialData->WorldDeterminantSign = drawCall.WorldDeterminantSign;
materialData->LODDitherFactor = drawCall.Surface.LODDitherFactor;
materialData->PerInstanceRandom = drawCall.PerInstanceRandom;

View File

@@ -32,14 +32,12 @@ PACK_STRUCT(struct ForwardMaterialShaderData {
float TimeParam;
Float4 ViewInfo;
Float4 ScreenSize;
Float3 WorldInvScale;
float WorldDeterminantSign;
Float2 Dummy0;
float LODDitherFactor;
float PerInstanceRandom;
Float4 TemporalAAJitter;
Float3 GeometrySize;
float Dummy1;
float WorldDeterminantSign;
});
DrawPass ForwardMaterialShader::GetDrawModes() const
@@ -104,13 +102,6 @@ void ForwardMaterialShader::Bind(BindParameters& params)
materialData->TimeParam = params.TimeParam;
materialData->ViewInfo = view.ViewInfo;
materialData->ScreenSize = view.ScreenSize;
const float scaleX = Float3(drawCall.World.M11, drawCall.World.M12, drawCall.World.M13).Length();
const float scaleY = Float3(drawCall.World.M21, drawCall.World.M22, drawCall.World.M23).Length();
const float scaleZ = Float3(drawCall.World.M31, drawCall.World.M32, drawCall.World.M33).Length();
materialData->WorldInvScale = Float3(
scaleX > 0.00001f ? 1.0f / scaleX : 0.0f,
scaleY > 0.00001f ? 1.0f / scaleY : 0.0f,
scaleZ > 0.00001f ? 1.0f / scaleZ : 0.0f);
materialData->WorldDeterminantSign = drawCall.WorldDeterminantSign;
materialData->LODDitherFactor = drawCall.Surface.LODDitherFactor;
materialData->PerInstanceRandom = drawCall.PerInstanceRandom;

View File

@@ -117,7 +117,7 @@ public:
/// </summary>
struct InstancingHandler
{
void (*GetHash)(const DrawCall& drawCall, int32& batchKey);
void (*GetHash)(const DrawCall& drawCall, uint32& batchKey);
bool (*CanBatch)(const DrawCall& a, const DrawCall& b);
void (*WriteDrawCall)(struct InstanceData* instanceData, const DrawCall& drawCall);
};

View File

@@ -10,7 +10,7 @@
/// <summary>
/// Current materials shader version.
/// </summary>
#define MATERIAL_GRAPH_VERSION 156
#define MATERIAL_GRAPH_VERSION 157
class Material;
class GPUShader;