AnsweredAssumed Answered

Disappointing OpenGL/GLSL Performance for VR Volume Renderer compared to NVIDIA

Question asked by mede on Jan 25, 2018

Hey AMD/ATI users

We are working on a heavy GPU based Virtual Reality application doing Volume Raytracing on medical dataset.

I recently both a new macbook because I was hoping to get more power with a 4 years newer computer.

 

Sadly nearly all shaders are performing SLOWER compared to the old Nvidia hardware  (GPU Radeon Pro 560 vs NVidia GT 750M).

As we do volume raytracing we are using sampler3D including sampler3D arrays which is just one problem:

 

The access to a sampler3d array is not directly possible on AMD hardware. So far I fixed this with a switch statement which is much

slower compared to the direct access possible on nvidia. Is there any better solution on AMD ?

uniform sampler3D uTransmittance[8];
vec4 getTransmittance(int index, vec3 pos) {
#ifdef AMD
    switch(index) {
        case 0: return texture(uTransmittance[0], pos);
        case 1: return texture(uTransmittance[1], pos);
        case 2: return texture(uTransmittance[2], pos);
        case 3: return texture(uTransmittance[3], pos);
        case 4: return texture(uTransmittance[4], pos);
        case 5: return texture(uTransmittance[5], pos);
        case 6: return texture(uTransmittance[6], pos);
        case 7: return texture(uTransmittance[7], pos);
    }
#else
    return texture(uTransmittance[index], pos);
#endif
}

 

Also the "normal" OpenGL shaders rendering a simple 3D scene are mostly all slower. Will try to find out more about this.

As conclusion I can confirm the misgiving that the new macbook pro's delivered with amd instead nvidia GPU could lead to problems with opengl based applications ;(

Outcomes