Additional improvements to scene rendering
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/// <summary>
|
||||
/// Current materials shader version.
|
||||
/// </summary>
|
||||
#define MATERIAL_GRAPH_VERSION 156
|
||||
#define MATERIAL_GRAPH_VERSION 157
|
||||
|
||||
class Material;
|
||||
class GPUShader;
|
||||
|
||||
Reference in New Issue
Block a user