public void SetMaterialUniforms(Shader shader) { // TODO: Rework default texture creation. if (defaultTextures == null) { defaultTextures = new Resources.DefaultTextures(); } if (genericMaterial == null) { genericMaterial = Material.CreateGenericMaterial(Material); } genericMaterial.SetShaderUniforms(shader); if (uniformBlock == null) { uniformBlock = new SFGenericModel.Materials.UniformBlock(shader, "MaterialParams") { BlockBinding = 1 }; Material.AddMaterialParams(uniformBlock); } uniformBlock.BindBlock(shader); }
private void Benchmark() { int iterations = 100000; var material = new SFGenericModel.Materials.GenericMaterial(); for (int i = 0; i < 100; i++) { material.AddInt(i.ToString(), i); } objModelShader.UseProgram(); var stopwatch = System.Diagnostics.Stopwatch.StartNew(); for (int i = 0; i < iterations; i++) { objModelShader.SetBoolToInt("attributeIndex", true); objModelShader.SetBoolToInt("attributeIndex", false); } stopwatch.Stop(); System.Diagnostics.Debug.WriteLine($"Operation: { (double)stopwatch.ElapsedMilliseconds / iterations } ms"); }