Skip to content

Commit

Permalink
Merge pull request AcademySoftwareFoundation#5 from autodesk-forks/sh…
Browse files Browse the repository at this point in the history
…adergen_cleanup

Code cleanup: Changed syntax for all constants in MaterialXShaderGen …
  • Loading branch information
niklasharrysson committed Jan 29, 2018
2 parents d914588 + 2f994ca commit 9c92e0f
Show file tree
Hide file tree
Showing 36 changed files with 304 additions and 331 deletions.
12 changes: 3 additions & 9 deletions source/MaterialXShaderGen/Implementations/AdskSurface.cpp
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
#include <MaterialXShaderGen/Implementations/AdskSurface.h>
#include <MaterialXShaderGen/ShaderGenerators/OgsFxShaderGenerator.h>
#include <MaterialXShaderGen/SgNode.h>

namespace MaterialX
{

namespace {

static const string kLanguage = "glsl";
static const string kTarget = "ogsfx";

}

SgImplementationPtr AdskSurfaceOgsFx::creator()
{
return std::make_shared<AdskSurfaceOgsFx>();
}

const string& AdskSurfaceOgsFx::getLanguage() const
{
return kLanguage;
return OgsFxShaderGenerator::LANGUAGE;
}

const string& AdskSurfaceOgsFx::getTarget() const
{
return kTarget;
return OgsFxShaderGenerator::TARGET;
}

bool AdskSurfaceOgsFx::isTransparent(const SgNode& node) const
Expand Down
5 changes: 3 additions & 2 deletions source/MaterialXShaderGen/Implementations/AdskSurface.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef MATERIALX_ADSK_SURFACE_H
#define MATERIALX_ADSK_SURFACE_H
#ifndef MATERIALX_ADSKSURFACE_H
#define MATERIALX_ADSKSURFACE_H

#include <MaterialXShaderGen/Implementations/SourceCode.h>

Expand All @@ -13,6 +13,7 @@ class AdskSurfaceOgsFx : public SourceCode
static SgImplementationPtr creator();

const string& getLanguage() const override;

const string& getTarget() const override;

bool isTransparent(const SgNode& node) const override;
Expand Down
38 changes: 9 additions & 29 deletions source/MaterialXShaderGen/Implementations/Bitangent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,23 @@
namespace MaterialX
{

namespace
{
static const string kLanguage = "glsl";
static const string kTarget = "ogsfx";
static const string kSpace = "space";
static const string kWorld = "world";
static const string kObject = "object";
static const string kModel = "model";
}

SgImplementationPtr BitangentOgsFx::creator()
{
return std::make_shared<BitangentOgsFx>();
}

const string& BitangentOgsFx::getLanguage() const
{
return kLanguage;
}

const string& BitangentOgsFx::getTarget() const
{
return kTarget;
}

void BitangentOgsFx::registerInputs(const SgNode& node, ShaderGenerator& /*shadergen*/, Shader& shader)
{
shader.registerAttribute(Shader::Variable("vec3", "inBitangent", "BITANGENT"));

const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
shader.registerUniform(Shader::Variable("mat4", "gWorldITXf", "WorldInverseTranspose"));
shader.registerVarying(Shader::Variable("vec3", "WorldBitangent", "BITANGENT"));
}
else if (space == kModel)
else if (space == MODEL)
{
shader.registerVarying(Shader::Variable("vec3", "ModelBitangent", "BITANGENT"));
}
Expand All @@ -57,17 +37,17 @@ void BitangentOgsFx::emitFunctionCall(const SgNode& node, ShaderGenerator& shade
HwShader& shader = static_cast<HwShader&>(shader_);

BEGIN_SHADER_STAGE(shader, HwShader::VERTEX_STAGE)
const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
if (!shader.isCalculated("WorldBitangent"))
{
shader.setCalculated("WorldBitangent");
shader.addLine("VS_OUT.WorldBitangent = normalize((gWorldITXf * vec4(inBitangent,0)).xyz)");
}
}
else if (space == kModel)
else if (space == MODEL)
{
if (!shader.isCalculated("ModelBitangent"))
{
Expand All @@ -89,13 +69,13 @@ void BitangentOgsFx::emitFunctionCall(const SgNode& node, ShaderGenerator& shade
shader.beginLine();
shadergen.emitOutput(node.getOutput(), true, shader);

const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
shader.addStr(" = PS_IN.WorldBitangent");
}
else if (space == kModel)
else if (space == MODEL)
{
shader.addStr(" = PS_IN.ModelBitangent");
}
Expand Down
8 changes: 3 additions & 5 deletions source/MaterialXShaderGen/Implementations/Bitangent.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
#ifndef MATERIALX_BITANGENT_H
#define MATERIALX_BITANGENT_H

#include <MaterialXShaderGen/SgImplementation.h>
#include <MaterialXShaderGen/Implementations/OgsFxImplementation.h>

namespace MaterialX
{

/// Implementation of 'bitangent' node for OgsFx
class BitangentOgsFx : public SgImplementation
class BitangentOgsFx : public OgsFxImplementation
{
public:
static SgImplementationPtr creator();

const string& getLanguage() const override;
const string& getTarget() const override;

void registerInputs(const SgNode& node, ShaderGenerator& shadergen, Shader& shader) override;

void emitFunctionCall(const SgNode& node, ShaderGenerator& shadergen, Shader& shader) override;
};

Expand Down
8 changes: 4 additions & 4 deletions source/MaterialXShaderGen/Implementations/Compare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
namespace MaterialX
{

const vector<string> Compare::kInputNames = { "intest", "cutoff", "in1", "in2" };
const vector<string> Compare::INPUT_NAMES = { "intest", "cutoff", "in1", "in2" };

SgImplementationPtr Compare::creator()
{
Expand All @@ -22,13 +22,13 @@ void Compare::emitFunctionCall(const SgNode& node, ShaderGenerator& shadergen, S
shadergen.emitOutput(node.getOutput(), true, shader);
shader.endLine();

const SgInput* intest = node.getInput("intest");
const SgInput* cutoff = node.getInput("cutoff");
const SgInput* intest = node.getInput(INPUT_NAMES[0]);
const SgInput* cutoff = node.getInput(INPUT_NAMES[1]);

// Process the if and else branches of the conditional
for (int branch = 2; branch <= 3; ++branch)
{
const SgInput* input = node.getInput(kInputNames[branch]);
const SgInput* input = node.getInput(INPUT_NAMES[branch]);

if (branch > 2)
{
Expand Down
2 changes: 1 addition & 1 deletion source/MaterialXShaderGen/Implementations/Compare.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Compare : public SgImplementation
void emitFunctionCall(const SgNode& node, ShaderGenerator& shadergen, Shader& shader) override;

public:
static const vector<string> kInputNames;
static const vector<string> INPUT_NAMES;
};

} // namespace MaterialX
Expand Down
39 changes: 9 additions & 30 deletions source/MaterialXShaderGen/Implementations/Normal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,45 +6,24 @@
namespace MaterialX
{

namespace
{
static const string kLanguage = "glsl";
static const string kTarget = "ogsfx";
static const string kSpace = "space";
static const string kWorld = "world";
static const string kObject = "object";
static const string kModel = "model";
}

SgImplementationPtr NormalOgsFx::creator()
{
return std::make_shared<NormalOgsFx>();
}

const string& NormalOgsFx::getLanguage() const
{
return kLanguage;
}

const string& NormalOgsFx::getTarget() const
{
return kTarget;
}

void NormalOgsFx::registerInputs(const SgNode& node, ShaderGenerator& /*shadergen*/, Shader& shader)
{
shader.registerAttribute(Shader::Variable("vec3", "inNormal", "NORMAL"));

const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
shader.registerUniform(Shader::Variable("mat4", "gWorldITXf", "WorldInverseTranspose"));
shader.registerVarying(Shader::Variable("vec3", "WorldNormal", "NORMAL"));
}
else if (space == kModel)
else if (space == MODEL)
{
// TODO: add uniform for model space transformation matrix
shader.registerVarying(Shader::Variable("vec3", "ModelNormal", "NORMAL"));
}
else
Expand All @@ -58,9 +37,9 @@ void NormalOgsFx::emitFunctionCall(const SgNode& node, ShaderGenerator& shaderge
HwShader& shader = static_cast<HwShader&>(shader_);

BEGIN_SHADER_STAGE(shader, HwShader::VERTEX_STAGE)
const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
if (!shader.isCalculated("WorldNormal"))
{
Expand All @@ -73,7 +52,7 @@ void NormalOgsFx::emitFunctionCall(const SgNode& node, ShaderGenerator& shaderge
shader.endScope();
}
}
else if (space == kModel)
else if (space == MODEL)
{
if (!shader.isCalculated("ModelNormal"))
{
Expand All @@ -95,13 +74,13 @@ void NormalOgsFx::emitFunctionCall(const SgNode& node, ShaderGenerator& shaderge
shader.beginLine();
shadergen.emitOutput(node.getOutput(), true, shader);

const SgInput* spaceInput = node.getInput(kSpace);
const SgInput* spaceInput = node.getInput(SPACE);
string space = spaceInput ? spaceInput->value->getValueString() : "";
if (space == kWorld)
if (space == WORLD)
{
shader.addStr(" = PS_IN.WorldNormal");
}
else if (space == kModel)
else if (space == MODEL)
{
shader.addStr(" = PS_IN.ModelNormal");
}
Expand Down
8 changes: 3 additions & 5 deletions source/MaterialXShaderGen/Implementations/Normal.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
#ifndef MATERIALX_NORMAL_H
#define MATERIALX_NORMAL_H

#include <MaterialXShaderGen/SgImplementation.h>
#include <MaterialXShaderGen/Implementations/OgsFxImplementation.h>

namespace MaterialX
{

/// Implementation of 'normal' node for OgsFx
class NormalOgsFx : public SgImplementation
class NormalOgsFx : public OgsFxImplementation
{
public:
static SgImplementationPtr creator();

const string& getLanguage() const override;
const string& getTarget() const override;

void registerInputs(const SgNode& node, ShaderGenerator& shadergen, Shader& shader) override;

void emitFunctionCall(const SgNode& node, ShaderGenerator& shadergen, Shader& shader) override;
};

Expand Down
22 changes: 22 additions & 0 deletions source/MaterialXShaderGen/Implementations/OgsFxImplementation.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#include <MaterialXShaderGen/Implementations/OgsFxImplementation.h>

namespace MaterialX
{

const string OgsFxImplementation::SPACE = "space";
const string OgsFxImplementation::WORLD = "world";
const string OgsFxImplementation::OBJECT = "object";
const string OgsFxImplementation::MODEL = "model";
const string OgsFxImplementation::INDEX = "index";

const string& OgsFxImplementation::getLanguage() const
{
return OgsFxShaderGenerator::LANGUAGE;
}

const string& OgsFxImplementation::getTarget() const
{
return OgsFxShaderGenerator::TARGET;
}

} // namespace MaterialX
29 changes: 29 additions & 0 deletions source/MaterialXShaderGen/Implementations/OgsFxImplementation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef MATERIALX_OGSFXIMPLEMENTATION_H
#define MATERIALX_OGSFXIMPLEMENTATION_H

#include <MaterialXShaderGen/SgImplementation.h>
#include <MaterialXShaderGen/ShaderGenerators/OgsFxShaderGenerator.h>

namespace MaterialX
{

/// Base class for node implementations targeting OgsFx
class OgsFxImplementation : public SgImplementation
{
public:
const string& getLanguage() const override;
const string& getTarget() const override;

protected:
OgsFxImplementation() {}

static const string SPACE;
static const string WORLD;
static const string OBJECT;
static const string MODEL;
static const string INDEX;
};

} // namespace MaterialX

#endif
Loading

0 comments on commit 9c92e0f

Please sign in to comment.