private void SetParamAsVec4Debug(UniformBlock uniformBlock, MatlEnums.ParamId paramId) { // Convert parameters into colors for easier visualization. var name = "vec4Param"; if (vec4ByParamId.ContainsKey(paramId)) { var value = vec4ByParamId[paramId]; uniformBlock.SetValue(name, value); } else if (boolByParamId.ContainsKey(paramId)) { var value = boolByParamId[paramId]; if (value) { uniformBlock.SetValue(name, new Vector4(1, 0, 1, 0)); } else { uniformBlock.SetValue(name, new Vector4(0, 0, 1, 0)); } } else if (floatByParamId.ContainsKey(paramId)) { var value = floatByParamId[paramId]; uniformBlock.SetValue(name, new Vector4(value, value, value, 0)); } else { uniformBlock.SetValue(name, Vector4.Zero); } }
private void SetFloat(UniformBlock uniformBlock, MatlEnums.ParamId paramId, float defaultValue) { var name = paramId.ToString(); if (floatByParamId.ContainsKey(paramId)) { var value = floatByParamId[paramId]; uniformBlock.SetValue(name, value); } else { uniformBlock.SetValue(name, defaultValue); } }
private void SetBool(UniformBlock uniformBlock, MatlEnums.ParamId paramId, bool defaultValue) { var name = paramId.ToString(); if (boolByParamId.ContainsKey(paramId)) { var value = boolByParamId[paramId]; uniformBlock.SetValue(name, value ? 1 : 0); } else { uniformBlock.SetValue(name, defaultValue ? 1 : 0); } }
private void AddFloat(UniformBlock genericMaterial, MatlEnums.ParamId paramId, float defaultValue) { var name = paramId.ToString(); if (floatByParamId.ContainsKey(paramId)) { var value = floatByParamId[paramId]; genericMaterial.SetValue(name, value); } else { genericMaterial.SetValue(name, defaultValue); } }
private void AddBool(UniformBlock genericMaterial, MatlEnums.ParamId paramId, bool defaultValue) { var name = paramId.ToString(); if (boolByParamId.ContainsKey(paramId)) { var value = boolByParamId[paramId]; genericMaterial.SetValue(name, value ? 1 : 0); } else { genericMaterial.SetValue(name, defaultValue ? 1 : 0); } }
private void AddFloat(UniformBlock genericMaterial, long paramId, float defaultValue) { var name = $"param{paramId.ToString("X")}"; if (floatByParamId.ContainsKey(paramId)) { var value = floatByParamId[paramId]; genericMaterial.SetValue(name, value); } else { genericMaterial.SetValue(name, defaultValue); } }
private void AddBool(UniformBlock genericMaterial, long paramId, bool defaultValue) { var name = $"param{paramId.ToString("X")}"; if (boolByParamId.ContainsKey(paramId)) { var value = boolByParamId[paramId]; genericMaterial.SetValue(name, value ? 1 : 0); } else { genericMaterial.SetValue(name, defaultValue ? 1 : 0); } }
private static void MatPropertyShaderUniform(UniformBlock uniformBlock, Nud.Material mat, string propertyName, Vector4 defaultValue) { // Attempt to get the values from the material. var newValues = GetValues(mat, propertyName, defaultValue); string uniformName = propertyName.Replace("NU_", ""); uniformBlock.SetValue(uniformName, new Vector4(newValues[0], newValues[1], newValues[2], newValues[3])); }
private void SetVec4(UniformBlock uniformBlock, MatlEnums.ParamId paramId, Vector4 defaultValue, bool isDebug = false) { // Convert parameters into colors for easier visualization. var name = paramId.ToString(); if (isDebug) { name = "vec4Param"; } if (Vec4ParamsMaterialAnimation.ContainsKey(paramId)) { var value = Vec4ParamsMaterialAnimation[paramId]; uniformBlock.SetValue(name, value); } else if (vec4ByParamId.ContainsKey(paramId)) { var value = vec4ByParamId[paramId]; uniformBlock.SetValue(name, value); } else if (boolByParamId.ContainsKey(paramId)) { var value = boolByParamId[paramId]; if (value) { uniformBlock.SetValue(name, new Vector4(1, 0, 1, 0)); } else { uniformBlock.SetValue(name, new Vector4(0, 0, 1, 0)); } } else if (floatByParamId.ContainsKey(paramId)) { var value = floatByParamId[paramId]; uniformBlock.SetValue(name, new Vector4(value, value, value, 0)); } else { uniformBlock.SetValue(name, defaultValue); } }
private void SetMaterialParams(UniformBlock uniformBlock) { SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector0, Vector4.Zero); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector3, Vector4.One); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector6, new Vector4(1, 1, 0, 0)); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector8, Vector4.One); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector11, Vector4.Zero); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector13, Vector4.One); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector14, Vector4.One); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector18, Vector4.One); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector30, Vector4.Zero); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector31, new Vector4(1, 1, 0, 0)); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector32, new Vector4(1, 1, 0, 0)); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector44, Vector4.Zero); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector45, Vector4.Zero); SetVec4(uniformBlock, MatlEnums.ParamId.CustomVector47, Vector4.Zero); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean1, false); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean2, true); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean3, true); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean4, true); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean5, false); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean6, false); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean9, false); SetBool(uniformBlock, MatlEnums.ParamId.CustomBoolean11, true); SetFloat(uniformBlock, MatlEnums.ParamId.CustomFloat1, 0.0f); SetFloat(uniformBlock, MatlEnums.ParamId.CustomFloat4, 0.0f); SetFloat(uniformBlock, MatlEnums.ParamId.CustomFloat8, 0.0f); SetFloat(uniformBlock, MatlEnums.ParamId.CustomFloat10, 0.0f); SetFloat(uniformBlock, MatlEnums.ParamId.CustomFloat19, 0.0f); uniformBlock.SetValue("hasCustomVector11", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector11)); uniformBlock.SetValue("hasCustomVector44", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector44)); uniformBlock.SetValue("hasCustomVector47", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector47)); uniformBlock.SetValue("hasCustomFloat10", floatByParamId.ContainsKey(MatlEnums.ParamId.CustomFloat10)); uniformBlock.SetValue("hasCustomBoolean1", boolByParamId.ContainsKey(MatlEnums.ParamId.CustomBoolean1)); uniformBlock.SetValue("hasColMap", HasCol); uniformBlock.SetValue("hasCol2Map", HasCol2); uniformBlock.SetValue("hasInkNorMap", HasInkNorMap); uniformBlock.SetValue("hasDifCubeMap", HasDifCube); uniformBlock.SetValue("hasDiffuse", HasDiffuse); uniformBlock.SetValue("hasDiffuse2", HasDiffuse2); uniformBlock.SetValue("hasDiffuse3", HasDiffuse3); // HACK: There's probably a better way to handle blending emission and base color maps. var hasDiffuseMaps = HasCol || HasCol2 || HasDiffuse || HasDiffuse2 || HasDiffuse3; var hasEmiMaps = HasEmi || HasEmi2; uniformBlock.SetValue("emissionOverride", hasEmiMaps && !hasDiffuseMaps); }
private void SetMaterialParams(UniformBlock uniformBlock) { SetVectors(uniformBlock); SetBooleans(uniformBlock); SetFloats(uniformBlock); uniformBlock.SetValue("hasCustomVector11", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector11)); uniformBlock.SetValue("hasCustomVector44", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector44)); uniformBlock.SetValue("hasCustomVector47", vec4ByParamId.ContainsKey(MatlEnums.ParamId.CustomVector47)); uniformBlock.SetValue("hasCustomFloat10", floatByParamId.ContainsKey(MatlEnums.ParamId.CustomFloat10)); uniformBlock.SetValue("hasCustomFloat19", floatByParamId.ContainsKey(MatlEnums.ParamId.CustomFloat19)); uniformBlock.SetValue("hasCustomBoolean1", boolByParamId.ContainsKey(MatlEnums.ParamId.CustomBoolean1)); uniformBlock.SetValue("hasColMap", HasCol); uniformBlock.SetValue("hasCol2Map", HasCol2); uniformBlock.SetValue("hasInkNorMap", HasInkNorMap); uniformBlock.SetValue("hasDifCubeMap", HasDifCube); uniformBlock.SetValue("hasDiffuse", HasDiffuse); uniformBlock.SetValue("hasDiffuse2", HasDiffuse2); uniformBlock.SetValue("hasDiffuse3", HasDiffuse3); // Validate shaders, materials, and attributes. uniformBlock.SetValue("isValidShaderLabel", IsValidShaderLabel); uniformBlock.SetValue("hasColorSet1", HasColorSet1); uniformBlock.SetValue("hasColorSet2", HasColorSet2); uniformBlock.SetValue("hasColorSet3", HasColorSet3); uniformBlock.SetValue("hasColorSet4", HasColorSet4); uniformBlock.SetValue("hasColorSet5", HasColorSet5); uniformBlock.SetValue("hasColorSet6", HasColorSet6); uniformBlock.SetValue("hasColorSet7", HasColorSet7); // HACK: There's probably a better way to handle blending emission and base color maps. var hasDiffuseMaps = HasCol || HasCol2 || HasDiffuse || HasDiffuse2 || HasDiffuse3; var hasEmiMaps = HasEmi || HasEmi2; uniformBlock.SetValue("emissionOverride", hasEmiMaps && !hasDiffuseMaps); }
public void InvalidName() { var uniformBlock = new UniformBlock(shader, "UniformBlockA"); Assert.IsFalse(uniformBlock.SetValue("ಠ_ಠ", 1.5f)); }
public void ValidNameSmallerThanType() { var uniformBlock = new UniformBlock(shader, "UniformBlockA"); Assert.IsTrue(uniformBlock.SetValue("blockAFloat", (byte)128)); }
public void ValidNameLargerThanBlock() { var uniformBlock = new UniformBlock(shader, "UniformBlockA"); var e = Assert.ThrowsException <ArgumentOutOfRangeException>(() => uniformBlock.SetValue("blockAFloat", new TestStruct())); }
public void ValidName() { var uniformBlock = new UniformBlock(shader, "UniformBlockA"); Assert.IsTrue(uniformBlock.SetValue("blockAFloat", 1.5f)); }