This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GPU support for Vertex Texture Fetch (VTF)

Hi,

One of the customer is looking for below info, can anyone help.

I am evaluating various SOC products for a video related application. Currently I am focusing on the ARM CPU + PowerVR chips, such as the OMAP and DaVinci lines. This would be using Linux as the OS and OpenGL ES 2.

I am looking for support for a very specific feature in the GPU. Do any of the SOC GPUs support Vertex Texture Fetch (VTF)?

It seems that PowerVR should support it with GL|ES 2, but I need to be certain that the specific chip and the TI drivers both support it. Also, do you have any
documentation related to memory bandwidth considerations for various GPU workloads?

Thanks!!

regards

Sathish.

  • Sathish,

       The PowerVR documentation does not state specifically that VTF is or is not supported.  However, I did find this one example vertex shader in the SDK that uses a sampler2D which suggests that it should work.  There is an article here that explains how to test that VTF is supported.  I recommend that they try this for themselves.

    http://www.opengl.org/wiki/Vertex_Texture_Fetch

    This example vertex shader is from the PowerVR Graphics SDK at  TrainingCourse\28_DisplacementMap\OGLES2\VertShader.vsh

    attribute highp   vec3  inVertex;
    attribute mediump vec3  inNormal;
    attribute mediump vec2  inTexCoord;

    uniform highp   mat4  MVPMatrix;
    uniform mediump vec3  LightDirection;
    uniform mediump    float  DisplacementFactor;

    varying lowp    float  LightIntensity;
    varying mediump vec2   TexCoord;

    uniform sampler2D  sDisMap;

    void main()
    {
        /*
            Calculate the displacemnt value by taking the colour value from our texture
            and scale it by out displacement factor.
        */
        mediump float disp = texture2D(sDisMap, inTexCoord).r * DisplacementFactor;

        /*
            Transform position by the model-view-projection matrix but first
            move the untransformed position along the normal by our displacement
            value.
        */
        gl_Position = MVPMatrix * vec4(inVertex + (inNormal * disp), 1.0);

        // Pass through texcoords
        TexCoord = inTexCoord;
       
        // Simple diffuse lighting in model space
        LightIntensity = dot(inNormal, -LightDirection);
    }

    Regarding memory bandwidth considerations, I recommend this article that is in the PowerVR SDK as well:

    POWERVR SGX.OpenGL ES 2.0 Application Development Recommendations.1.8f.External.pdf

    Regards, Clay