ARB_VERTEX/FRAGMENT_PROGRAM vs. GLSLANG

Hi,

I’m new here and I’m new to OpenGL shaders although I’ve messed around with shaders in DX8 and 9.
I was wondering is there anything that can be done with GLSLANG that can’t be done with ARB_VERTEX_PROGRAM and ARB_FRAGMENT_PROGRAM? More specifically how do ARB_VERTEX_PROGRAM and ARB_FRAGMENT_PROGRAM compare to vs3.0 and ps3.0 respectively and is there an assembly language alternative to GLSLANG?

I’m not particularly fond of C-like syntax, especially when used from a language like Lisp or Scheme so I wouldn’t mind writing a little shader compiler with a more Lisp like syntax and I’d prefer to translate the code to some form of assembly rather then GLSLANG and at the same time I want to support all the latest features.

ARB_vertex_program ~ ps1.1
ARB_fragment_program ~ ps2.0

If you want to use features not found in these “psudo-asm” interfaces you have two options:

  1. Use the Nvidia extensions (NV_vertex/fragment_program(2/3)) This is obviously non-portable - but if you are only targeting fixed hardware it may be an option. These interfaces expose full shader 3.0 asm type interface.

  2. Use GLSL. It would be relatively easy to "emulate " the ASM interfaces in GLSL.
    (ie. include a shader “header” file that had function definitions and #defines of the ASM operations - might have to be a bit creative) However, the GLSL route is the only vendor independant way to access Shader 3.0 type functionality (like loops/vertex textures)

This is a touchy subject here and there are many debates over “psudo-ASM” vs High-Level interfaces…

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.