forked from AcademySoftwareFoundation/MaterialX
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dev_1.39' into nodedef_creation_api
- Loading branch information
Showing
35 changed files
with
825 additions
and
784 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 0 additions & 83 deletions
83
javascript/MaterialXTest/browser/esslShaderGenerator.spec.js
This file was deleted.
Oops, something went wrong.
104 changes: 104 additions & 0 deletions
104
javascript/MaterialXTest/browser/shaderGenerator.spec.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
// MaterialX is served through a script tag in the test setup. | ||
|
||
function createStandardSurfaceMaterial(mx) | ||
{ | ||
const doc = mx.createDocument(); | ||
const ssName = 'SR_default'; | ||
const ssNode = doc.addChildOfCategory('standard_surface', ssName); | ||
ssNode.setType('surfaceshader'); | ||
const smNode = doc.addChildOfCategory('surfacematerial', 'Default'); | ||
smNode.setType('material'); | ||
const shaderElement = smNode.addInput('surfaceshader'); | ||
shaderElement.setType('surfaceshader'); | ||
shaderElement.setNodeName(ssName); | ||
expect(doc.validate()).to.be.true; | ||
return doc; | ||
} | ||
|
||
describe('Generate Shaders', function () | ||
{ | ||
let mx; | ||
const canvas = document.createElement('canvas'); | ||
const gl = canvas.getContext('webgl2'); | ||
|
||
this.timeout(60000); | ||
|
||
before(async function () | ||
{ | ||
mx = await MaterialX(); | ||
}); | ||
|
||
it('Compile Shaders', () => | ||
{ | ||
const doc = createStandardSurfaceMaterial(mx); | ||
|
||
const generators = [] | ||
if (typeof mx.EsslShaderGenerator != 'undefined') | ||
generators.push(new mx.EsslShaderGenerator()); | ||
if (typeof mx.GlslShaderGenerator != 'undefined') | ||
generators.push(new mx.GlslShaderGenerator()); | ||
if (typeof mx.MslShaderGenerator != 'undefined') | ||
generators.push(new mx.MslShaderGenerator()); | ||
if (typeof mx.OslShaderGenerator != 'undefined') | ||
generators.push(new mx.OslShaderGenerator()); | ||
if (typeof mx.VkShaderGenerator != 'undefined') | ||
generators.push(new mx.VkShaderGenerator()); | ||
if (typeof mx.MdlShaderGenerator != 'undefined') | ||
generators.push(new mx.MdlShaderGenerator()); | ||
|
||
const elem = mx.findRenderableElement(doc); | ||
for (let gen of generators) | ||
{ | ||
console.log("Generating shader for " + gen.getTarget() + "..."); | ||
|
||
const genContext = new mx.GenContext(gen); | ||
const stdlib = mx.loadStandardLibraries(genContext); | ||
doc.importLibrary(stdlib); | ||
|
||
try | ||
{ | ||
const mxShader = gen.generate(elem.getNamePath(), elem, genContext); | ||
|
||
const fShader = mxShader.getSourceCode("pixel"); | ||
|
||
if (gen.getTarget() == 'essl') | ||
{ | ||
const vShader = mxShader.getSourceCode("vertex"); | ||
|
||
const glVertexShader = gl.createShader(gl.VERTEX_SHADER); | ||
gl.shaderSource(glVertexShader, vShader); | ||
gl.compileShader(glVertexShader); | ||
if (!gl.getShaderParameter(glVertexShader, gl.COMPILE_STATUS)) | ||
{ | ||
console.error("-------- VERTEX SHADER FAILED TO COMPILE: ----------------"); | ||
console.error("--- VERTEX SHADER LOG ---"); | ||
console.error(gl.getShaderInfoLog(glVertexShader)); | ||
console.error("--- VERTEX SHADER START ---"); | ||
console.error(fShader); | ||
console.error("--- VERTEX SHADER END ---"); | ||
} | ||
expect(gl.getShaderParameter(glVertexShader, gl.COMPILE_STATUS)).to.equal(true); | ||
|
||
const glPixelShader = gl.createShader(gl.FRAGMENT_SHADER); | ||
gl.shaderSource(glPixelShader, fShader); | ||
gl.compileShader(glPixelShader); | ||
if (!gl.getShaderParameter(glPixelShader, gl.COMPILE_STATUS)) | ||
{ | ||
console.error("-------- PIXEL SHADER FAILED TO COMPILE: ----------------"); | ||
console.error("--- PIXEL SHADER LOG ---"); | ||
console.error(gl.getShaderInfoLog(glPixelShader)); | ||
console.error("--- PIXEL SHADER START ---"); | ||
console.error(fShader); | ||
console.error("--- PIXEL SHADER END ---"); | ||
} | ||
expect(gl.getShaderParameter(glPixelShader, gl.COMPILE_STATUS)).to.equal(true); | ||
} | ||
} | ||
catch (errPtr) | ||
{ | ||
console.error("-------- Failed code generation: ----------------"); | ||
console.error(mx.getExceptionMessage(errPtr)); | ||
} | ||
} | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.