Exemple #1
0
        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 + ")");
            }
        }
Exemple #2
0
      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 + ")");
          }
      }