yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
5398d55e
main
1#version 460 2uniform int uTDInstanceIDOffset ; 3uniform int uTDNumInstances ; 4uniform float uTDAlphaTestVal ; 5#define TD_NUM_COLOR_BUFFERS 1 6#define TD_NUM_LIGHTS 0 7#define TD_NUM_SHADOWED_LIGHTS 0 8#define TD_NUM_ENV_LIGHTS 0 9#define TD_LIGHTS_ARRAY_SIZE 1 10#define TD_ENV_LIGHTS_ARRAY_SIZE 1 11#define TD_NUM_CAMERAS 1 12struct TDLight 13{ 14vec4 position ; 15vec3 direction ; 16vec3 diffuse ; 17vec4 nearFar ; 18vec4 lightSize ; 19vec4 misc ; 20vec4 coneLookupScaleBias ; 21vec4 attenScaleBiasRoll ; 22mat4 shadowMapMatrix ; 23mat4 shadowMapCamMatrix ; 24vec4 shadowMapRes ; 25mat4 projMapMatrix ; 26}; 27struct TDEnvLight 28{ 29vec3 color ; 30mat3 rotate ; 31}; 32layout (std140 )uniform TDLightBlock 33{ 34TDLight uTDLights [TD_LIGHTS_ARRAY_SIZE ]; 35}; 36layout (std140 )uniform TDEnvLightBlock 37{ 38TDEnvLight uTDEnvLights [TD_ENV_LIGHTS_ARRAY_SIZE ]; 39}; 40layout (std430 )readonly restrictbuffer TDEnvLightBuffer 41{ 42vec3 shCoeffs [9 ]; 43}uTDEnvLightBuffers [TD_ENV_LIGHTS_ARRAY_SIZE ]; 44struct TDPhongResult 45{ 46vec3 diffuse ; 47vec3 specular ; 48vec3 specular2 ; 49float shadowStrength ; 50}; 51struct TDPBRResult 52{ 53vec3 diffuse ; 54vec3 specular ; 55float shadowStrength ; 56}; 57struct TDMatrix 58{ 59mat4 world ; 60mat4 worldInverse ; 61mat4 worldCam ; 62mat4 worldCamInverse ; 63mat4 cam ; 64mat4 camInverse ; 65mat4 camProj ; 66mat4 camProjInverse ; 67mat4 proj ; 68mat4 projInverse ; 69mat4 worldCamProj ; 70mat4 worldCamProjInverse ; 71mat4 quadReproject ; 72mat3 worldForNormals ; 73mat3 camForNormals ; 74mat3 worldCamForNormals ; 75}; 76layout (std140 )uniform TDMatricesBlock { 77TDMatrix uTDMats [TD_NUM_CAMERAS ]; 78}; 79struct TDCameraInfo 80{ 81vec4 nearFar ; 82vec4 fog ; 83vec4 fogColor ; 84int renderTOPCameraIndex ; 85}; 86layout (std140 )uniform TDCameraInfoBlock { 87TDCameraInfo uTDCamInfos [TD_NUM_CAMERAS ]; 88}; 89struct TDGeneral 90{ 91vec4 ambientColor ; 92vec4 nearFar ; 93vec4 viewport ; 94vec4 viewportRes ; 95vec4 fog ; 96vec4 fogColor ; 97}; 98layout (std140 )uniform TDGeneralBlock { 99TDGeneral uTDGeneral ; 100}; 101 102layout (binding = 15 )uniform samplerBuffer sTDInstanceT ; 103layout (binding = 16 )uniform samplerBuffer sTDInstanceTexCoord ; 104layout (binding = 17 )uniform samplerBuffer sTDInstanceColor ; 105#define TD_NUM_BONES 0 106vec4 TDWorldToProj (vec4 v ); 107vec4 TDWorldToProj (vec3 v ); 108vec4 TDWorldToProj (vec4 v ,vec3 uv ); 109vec4 TDWorldToProj (vec3 v ,vec3 uv ); 110int TDPickID (); 111int TDInstanceID (); 112int TDCameraIndex (); 113vec3 TDUVUnwrapCoord (); 114vec3 TDInstanceTexCoord (int index ,vec3 t ) { 115vec3 v ; 116int coord = index ; 117vec4 samp = texelFetch (sTDInstanceTexCoord ,coord ); 118v [0 ]= t .s ; 119v [1 ]= t .t ; 120v [2 ]= samp [0 ]; 121t .stp = v .stp ; 122return t ; 123} 124bool TDInstanceActive (int index ) { 125index -= uTDInstanceIDOffset ; 126float v ; 127int coord = index ; 128vec4 samp = texelFetch (sTDInstanceT ,coord ); 129v = samp [0 ]; 130return v != 0.0 ; 131} 132vec3 iTDInstanceTranslate (int index ,out bool instanceActive ) { 133int origIndex = index ; 134index -= uTDInstanceIDOffset ; 135vec3 v ; 136int coord = index ; 137vec4 samp = texelFetch (sTDInstanceT ,coord ); 138v [0 ]= samp [1 ]; 139v [1 ]= samp [2 ]; 140v [2 ]= samp [3 ]; 141instanceActive = samp [0 ]!= 0.0 ; 142return v ; 143} 144vec3 TDInstanceTranslate (int index ) { 145index -= uTDInstanceIDOffset ; 146vec3 v ; 147int coord = index ; 148vec4 samp = texelFetch (sTDInstanceT ,coord ); 149v [0 ]= samp [1 ]; 150v [1 ]= samp [2 ]; 151v [2 ]= samp [3 ]; 152return v ; 153} 154mat3 TDInstanceRotateMat (int index ) { 155index -= uTDInstanceIDOffset ; 156vec3 v = vec3 (0.0 ,0.0 ,0.0 ); 157mat3 m = mat3 (1.0 ); 158{ 159mat3 r ; 160} 161return m ; 162} 163vec3 TDInstanceScale (int index ) { 164index -= uTDInstanceIDOffset ; 165vec3 v = vec3 (1.0 ,1.0 ,1.0 ); 166return v ; 167} 168vec3 TDInstancePivot (int index ) { 169index -= uTDInstanceIDOffset ; 170vec3 v = vec3 (0.0 ,0.0 ,0.0 ); 171return v ; 172} 173vec3 TDInstanceRotTo (int index ) { 174index -= uTDInstanceIDOffset ; 175vec3 v = vec3 (0.0 ,0.0 ,1.0 ); 176return v ; 177} 178vec3 TDInstanceRotUp (int index ) { 179index -= uTDInstanceIDOffset ; 180vec3 v = vec3 (0.0 ,1.0 ,0.0 ); 181return v ; 182} 183mat4 TDInstanceMat (int id ) { 184bool instanceActive = true; 185vec3 t = iTDInstanceTranslate (id ,instanceActive ); 186if (!instanceActive ) 187 { 188return mat4 (0.0 ); 189 } 190mat4 m = mat4 (1.0 ); 191 { 192vec3 tt = t ; 193m [3 ][0 ]+= m [0 ][0 ]* tt .x ; 194m [3 ][1 ]+= m [0 ][1 ]* tt .x ; 195m [3 ][2 ]+= m [0 ][2 ]* tt .x ; 196m [3 ][3 ]+= m [0 ][3 ]* tt .x ; 197m [3 ][0 ]+= m [1 ][0 ]* tt .y ; 198m [3 ][1 ]+= m [1 ][1 ]* tt .y ; 199m [3 ][2 ]+= m [1 ][2 ]* tt .y ; 200m [3 ][3 ]+= m [1 ][3 ]* tt .y ; 201m [3 ][0 ]+= m [2 ][0 ]* tt .z ; 202m [3 ][1 ]+= m [2 ][1 ]* tt .z ; 203m [3 ][2 ]+= m [2 ][2 ]* tt .z ; 204m [3 ][3 ]+= m [2 ][3 ]* tt .z ; 205 } 206return m ; 207} 208mat3 TDInstanceMat3 (int id ) { 209mat3 m = mat3 (1.0 ); 210return m ; 211} 212mat3 TDInstanceMat3ForNorm (int id ) { 213mat3 m = TDInstanceMat3 (id ); 214return m ; 215} 216vec4 TDInstanceColor (int index ,vec4 curColor ) { 217index -= uTDInstanceIDOffset ; 218vec4 v ; 219int coord = index ; 220vec4 samp = texelFetch (sTDInstanceColor ,coord ); 221v [0 ]= samp [0 ]; 222v [1 ]= samp [1 ]; 223v [2 ]= samp [2 ]; 224v [3 ]= 1.0 ; 225curColor [0 ]= v [0 ]; 226; 227curColor [1 ]= v [1 ]; 228; 229curColor [2 ]= v [2 ]; 230; 231return curColor ; 232} 233vec4 TDInstanceDeform (int id ,vec4 pos ) { 234pos = TDInstanceMat (id )* pos ; 235return uTDMats [TDCameraIndex ()].world * pos ; 236} 237 238vec3 TDInstanceDeformVec (int id ,vec3 vec ) 239{ 240mat3 m = TDInstanceMat3 (id ); 241return mat3 (uTDMats [TDCameraIndex ()].world )* (m * vec ); 242} 243vec3 TDInstanceDeformNorm (int id ,vec3 vec ) 244{ 245mat3 m = TDInstanceMat3ForNorm (id ); 246return mat3 (uTDMats [TDCameraIndex ()].worldForNormals )* (m * vec ); 247} 248vec4 TDInstanceDeform (vec4 pos ) { 249return TDInstanceDeform (TDInstanceID (),pos ); 250} 251vec3 TDInstanceDeformVec (vec3 vec ) { 252return TDInstanceDeformVec (TDInstanceID (),vec ); 253} 254vec3 TDInstanceDeformNorm (vec3 vec ) { 255return TDInstanceDeformNorm (TDInstanceID (),vec ); 256} 257bool TDInstanceActive () {return TDInstanceActive (TDInstanceID ()); } 258vec3 TDInstanceTranslate () {return TDInstanceTranslate (TDInstanceID ()); } 259mat3 TDInstanceRotateMat () {return TDInstanceRotateMat (TDInstanceID ()); } 260vec3 TDInstanceScale () {return TDInstanceScale (TDInstanceID ()); } 261mat4 TDInstanceMat () {return TDInstanceMat (TDInstanceID ()); 262 } 263mat3 TDInstanceMat3 () {return TDInstanceMat3 (TDInstanceID ()); 264} 265vec3 TDInstanceTexCoord (vec3 t ) { 266return TDInstanceTexCoord (TDInstanceID (),t ); 267} 268vec4 TDInstanceColor (vec4 curColor ) { 269return TDInstanceColor (TDInstanceID (),curColor ); 270} 271vec4 TDSkinnedDeform (vec4 pos ) {return pos ; } 272 273vec3 TDSkinnedDeformVec (vec3 vec ) {return vec ; } 274 275vec3 TDFastDeformTangent (vec3 oldNorm ,vec4 oldTangent ,vec3 deformedNorm ) 276{return oldTangent .xyz ; } 277mat4 TDBoneMat (int index ) { 278return mat4 (1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,1 ); 279} 280vec4 TDDeform (vec4 pos ) { 281pos = TDSkinnedDeform (pos ); 282pos = TDInstanceDeform (pos ); 283return pos ; 284} 285 286vec4 TDDeform (int instanceID ,vec3 p ) { 287vec4 pos = vec4 (p ,1.0 ); 288pos = TDSkinnedDeform (pos ); 289pos = TDInstanceDeform (instanceID ,pos ); 290return pos ; 291} 292 293vec4 TDDeform (vec3 pos ) { 294return TDDeform (TDInstanceID (),pos ); 295} 296 297vec3 TDDeformVec (int instanceID ,vec3 vec ) { 298vec = TDSkinnedDeformVec (vec ); 299vec = TDInstanceDeformVec (instanceID ,vec ); 300return vec ; 301} 302 303vec3 TDDeformVec (vec3 vec ) { 304return TDDeformVec (TDInstanceID (),vec ); 305} 306 307vec3 TDDeformNorm (int instanceID ,vec3 vec ) { 308vec = TDSkinnedDeformVec (vec ); 309vec = TDInstanceDeformNorm (instanceID ,vec ); 310return vec ; 311} 312 313vec3 TDDeformNorm (vec3 vec ) { 314return TDDeformNorm (TDInstanceID (),vec ); 315} 316 317vec3 TDSkinnedDeformNorm (vec3 vec ) { 318vec = TDSkinnedDeformVec (vec ); 319return vec ; 320}