mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
requirements for windDeformation unified featuer
This commit is contained in:
parent
5bbbff3219
commit
050d704e77
|
|
@ -30,6 +30,69 @@
|
|||
//**************************************************************************
|
||||
Vector<LangElement*> LangElement::elementList( __FILE__, __LINE__ );
|
||||
|
||||
const char* LangElement::constTypeToString(GFXShaderConstType constType)
|
||||
{
|
||||
// Determine shader language based on GFXAdapterAPI
|
||||
if (GFX->getAdapterType() == OpenGL)
|
||||
{
|
||||
switch (constType)
|
||||
{
|
||||
case GFXSCT_Float: return "float"; break;
|
||||
case GFXSCT_Float2: return "vec2"; break;
|
||||
case GFXSCT_Float3: return "vec3"; break;
|
||||
case GFXSCT_Float4: return "vec4"; break;
|
||||
case GFXSCT_Float2x2: return "mat2"; break;
|
||||
case GFXSCT_Float3x3: return "mat3"; break;
|
||||
case GFXSCT_Float3x4: return "mat3x4"; break;
|
||||
case GFXSCT_Float4x3: return "mat4x3"; break;
|
||||
case GFXSCT_Float4x4: return "mat4"; break;
|
||||
case GFXSCT_Int: return "int"; break;
|
||||
case GFXSCT_Int2: return "ivec2"; break;
|
||||
case GFXSCT_Int3: return "ivec3"; break;
|
||||
case GFXSCT_Int4: return "ivec4"; break;
|
||||
case GFXSCT_UInt: return "uint"; break;
|
||||
case GFXSCT_UInt2: return "uvec2"; break;
|
||||
case GFXSCT_UInt3: return "uvec3"; break;
|
||||
case GFXSCT_UInt4: return "uvec4"; break;
|
||||
case GFXSCT_Bool: return "bool"; break;
|
||||
case GFXSCT_Bool2: return "bvec2"; break;
|
||||
case GFXSCT_Bool3: return "bvec3"; break;
|
||||
case GFXSCT_Bool4: return "bvec4"; break;
|
||||
default: return "unknown"; break;
|
||||
}
|
||||
}
|
||||
else // Assume DirectX/HLSL
|
||||
{
|
||||
switch (constType)
|
||||
{
|
||||
case GFXSCT_Float: return "float"; break;
|
||||
case GFXSCT_Float2: return "float2"; break;
|
||||
case GFXSCT_Float3: return "float3"; break;
|
||||
case GFXSCT_Float4: return "float4"; break;
|
||||
case GFXSCT_Float2x2: return "float2x2"; break;
|
||||
case GFXSCT_Float3x3: return "float3x3"; break;
|
||||
case GFXSCT_Float3x4: return "float3x4"; break;
|
||||
case GFXSCT_Float4x3: return "float4x3"; break;
|
||||
case GFXSCT_Float4x4: return "float4x4"; break;
|
||||
case GFXSCT_Int: return "int"; break;
|
||||
case GFXSCT_Int2: return "int2"; break;
|
||||
case GFXSCT_Int3: return "int3"; break;
|
||||
case GFXSCT_Int4: return "int4"; break;
|
||||
case GFXSCT_UInt: return "uint"; break;
|
||||
case GFXSCT_UInt2: return "uint2"; break;
|
||||
case GFXSCT_UInt3: return "uint3"; break;
|
||||
case GFXSCT_UInt4: return "uint4"; break;
|
||||
case GFXSCT_Bool: return "bool"; break;
|
||||
case GFXSCT_Bool2: return "bool2"; break;
|
||||
case GFXSCT_Bool3: return "bool3"; break;
|
||||
case GFXSCT_Bool4: return "bool4"; break;
|
||||
default: return "unknown"; break;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Constructor
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -121,6 +184,25 @@ Var::Var( const char *inName, const char *inType )
|
|||
setType( inType );
|
||||
}
|
||||
|
||||
Var::Var(const char* name, GFXShaderConstType type)
|
||||
{
|
||||
structName[0] = '\0';
|
||||
connectName[0] = '\0';
|
||||
uniform = false;
|
||||
vertData = false;
|
||||
connector = false;
|
||||
sampler = false;
|
||||
texCoordNum = 0;
|
||||
constSortPos = cspUninit;
|
||||
constNum = 0;
|
||||
arraySize = 1;
|
||||
texture = false;
|
||||
rank = 0;
|
||||
|
||||
setName(name);
|
||||
setType(type);
|
||||
}
|
||||
|
||||
void Var::setUniform(const String& constType, const String& constName, ConstantSortPosition sortPos)
|
||||
{
|
||||
uniform = true;
|
||||
|
|
@ -156,6 +238,14 @@ void Var::setType(const char *newType )
|
|||
type[ sizeof( type ) - 1 ] = '\0';
|
||||
}
|
||||
|
||||
void Var::setType(GFXShaderConstType constType)
|
||||
{
|
||||
const char* typeStr = "unknown"; // Default unknown type
|
||||
typeStr = constTypeToString(constType);
|
||||
// Copy the string into type[]
|
||||
dStrcpy((char*)type, typeStr, sizeof(type));
|
||||
type[sizeof(type) - 1] = '\0';
|
||||
}
|
||||
//--------------------------------------------------------------------------
|
||||
// print
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -30,6 +30,10 @@
|
|||
#include "core/stream/stream.h"
|
||||
#endif
|
||||
|
||||
#ifndef _GFXENUMS_H_
|
||||
#include "gfx/gfxEnums.h"
|
||||
#endif
|
||||
|
||||
#define WRITESTR( a ){ stream.write( dStrlen(a), a ); }
|
||||
|
||||
|
||||
|
|
@ -55,7 +59,7 @@ struct LangElement
|
|||
static void deleteElements();
|
||||
|
||||
U8 name[32];
|
||||
|
||||
static const char* constTypeToString(GFXShaderConstType constType);
|
||||
LangElement();
|
||||
virtual ~LangElement() {};
|
||||
virtual void print( Stream &stream ){};
|
||||
|
|
@ -131,10 +135,12 @@ struct Var : public LangElement
|
|||
// Default
|
||||
Var();
|
||||
Var( const char *name, const char *type );
|
||||
Var( const char *name, GFXShaderConstType type );
|
||||
|
||||
void setStructName(const char *newName );
|
||||
void setConnectName(const char *newName );
|
||||
void setType(const char *newType );
|
||||
void setType(GFXShaderConstType constType);
|
||||
|
||||
void print( Stream &stream ) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -179,3 +179,19 @@ void GenOp::print( Stream &stream )
|
|||
mElemList[i]->print( stream );
|
||||
}
|
||||
}
|
||||
|
||||
CastOp::CastOp(Var* in1, GFXShaderConstType type) : Parent(in1, NULL)
|
||||
{
|
||||
mInput[0] = in1;
|
||||
mConstType = constTypeToString(type);
|
||||
}
|
||||
|
||||
void CastOp::print(Stream& stream)
|
||||
{
|
||||
Var* var = dynamic_cast<Var*>(mInput[0]);
|
||||
|
||||
WRITESTR(mConstType);
|
||||
WRITESTR("( ");
|
||||
mInput[0]->print(stream);
|
||||
WRITESTR(" )");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ public:
|
|||
ShaderOp( LangElement *in1, LangElement *in2 );
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/*!
|
||||
DecOp - Declaration Operation - Used when declaring a variable in a shader
|
||||
feature. It will automatically print the type of the variable and then
|
||||
|
|
@ -82,7 +81,6 @@ public:
|
|||
float foo = 8.0 * 5.0;
|
||||
@endcode
|
||||
*/
|
||||
//----------------------------------------------------------------------------
|
||||
class DecOp : public ShaderOp
|
||||
{
|
||||
typedef ShaderOp Parent;
|
||||
|
|
@ -163,4 +161,14 @@ public:
|
|||
|
||||
};
|
||||
|
||||
class CastOp : public ShaderOp
|
||||
{
|
||||
typedef ShaderOp Parent;
|
||||
const char* mConstType;
|
||||
public:
|
||||
CastOp(Var* in1, GFXShaderConstType type);
|
||||
void print(Stream& stream) override;
|
||||
};
|
||||
|
||||
|
||||
#endif // _SHADEROP_H_
|
||||
|
|
|
|||
Loading…
Reference in a new issue