Beispiel #1
0
        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");
        }