here is the dump of the shader programs being input.
There is a Vertex, Geometry, and Fragment shader.
The additional information is added by my shader pre-processor.
Does anyone see anything obvious that I missed ?
//////////////////////////////////
#version 460 core
/*002*/ /// shaderdep<0x564406cd5ac0:vs_streak_stereo> emit
/*003*/ /// shaderdep col<0x7ffd436901b8> adding child<0,0x564407362580,vface_streak_stereo>
/*004*/ /// begin shaderdeps<0x564406cd5ac0>
/*005*/ /// shaderdeps<0x564406cd5ac0> uniblocks
/*006*/ /// shaderdeps<0x564406cd5ac0> unisets
/*007*/ /// shaderdeps<0x564406cd5ac0> interfaces
/*008*/ in vec4 position ;
/*009*/ in vec3 normal ;
/*010*/ in vec3 velocity ;
/*011*/ in vec2 lw ;
/*012*/ in vec2 ra ;
/*013*/ out vec3 geo_pos[1];
/*014*/ out vec3 geo_cnrm[1];
/*015*/ out vec3 geo_vel[1];
/*016*/ out vec2 geo_lw[1];
/*017*/ out vec2 geo_ra[1];
/*018*/ /// shaderdeps<0x564406cd5ac0> libblocks
/*019*/ /// end shaderdeps<0x564406cd5ac0>
/*020*/ ///////////////////////////////////////////////////////////////////
/*021*/ void vs_streak_stereo(){
/*022*/ geo_pos[0] = position . xyz ;
/*023*/ geo_cnrm[0] = normal ;
/*024*/ geo_vel[0] = velocity ;
/*025*/ geo_lw[0] = lw ;
/*026*/ geo_ra[0] = ra ;
/*027*/ }
void main() { vs_streak_stereo(); }
//////////////////////////////////
//////////////////////////////////
#version 460 core
/*002*/ #extension GL_NV_stereo_view_rendering : enable
/*003*/ #extension GL_NV_viewport_array2 : enable
/*004*/ /// shaderdep<0x564406758b30:gs_streak_stereo> emit
/*005*/ /// shaderdep col<0x7ffd43690108> adding child<0,0x564405dcb450,lib_streak_types>
/*006*/ /// shaderdep col<0x7ffd43690108> adding child<1,0x56440633f7c0,lib_streak_stereo>
/*007*/ /// shaderdep col<0x7ffd43690248> adding child<0,0x564404cfa110,uset_geo_stereo>
/*008*/ /// shaderdep col<0x7ffd436901a8> adding child<0,0x564406d114a0,gface_base>
/*009*/ /// shaderdep col<0x7ffd436901a8> adding child<1,0x564406063410,gface_streak_stereo>
/*010*/ /// begin shaderdeps<0x564406758b30>
/*011*/ /// shaderdeps<0x564406758b30> uniblocks
/*012*/ /// shaderdeps<0x564406758b30> unisets
/*013*/ /// begin uniformset<0x564404cfa110>
/*014*/ uniform mat4 MatMVPL;
/*015*/ uniform mat4 MatMVPR;
/*016*/ /// end uniformset<0x564404cfa110>
/*017*/ /// shaderdeps<0x564406758b30> interfaces
/*018*/ layout ( points ) in; // SIF<0x564406d114a0>
/*019*/ layout ( triangle_strip , max_vertices = 4 ) out; // SIF<0x564406d114a0>
/*020*/ in vec3 geo_pos[];
/*021*/ in vec3 geo_cnrm[];
/*022*/ in vec3 geo_vel[];
/*023*/ in vec2 geo_lw[];
/*024*/ in vec2 geo_ra[];
/*025*/ out vec4 frg_clr ;
/*026*/ out vec2 frg_uv0 ;
/*027*/ out vec2 frg_uv1 ;
/*028*/ layout ( secondary_view_offset = 1 ) out int gl_Layer ;
/*029*/ /// shaderdeps<0x564406758b30> libblocks
/*030*/ // begin libblock<lib_streak_types> ///////////////////////////////////
/*031*/ struct StreakOutput {
/*032*/ vec4 pos0;
/*033*/ vec4 pos1;
/*034*/ vec4 pos2;
/*035*/ vec4 pos3;
/*036*/ };
/*037*/ // end libblock<lib_streak_types> ///////////////////////////////////
/*038*/ // begin libblock<lib_streak_stereo> ///////////////////////////////////
/*039*/ StreakOutput computeStreakStereo(
/*040*/ mat4 mvp)
/*041*/ {
/*042*/ vec3 pos = geo_pos[0] . xyz ;
/*043*/ vec3 vel = geo_vel[0] . xyz ;
/*044*/ vec3 cnrm = geo_cnrm[0] . xyz ;
/*045*/ float wid = geo_lw[0] . y ;
/*046*/ float len = geo_lw[0] . x ;
/*047*/ vec3 lpos = pos - vel * len ;
/*048*/ vec3 crs = wid * normalize ( cross ( vel , cnrm ) ) ;
/*049*/ vec3 p0 = pos + crs ;
/*050*/ vec3 p1 = pos - crs ;
/*051*/ vec3 p2 = lpos - crs ;
/*052*/ vec3 p3 = lpos + crs ;
/*053*/ StreakOutput outp ;
/*054*/ outp . pos0 = mvp * vec4 ( p0 , 1.0 ) ;
/*055*/ outp . pos1 = mvp * vec4 ( p1 , 1.0 ) ;
/*056*/ outp . pos2 = mvp * vec4 ( p2 , 1.0 ) ;
/*057*/ outp . pos3 = mvp * vec4 ( p3 , 1.0 ) ;
/*058*/ return outp ;
/*059*/ }
/*060*/ // end libblock<lib_streak_stereo> ///////////////////////////////////
/*061*/ /// end shaderdeps<0x564406758b30>
/*062*/ ///////////////////////////////////////////////////////////////////
/*063*/ void gs_streak_stereo(){
/*064*/ gl_Layer = 0 ;
/*065*/ gl_ViewportMask[0] = 1 ;
/*066*/ gl_SecondaryViewportMaskNV[0] = 2 ;
/*067*/ StreakOutput outL = computeStreakStereo ( MatMVPL ) ;
/*068*/ StreakOutput outR = computeStreakStereo ( MatMVPR ) ;
/*069*/ frg_uv1 = geo_ra[0] ;
/*070*/ frg_clr = vec4 ( 0 , 0 , 0 , 0 ) ;
/*071*/ gl_Position = outL . pos0 ;
/*072*/ gl_SecondaryPositionNV = outR . pos0 ;
/*073*/ frg_uv0 = vec2 ( 0 , 0 ) ;
/*074*/ EmitVertex ( ) ;
/*075*/ gl_Position = outL . pos1 ;
/*076*/ gl_SecondaryPositionNV = outR . pos1 ;
/*077*/ frg_uv0 = vec2 ( 1 , 0 ) ;
/*078*/ EmitVertex ( ) ;
/*079*/ gl_Position = outL . pos3 ;
/*080*/ gl_SecondaryPositionNV = outR . pos3 ;
/*081*/ frg_uv0 = vec2 ( 0 , 1 ) ;
/*082*/ EmitVertex ( ) ;
/*083*/ gl_Position = outL . pos2 ;
/*084*/ gl_SecondaryPositionNV = outR . pos2 ;
/*085*/ frg_uv0 = vec2 ( 1 , 1 ) ;
/*086*/ EmitVertex ( ) ;
/*087*/ EndPrimitive ( ) ;
/*088*/ }
void main() { gs_streak_stereo(); }
//////////////////////////////////
//////////////////////////////////
#version 460 core
/*002*/ /// shaderdep<0x564406cfe8b0:ps_flat_stereo> emit
/*003*/ /// shaderdep col<0x7ffd43690258> adding child<0,0x564404fbce90,uset_frg>
/*004*/ /// shaderdep col<0x7ffd436901b8> adding child<0,0x564406cdd4b0,fface_psys_stereo>
/*005*/ /// begin shaderdeps<0x564406cfe8b0>
/*006*/ /// shaderdeps<0x564406cfe8b0> uniblocks
/*007*/ /// shaderdeps<0x564406cfe8b0> unisets
/*008*/ /// begin uniformset<0x564404fbce90>
/*009*/ uniform vec4 modcolor;
/*010*/ uniform vec4 User0;
/*011*/ uniform sampler2D ColorMap;
/*012*/ uniform sampler2D GradientMap;
/*013*/ uniform sampler3D VolumeMap;
/*014*/ /// end uniformset<0x564404fbce90>
/*015*/ /// shaderdeps<0x564406cfe8b0> interfaces
/*016*/ in vec4 frg_clr ;
/*017*/ in vec2 frg_uv0 ;
/*018*/ in vec2 frg_uv1 ;
/*019*/ layout ( location = 0 ) out vec4 out_clr ;
/*020*/ /// shaderdeps<0x564406cfe8b0> libblocks
/*021*/ /// end shaderdeps<0x564406cfe8b0>
/*022*/ ///////////////////////////////////////////////////////////////////
/*023*/ void ps_flat_stereo(){
/*024*/ float unit_age = frg_uv1 . x ;
/*025*/ vec3 C = modcolor . xyz * ( 1.0 - unit_age ) ;
/*026*/ out_clr = vec4 ( C , modcolor . w ) ;
/*027*/ }
void main() { ps_flat_stereo(); }
//////////////////////////////////
//////////////////////////////////
program VTG InfoLog<Link info
---------
error: "geo_cnrm" not declared as input from previous stage
>
//////////////////////////////////
OK I have it linked - it was the incorrect usage of arrays in the vertex shader.
Now it does not function correctly, however.
There are nans at the GS output
Update (Linked) version of shader
//////////////////////////////////
#version 460 core
/*002*/ #extension GL_NV_stereo_view_rendering : enable
/*003*/ #extension GL_NV_viewport_array2 : enable
/*004*/ /// shaderdep<0x561261c3ea40:vs_streak_stereo> emit
/*005*/ /// shaderdep col<0x7fffc6e06ea8> adding child<0,0x56126a54afa0,vface_streak_stereo>
/*006*/ /// begin shaderdeps<0x561261c3ea40>
/*007*/ /// shaderdeps<0x561261c3ea40> uniblocks
/*008*/ /// shaderdeps<0x561261c3ea40> unisets
/*009*/ /// shaderdeps<0x561261c3ea40> interfaces
/*010*/ in vec4 position ;
/*011*/ in vec3 normal ;
/*012*/ in vec3 velocity ;
/*013*/ in vec2 lw ;
/*014*/ in vec2 ra ;
/*015*/ out vec3 geo_pos ;
/*016*/ out vec3 geo_cnrm ;
/*017*/ out vec3 geo_vel ;
/*018*/ out vec2 geo_lw ;
/*019*/ out vec2 geo_ra ;
/*020*/ /// shaderdeps<0x561261c3ea40> libblocks
/*021*/ /// end shaderdeps<0x561261c3ea40>
/*022*/ ///////////////////////////////////////////////////////////////////
/*023*/ void vs_streak_stereo(){
/*024*/ geo_pos = position . xyz ;
/*025*/ geo_cnrm = normal ;
/*026*/ geo_vel = velocity ;
/*027*/ geo_lw = lw ;
/*028*/ geo_ra = ra ;
/*029*/ }
void main() { vs_streak_stereo(); }
//////////////////////////////////
//////////////////////////////////
#version 460 core
/*002*/ #extension GL_NV_stereo_view_rendering : enable
/*003*/ #extension GL_NV_viewport_array2 : enable
/*004*/ /// shaderdep<0x561266797ab0:gs_streak_stereo> emit
/*005*/ /// shaderdep col<0x7fffc6e06df8> adding child<0,0x561265d70a70,lib_streak_types>
/*006*/ /// shaderdep col<0x7fffc6e06df8> adding child<1,0x56126a515ca0,lib_streak_stereo>
/*007*/ /// shaderdep col<0x7fffc6e06f38> adding child<0,0x561264ebe330,uset_geo_stereo>
/*008*/ /// shaderdep col<0x7fffc6e06e98> adding child<0,0x561264e869a0,gface_base>
/*009*/ /// shaderdep col<0x7fffc6e06e98> adding child<1,0x561265d8b820,gface_streak_stereo>
/*010*/ /// begin shaderdeps<0x561266797ab0>
/*011*/ /// shaderdeps<0x561266797ab0> uniblocks
/*012*/ /// shaderdeps<0x561266797ab0> unisets
/*013*/ /// begin uniformset<0x561264ebe330>
/*014*/ uniform mat4 MatMVPL;
/*015*/ uniform mat4 MatMVPR;
/*016*/ /// end uniformset<0x561264ebe330>
/*017*/ /// shaderdeps<0x561266797ab0> interfaces
/*018*/ layout ( points ) in; // SIF<0x561264e869a0>
/*019*/ layout ( triangle_strip , max_vertices = 4 ) out; // SIF<0x561264e869a0>
/*020*/ in vec3 geo_pos[];
/*021*/ in vec3 geo_cnrm[];
/*022*/ in vec3 geo_vel[];
/*023*/ in vec2 geo_lw[];
/*024*/ in vec2 geo_ra[];
/*025*/ out vec4 frg_clr ;
/*026*/ out vec2 frg_uv0 ;
/*027*/ out vec2 frg_uv1 ;
/*028*/ out int gl_ViewportMask[];
/*029*/ out int gl_SecondaryViewportMaskNV[];
/*030*/ /// shaderdeps<0x561266797ab0> libblocks
/*031*/ // begin libblock<lib_streak_types> ///////////////////////////////////
/*032*/ struct StreakInput {
/*033*/ vec3 pos;
/*034*/ vec3 vel;
/*035*/ vec3 cnrm;
/*036*/ vec2 lw;
/*037*/ };
/*038*/ struct StreakOutput {
/*039*/ vec4 pos0;
/*040*/ vec4 pos1;
/*041*/ vec4 pos2;
/*042*/ vec4 pos3;
/*043*/ };
/*044*/ // end libblock<lib_streak_types> ///////////////////////////////////
/*045*/ // begin libblock<lib_streak_stereo> ///////////////////////////////////
/*046*/ StreakOutput computeStreakStereo(
/*047*/ mat4 mvp,
/*048*/ StreakInput inp)
/*049*/ {
/*050*/ vec3 pos = inp . pos . xyz ;
/*051*/ vec3 vel = inp . vel . xyz ;
/*052*/ vec3 cnrm = inp . cnrm . xyz ;
/*053*/ float wid = inp . lw . y ;
/*054*/ float len = inp . lw . x ;
/*055*/ vec3 lpos = pos - vel * len ;
/*056*/ vec3 crs = wid * normalize ( cross ( vel , cnrm ) ) ;
/*057*/ vec3 p0 = pos + crs ;
/*058*/ vec3 p1 = pos - crs ;
/*059*/ vec3 p2 = lpos - crs ;
/*060*/ vec3 p3 = lpos + crs ;
/*061*/ StreakOutput outp ;
/*062*/ outp . pos0 = mvp * vec4 ( p0 , 1.0 ) ;
/*063*/ outp . pos1 = mvp * vec4 ( p1 , 1.0 ) ;
/*064*/ outp . pos2 = mvp * vec4 ( p2 , 1.0 ) ;
/*065*/ outp . pos3 = mvp * vec4 ( p3 , 1.0 ) ;
/*066*/ return outp ;
/*067*/ }
/*068*/ // end libblock<lib_streak_stereo> ///////////////////////////////////
/*069*/ /// end shaderdeps<0x561266797ab0>
/*070*/ ///////////////////////////////////////////////////////////////////
/*071*/ void gs_streak_stereo(){
/*072*/ StreakInput inp ;
/*073*/ inp . pos = geo_pos[0] . xyz ;
/*074*/ inp . vel = geo_vel[0] . xyz ;
/*075*/ inp . cnrm = geo_cnrm[0] . xyz ;
/*076*/ inp . lw = geo_lw[0] . xy ;
/*077*/ frg_uv1 = geo_ra[0] ;
/*078*/ frg_clr = vec4 ( 0 , 0 , 0 , 0 ) ;
/*079*/ StreakOutput outL = computeStreakStereo ( MatMVPL , inp ) ;
/*080*/ gl_ViewportMask[0] = 1 ;
/*081*/ gl_SecondaryViewportMaskNV[0] = 0 ;
/*082*/ gl_Position = outL . pos0 ;
/*083*/ frg_uv0 = vec2 ( 0 , 0 ) ;
/*084*/ EmitVertex ( ) ;
/*085*/ gl_Position = outL . pos1 ;
/*086*/ frg_uv0 = vec2 ( 1 , 0 ) ;
/*087*/ EmitVertex ( ) ;
/*088*/ gl_Position = outL . pos3 ;
/*089*/ frg_uv0 = vec2 ( 0 , 1 ) ;
/*090*/ EmitVertex ( ) ;
/*091*/ gl_Position = outL . pos2 ;
/*092*/ frg_uv0 = vec2 ( 1 , 1 ) ;
/*093*/ EmitVertex ( ) ;
/*094*/ StreakOutput outR = computeStreakStereo ( MatMVPR , inp ) ;
/*095*/ gl_ViewportMask[0] = 0 ;
/*096*/ gl_SecondaryViewportMaskNV[0] = 1 ;
/*097*/ gl_Position = outR . pos0 ;
/*098*/ frg_uv0 = vec2 ( 0 , 0 ) ;
/*099*/ EmitVertex ( ) ;
/*100*/ gl_Position = outR . pos1 ;
/*101*/ frg_uv0 = vec2 ( 1 , 0 ) ;
/*102*/ EmitVertex ( ) ;
/*103*/ gl_Position = outR . pos3 ;
/*104*/ frg_uv0 = vec2 ( 0 , 1 ) ;
/*105*/ EmitVertex ( ) ;
/*106*/ gl_Position = outR . pos2 ;
/*107*/ frg_uv0 = vec2 ( 1 , 1 ) ;
/*108*/ EmitVertex ( ) ;
/*109*/ EndPrimitive ( ) ;
/*110*/ }
void main() { gs_streak_stereo(); }
//////////////////////////////////
//////////////////////////////////
#version 460 core
/*002*/ /// shaderdep<0x561268cd8ad0:ps_flat_stereo> emit
/*003*/ /// shaderdep col<0x7fffc6e06f48> adding child<0,0x56126a5329d0,uset_frg>
/*004*/ /// shaderdep col<0x7fffc6e06ea8> adding child<0,0x5612673110a0,fface_psys_stereo>
/*005*/ /// begin shaderdeps<0x561268cd8ad0>
/*006*/ /// shaderdeps<0x561268cd8ad0> uniblocks
/*007*/ /// shaderdeps<0x561268cd8ad0> unisets
/*008*/ /// begin uniformset<0x56126a5329d0>
/*009*/ uniform vec4 modcolor;
/*010*/ uniform vec4 User0;
/*011*/ uniform sampler2D ColorMap;
/*012*/ uniform sampler2D GradientMap;
/*013*/ uniform sampler3D VolumeMap;
/*014*/ /// end uniformset<0x56126a5329d0>
/*015*/ /// shaderdeps<0x561268cd8ad0> interfaces
/*016*/ in vec4 frg_clr ;
/*017*/ in vec2 frg_uv0 ;
/*018*/ in vec2 frg_uv1 ;
/*019*/ layout ( location = 0 ) out vec4 out_clr ;
/*020*/ /// shaderdeps<0x561268cd8ad0> libblocks
/*021*/ /// end shaderdeps<0x561268cd8ad0>
/*022*/ ///////////////////////////////////////////////////////////////////
/*023*/ void ps_flat_stereo(){
/*024*/ float unit_age = frg_uv1 . x ;
/*025*/ vec3 C = modcolor . xyz * ( 1.0 - unit_age ) ;
/*026*/ out_clr = vec4 ( C , modcolor . w ) ;
/*027*/ }
void main() { ps_flat_stereo(); }
//////////////////////////////////
//////////////////////////////////
program VTG InfoLog<>
//////////////////////////////////
The listed warnings at the bottom of renderdoc are performance warnings and infos. nothing seems to be related to the shader itself. I also tried in nvidia gfx-debugger - but it did not seem to know anything different about the situtation.