internal EffectParameter EffectParameterForUniform(ShaderProgram shaderProgram, int index) { //var b = shaderProgram.GetUniformBinding(i); var name = shaderProgram.GetUniformName(index); //var s = shaderProgram.GetUniformSize(i); //var x = shaderProgram.GetUniformTexture(i); var type = shaderProgram.GetUniformType(index); //EffectParameter.Semantic => COLOR0 / POSITION0 etc //FIXME: bufferOffset in below lines is 0 but should probably be something else switch (type) { case ShaderUniformType.Float4x4: return(new EffectParameter( EffectParameterClass.Matrix, EffectParameterType.Single, name, 4, 4, "float4x4", EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, new float[4 * 4])); case ShaderUniformType.Float4: return(new EffectParameter( EffectParameterClass.Vector, EffectParameterType.Single, name, 4, 1, "float4", EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, new float[4])); case ShaderUniformType.Sampler2D: return(new EffectParameter( EffectParameterClass.Object, EffectParameterType.Texture2D, name, 1, 1, "texture2d", EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, null)); default: throw new Exception("Uniform Type " + type + " Not yet implemented (" + name + ")"); } }
internal EffectParameter EffectParameterForUniform(ShaderProgram shaderProgram, int index) { //var b = shaderProgram.GetUniformBinding(i); var name = shaderProgram.GetUniformName(index); //var s = shaderProgram.GetUniformSize(i); //var x = shaderProgram.GetUniformTexture(i); var type = shaderProgram.GetUniformType(index); //EffectParameter.Semantic => COLOR0 / POSITION0 etc //FIXME: bufferOffset in below lines is 0 but should probably be something else switch (type) { case ShaderUniformType.Float4x4: return new EffectParameter( EffectParameterClass.Matrix, EffectParameterType.Single, name, 4, 4, "float4x4",EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, new float[4 * 4]); case ShaderUniformType.Float4: return new EffectParameter( EffectParameterClass.Vector, EffectParameterType.Single, name, 4, 1, "float4",EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, new float[4]); case ShaderUniformType.Sampler2D: return new EffectParameter( EffectParameterClass.Object, EffectParameterType.Texture2D, name, 1, 1, "texture2d",EffectAnnotationCollection.Empty, EffectParameterCollection.Empty, EffectParameterCollection.Empty, null); default: throw new Exception("Uniform Type " + type + " Not yet implemented (" + name + ")"); } }