Merge branch 'Tryibion-add-scaled-time-node'
This commit is contained in:
@@ -20,6 +20,8 @@ float TimeParam;
|
|||||||
float4 ViewInfo;
|
float4 ViewInfo;
|
||||||
float4 ScreenSize;
|
float4 ScreenSize;
|
||||||
float4 ViewSize;
|
float4 ViewSize;
|
||||||
|
float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
@1META_CB_END
|
@1META_CB_END
|
||||||
|
|
||||||
// Shader resources
|
// Shader resources
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ float4 ViewInfo;
|
|||||||
float4 ScreenSize;
|
float4 ScreenSize;
|
||||||
float4 TemporalAAJitter;
|
float4 TemporalAAJitter;
|
||||||
float4x4 InverseViewProjectionMatrix;
|
float4x4 InverseViewProjectionMatrix;
|
||||||
|
float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
@1META_CB_END
|
@1META_CB_END
|
||||||
|
|
||||||
// Shader resources
|
// Shader resources
|
||||||
|
|||||||
@@ -1386,10 +1386,11 @@ namespace FlaxEditor.Surface.Archetypes
|
|||||||
Title = "Time",
|
Title = "Time",
|
||||||
Description = "Game time constant",
|
Description = "Game time constant",
|
||||||
Flags = NodeFlags.MaterialGraph,
|
Flags = NodeFlags.MaterialGraph,
|
||||||
Size = new Float2(110, 20),
|
Size = new Float2(110, 40),
|
||||||
Elements = new[]
|
Elements = new[]
|
||||||
{
|
{
|
||||||
NodeElementArchetype.Factory.Output(0, "", typeof(float), 0),
|
NodeElementArchetype.Factory.Output(0, "Time", typeof(float), 0),
|
||||||
|
NodeElementArchetype.Factory.Output(1, "Unscaled Time", typeof(float), 1),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new NodeArchetype
|
new NodeArchetype
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ PACK_STRUCT(struct GUIMaterialShaderData {
|
|||||||
Float4 ViewInfo;
|
Float4 ViewInfo;
|
||||||
Float4 ScreenSize;
|
Float4 ScreenSize;
|
||||||
Float4 ViewSize;
|
Float4 ViewSize;
|
||||||
|
Float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
});
|
});
|
||||||
|
|
||||||
void GUIMaterialShader::Bind(BindParameters& params)
|
void GUIMaterialShader::Bind(BindParameters& params)
|
||||||
@@ -55,7 +57,8 @@ void GUIMaterialShader::Bind(BindParameters& params)
|
|||||||
materialData->ViewPos = Float3::Zero;
|
materialData->ViewPos = Float3::Zero;
|
||||||
materialData->ViewFar = 0.0f;
|
materialData->ViewFar = 0.0f;
|
||||||
materialData->ViewDir = Float3::Forward;
|
materialData->ViewDir = Float3::Forward;
|
||||||
materialData->TimeParam = params.TimeParam;
|
materialData->TimeParam = params.Time;
|
||||||
|
materialData->UnscaledTimeParam = params.UnscaledTime;
|
||||||
materialData->ViewInfo = Float4::Zero;
|
materialData->ViewInfo = Float4::Zero;
|
||||||
auto& viewport = Render2D::GetViewport();
|
auto& viewport = Render2D::GetViewport();
|
||||||
materialData->ScreenSize = Float4(viewport.Width, viewport.Height, 1.0f / viewport.Width, 1.0f / viewport.Height);
|
materialData->ScreenSize = Float4(viewport.Width, viewport.Height, 1.0f / viewport.Width, 1.0f / viewport.Height);
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ public:
|
|||||||
const ::DrawCall* DrawCall = nullptr;
|
const ::DrawCall* DrawCall = nullptr;
|
||||||
MaterialParamsLink* ParamsLink = nullptr;
|
MaterialParamsLink* ParamsLink = nullptr;
|
||||||
void* CustomData = nullptr;
|
void* CustomData = nullptr;
|
||||||
float TimeParam;
|
float Time, UnscaledTime;
|
||||||
bool Instanced = false;
|
bool Instanced = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -36,12 +36,15 @@ GPU_CB_STRUCT(MaterialShaderDataPerView {
|
|||||||
Float4 TemporalAAJitter;
|
Float4 TemporalAAJitter;
|
||||||
Float3 LargeWorldsChunkIndex;
|
Float3 LargeWorldsChunkIndex;
|
||||||
float LargeWorldsChunkSize;
|
float LargeWorldsChunkSize;
|
||||||
|
Float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
});
|
});
|
||||||
|
|
||||||
IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderContext& renderContext)
|
IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderContext& renderContext)
|
||||||
: GPUContext(context)
|
: GPUContext(context)
|
||||||
, RenderContext(renderContext)
|
, RenderContext(renderContext)
|
||||||
, TimeParam(Time::Draw.UnscaledTime.GetTotalSeconds())
|
, Time(Time::Draw.Time.GetTotalSeconds())
|
||||||
|
, UnscaledTime(Time::Draw.UnscaledTime.GetTotalSeconds())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +52,8 @@ IMaterial::BindParameters::BindParameters(::GPUContext* context, const ::RenderC
|
|||||||
: GPUContext(context)
|
: GPUContext(context)
|
||||||
, RenderContext(renderContext)
|
, RenderContext(renderContext)
|
||||||
, DrawCall(&drawCall)
|
, DrawCall(&drawCall)
|
||||||
, TimeParam(Time::Draw.UnscaledTime.GetTotalSeconds())
|
, Time(Time::Draw.Time.GetTotalSeconds())
|
||||||
|
, UnscaledTime(Time::Draw.UnscaledTime.GetTotalSeconds())
|
||||||
, Instanced(instanced)
|
, Instanced(instanced)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -77,7 +81,8 @@ void IMaterial::BindParameters::BindViewData()
|
|||||||
cb.ViewPos = view.Position;
|
cb.ViewPos = view.Position;
|
||||||
cb.ViewFar = view.Far;
|
cb.ViewFar = view.Far;
|
||||||
cb.ViewDir = view.Direction;
|
cb.ViewDir = view.Direction;
|
||||||
cb.TimeParam = TimeParam;
|
cb.TimeParam = Time;
|
||||||
|
cb.UnscaledTimeParam = UnscaledTime;
|
||||||
cb.ViewInfo = view.ViewInfo;
|
cb.ViewInfo = view.ViewInfo;
|
||||||
cb.ScreenSize = view.ScreenSize;
|
cb.ScreenSize = view.ScreenSize;
|
||||||
cb.TemporalAAJitter = view.TemporalAAJitter;
|
cb.TemporalAAJitter = view.TemporalAAJitter;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Current materials shader version.
|
/// Current materials shader version.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
#define MATERIAL_GRAPH_VERSION 173
|
#define MATERIAL_GRAPH_VERSION 174
|
||||||
|
|
||||||
class Material;
|
class Material;
|
||||||
class GPUShader;
|
class GPUShader;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ PACK_STRUCT(struct PostFxMaterialShaderData {
|
|||||||
Float4 ScreenSize;
|
Float4 ScreenSize;
|
||||||
Float4 TemporalAAJitter;
|
Float4 TemporalAAJitter;
|
||||||
Matrix InverseViewProjectionMatrix;
|
Matrix InverseViewProjectionMatrix;
|
||||||
|
Float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
});
|
});
|
||||||
|
|
||||||
void PostFxMaterialShader::Bind(BindParameters& params)
|
void PostFxMaterialShader::Bind(BindParameters& params)
|
||||||
@@ -51,7 +53,8 @@ void PostFxMaterialShader::Bind(BindParameters& params)
|
|||||||
materialData->ViewPos = view.Position;
|
materialData->ViewPos = view.Position;
|
||||||
materialData->ViewFar = view.Far;
|
materialData->ViewFar = view.Far;
|
||||||
materialData->ViewDir = view.Direction;
|
materialData->ViewDir = view.Direction;
|
||||||
materialData->TimeParam = params.TimeParam;
|
materialData->TimeParam = params.Time;
|
||||||
|
materialData->UnscaledTimeParam = params.UnscaledTime;
|
||||||
materialData->ViewInfo = view.ViewInfo;
|
materialData->ViewInfo = view.ViewInfo;
|
||||||
materialData->ScreenSize = view.ScreenSize;
|
materialData->ScreenSize = view.ScreenSize;
|
||||||
materialData->TemporalAAJitter = view.TemporalAAJitter;
|
materialData->TemporalAAJitter = view.TemporalAAJitter;
|
||||||
|
|||||||
@@ -48,10 +48,8 @@ void MaterialGenerator::ProcessGroupTools(Box* box, Node* node, Value& value)
|
|||||||
}
|
}
|
||||||
// Time
|
// Time
|
||||||
case 3:
|
case 3:
|
||||||
{
|
value = box->ID == 1 ? getUnscaledTime : getTime;
|
||||||
value = getTime;
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
// Panner
|
// Panner
|
||||||
case 6:
|
case 6:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ bool FeatureData::Init()
|
|||||||
|
|
||||||
MaterialValue MaterialGenerator::getUVs(VariantType::Float2, TEXT("input.TexCoord"));
|
MaterialValue MaterialGenerator::getUVs(VariantType::Float2, TEXT("input.TexCoord"));
|
||||||
MaterialValue MaterialGenerator::getTime(VariantType::Float, TEXT("TimeParam"));
|
MaterialValue MaterialGenerator::getTime(VariantType::Float, TEXT("TimeParam"));
|
||||||
|
MaterialValue MaterialGenerator::getUnscaledTime(VariantType::Float, TEXT("UnscaledTimeParam"));
|
||||||
MaterialValue MaterialGenerator::getNormal(VariantType::Float3, TEXT("input.TBN[2]"));
|
MaterialValue MaterialGenerator::getNormal(VariantType::Float3, TEXT("input.TBN[2]"));
|
||||||
MaterialValue MaterialGenerator::getNormalZero(VariantType::Float3, TEXT("float3(0, 0, 1)"));
|
MaterialValue MaterialGenerator::getNormalZero(VariantType::Float3, TEXT("float3(0, 0, 1)"));
|
||||||
MaterialValue MaterialGenerator::getVertexColor(VariantType::Float4, TEXT("GetVertexColor(input)"));
|
MaterialValue MaterialGenerator::getVertexColor(VariantType::Float4, TEXT("GetVertexColor(input)"));
|
||||||
|
|||||||
@@ -120,7 +120,6 @@ private:
|
|||||||
MaterialValue _ddx, _ddy, _cameraVector;
|
MaterialValue _ddx, _ddy, _cameraVector;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
MaterialGenerator();
|
MaterialGenerator();
|
||||||
~MaterialGenerator();
|
~MaterialGenerator();
|
||||||
|
|
||||||
@@ -211,6 +210,7 @@ public:
|
|||||||
|
|
||||||
static MaterialValue getUVs;
|
static MaterialValue getUVs;
|
||||||
static MaterialValue getTime;
|
static MaterialValue getTime;
|
||||||
|
static MaterialValue getUnscaledTime;
|
||||||
static MaterialValue getNormal;
|
static MaterialValue getNormal;
|
||||||
static MaterialValue getNormalZero;
|
static MaterialValue getNormalZero;
|
||||||
static MaterialValue getVertexColor;
|
static MaterialValue getVertexColor;
|
||||||
|
|||||||
@@ -176,6 +176,8 @@ cbuffer ViewData : register(b1)
|
|||||||
float4 TemporalAAJitter;
|
float4 TemporalAAJitter;
|
||||||
float3 LargeWorldsChunkIndex;
|
float3 LargeWorldsChunkIndex;
|
||||||
float LargeWorldsChunkSize;
|
float LargeWorldsChunkSize;
|
||||||
|
float3 ViewPadding0;
|
||||||
|
float UnscaledTimeParam;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user