Skip to content

Commit

Permalink
Add support for more operations.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpd002 committed Aug 24, 2016
1 parent 5fa914b commit 91483f8
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/nuanceur/builder/Float2Value.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ namespace Nuanceur
{
private:
friend CSwizzleSelector4;
friend CFloat2Rvalue operator /(const CFloat2Value&, const CFloat2Value&);
friend CFloat2Rvalue NewFloat2(const CFloatValue& x, float y);

CFloat2Rvalue(const CFloat2Rvalue&) = default;
Expand Down
1 change: 1 addition & 0 deletions include/nuanceur/builder/Operations.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ namespace Nuanceur
CFloat4Rvalue operator *(const CFloat4Value& lhs, const CFloat4Value& rhs);

CFloatRvalue operator /(const CFloatValue& lhs, const CFloatValue& rhs);
CFloat2Rvalue operator /(const CFloat2Value& lhs, const CFloat2Value& rhs);

CFloat4Rvalue operator *(const CMatrix44Value& lhs, const CFloat4Value& rhs);

Expand Down
1 change: 1 addition & 0 deletions include/nuanceur/builder/ShaderBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace Nuanceur
SWIZZLE_XY,
SWIZZLE_XZ,
SWIZZLE_XW,
SWIZZLE_ZZ,

SWIZZLE_XYZ,

Expand Down
10 changes: 10 additions & 0 deletions include/nuanceur/builder/SwizzleSelector4.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,21 @@ namespace Nuanceur
return CFloatRvalue(m_symbol, SWIZZLE_X);
}

CFloatRvalue z() const
{
return CFloatRvalue(m_symbol, SWIZZLE_Z);
}

CFloat2Rvalue xy() const
{
return CFloat2Rvalue(m_symbol, SWIZZLE_XY);
}

CFloat2Rvalue zz() const
{
return CFloat2Rvalue(m_symbol, SWIZZLE_ZZ);
}

CFloat3Rvalue xyz() const
{
return CFloat3Rvalue(m_symbol, SWIZZLE_XYZ);
Expand Down
18 changes: 18 additions & 0 deletions src/builder/Operations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@ CFloatRvalue Nuanceur::operator /(const CFloatValue& lhs, const CFloatValue& rhs
return temp;
}

CFloat2Rvalue Nuanceur::operator /(const CFloat2Value& lhs, const CFloat2Value& rhs)
{
auto owner = GetCommonOwner(lhs.symbol, rhs.symbol);
auto temp = CFloat2Rvalue(owner->CreateTemporary());
owner->InsertStatement(
CShaderBuilder::STATEMENT(CShaderBuilder::STATEMENT_OP_DIVIDE, temp, lhs, rhs)
);
return temp;
}

CFloat4Rvalue Nuanceur::operator *(const CMatrix44Value& lhs, const CFloat4Value& rhs)
{
auto owner = GetCommonOwner(lhs.symbol, rhs.symbol);
Expand All @@ -89,6 +99,14 @@ void CFloatLvalue::operator =(const CFloatRvalue& rhs)
);
}

void CFloat2Lvalue::operator =(const CFloat2Rvalue& rhs)
{
auto owner = rhs.symbol.owner;
owner->InsertStatement(
CShaderBuilder::STATEMENT(CShaderBuilder::STATEMENT_OP_ASSIGN, *this, rhs)
);
}

void CFloat4Lvalue::operator =(const CFloat4Rvalue& rhs)
{
auto owner = rhs.symbol.owner;
Expand Down
3 changes: 3 additions & 0 deletions src/generators/HlslShaderGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,9 @@ std::string CHlslShaderGenerator::PrintSymbolRef(const CShaderBuilder::SYMBOLREF
case SWIZZLE_XZ:
return symbolName + ".xz";
break;
case SWIZZLE_ZZ:
return symbolName + ".zz";
break;
case SWIZZLE_XYZ:
return symbolName + ".xyz";
break;
Expand Down

0 comments on commit 91483f8

Please sign in to comment.