diff --git a/install/scripts/materialtest.py b/install/scripts/materialtest.py index 0f89e3e7c..9efd9c868 100644 --- a/install/scripts/materialtest.py +++ b/install/scripts/materialtest.py @@ -52,6 +52,7 @@ print('Coverage: {0}'.format(newMaterial.getCoverage())) print('Light Falloff Map Type: {0}'.format(newMaterial.getLightFalloffCubeMapType())) print('Renderbump Arguments: {0}'.format(newMaterial.getRenderBumpArguments())) +print('FrobStage Type: {0}'.format(newMaterial.getFrobStageType())) # There are a couple of pre-defined sort requests, corresponding to the engine code newMaterial.setSortRequest(dr.Material.SortRequest.NEAREST) @@ -67,6 +68,17 @@ newMaterial.setIsBlendLight(0) newMaterial.setDescription("New Material") +newMaterial.setFrobStageType(dr.Material.FrobStageType.DIFFUSE) +newMaterial.setFrobStageParameter(0, 0.4) # assign the same value to all RGB components +newMaterial.setFrobStageRgbParameter(1, dr.Vector3(0.1, 0.2, 0.3)) # assign RGB components separately + +print('\n\Material definition with frobstage_diffuse:\n{0}\n{{{1}}}\n\n'.format(newMaterial.getName(), newMaterial.getDefinition())) + +newMaterial.setFrobStageType(dr.Material.FrobStageType.TEXTURE) +newMaterial.setFrobStageMapExpressionFromString("textures/common/white") + +print('\n\Material definition with frobstage_texture:\n{0}\n{{{1}}}\n\n'.format(newMaterial.getName(), newMaterial.getDefinition())) + stageIndex = newMaterial.addStage(dr.MaterialStage.Type.BLEND) print('Material has now {0} stages'.format(newMaterial.getNumStages())) diff --git a/radiantcore/shaders/MaterialSourceGenerator.cpp b/radiantcore/shaders/MaterialSourceGenerator.cpp index aad3fd8b9..c2a7d0dec 100644 --- a/radiantcore/shaders/MaterialSourceGenerator.cpp +++ b/radiantcore/shaders/MaterialSourceGenerator.cpp @@ -692,7 +692,7 @@ std::ostream& operator<<(std::ostream& stream, ShaderTemplate& shaderTemplate) // FrobStage keywords if (shaderTemplate.getFrobStageType() != Material::FrobStageType::Default) { - stream << "\n"; + stream << "\n\t"; stream << getStringForFrobStageType(shaderTemplate.getFrobStageType()); if (shaderTemplate.getFrobStageType() == Material::FrobStageType::Texture) @@ -710,6 +710,8 @@ std::ostream& operator<<(std::ostream& stream, ShaderTemplate& shaderTemplate) stream << " "; writeScalarOrVector3(stream, shaderTemplate.getFrobStageRgbParameter(1)); } + + stream << "\n"; } return stream;