Improve 47b8c9978f to handle non-vec4 cases

#2000
This commit is contained in:
Wojtek Figat
2023-11-28 14:55:26 +01:00
parent 47b8c9978f
commit cf8b7a20c2
3 changed files with 49 additions and 16 deletions

View File

@@ -271,6 +271,48 @@ ShaderGraphValue ShaderGraphValue::InitForOne(VariantType::Types type)
return ShaderGraphValue(type, String(v));
}
ShaderGraphValue ShaderGraphValue::GetY() const
{
switch (Type)
{
case VariantType::Float2:
case VariantType::Float3:
case VariantType::Float4:
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[1]);
default:
return Zero;
}
}
ShaderGraphValue ShaderGraphValue::GetZ() const
{
switch (Type)
{
case VariantType::Float3:
case VariantType::Float4:
case VariantType::Double3:
case VariantType::Double4:
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[2]);
default:
return Zero;
}
}
ShaderGraphValue ShaderGraphValue::GetW() const
{
switch (Type)
{
case VariantType::Float4:
case VariantType::Double4:
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[3]);
default:
return One;
}
}
ShaderGraphValue ShaderGraphValue::Cast(const ShaderGraphValue& v, VariantType::Types to)
{
// If they are the same types or input value is empty, then just return value

View File

@@ -318,28 +318,19 @@ public:
/// Gets the Y component of the value. Valid only for vector types.
/// </summary>
/// <returns>The Y component.</returns>
ShaderGraphValue GetY() const
{
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[1]);
}
ShaderGraphValue GetY() const;
/// <summary>
/// Gets the Z component of the value. Valid only for vector types.
/// </summary>
/// <returns>The Z component.</returns>
ShaderGraphValue GetZ() const
{
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[2]);
}
ShaderGraphValue GetZ() const;
/// <summary>
/// Gets the W component of the value. Valid only for vector types.
/// </summary>
/// <returns>The W component.</returns>
ShaderGraphValue GetW() const
{
return ShaderGraphValue(VariantType::Types::Float, Value + _subs[3]);
}
ShaderGraphValue GetW() const;
public:
/// <summary>