yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
fa61e4c0
main
1#version 450 2 3layout (rgba32f ,binding = 0 )uniform image1D i1D ; 4layout (rgba32f ,binding = 1 )uniform image2D i2D ; 5layout (rgba32f ,binding = 2 )uniform image3D i3D ; 6layout (rgba32f ,binding = 3 )uniform imageCube iCube ; 7layout (rgba32f ,binding = 4 )uniform imageCubeArray iCubeArray ; 8layout (rgba32f ,binding = 5 )uniform image2DRect i2DRect ; 9layout (rgba32f ,binding = 6 )uniform image1DArray i1DArray ; 10layout (rg16 ,binding = 7 )uniform image2DArray i2DArray ; 11layout (rgba32f ,binding = 8 )uniform imageBuffer iBuffer ; 12layout (rgba32f ,binding = 9 )uniform image2DMS i2DMS ; 13layout (rgba32f ,binding = 10 )uniform image2DMSArray i2DMSArray ; 14 15layout (r32i ,binding = 11 )uniform iimage1D ii1D ; 16layout (r32ui ,binding = 12 )uniform uimage2D ui2D ; 17layout (r32i ,binding = 13 )uniform iimage2DMS ii2DMS ; 18layout (r32ui ,binding = 14 )uniform uimage2DMSArray ui2DMSArray ; 19 20flat in int ic1D ; 21flat in ivec2 ic2D ; 22flat in ivec3 ic3D ; 23flat in ivec4 ic4D ; 24 25writeonly layout (binding = 1 )uniform image2D wo2D ; 26 27flat in uint value ; 28 29out vec4 fragData ; 30 31void main () 32{ 33ivec3 iv = ivec3 (0 ); 34iv .x += imageSize (i1D ); 35iv .xy += imageSize (i2D ); 36iv .xyz += imageSize (i3D ); 37iv .xy += imageSize (iCube ); 38iv .xyz += imageSize (iCubeArray ); 39iv .xy += imageSize (i2DRect ); 40iv .xy += imageSize (i1DArray ); 41iv .xyz += imageSize (i2DArray ); 42iv .x += imageSize (iBuffer ); 43iv .xy += imageSize (i2DMS ); 44iv .xyz += imageSize (i2DMSArray ); 45 46iv .x += imageSamples (i2DMS ); 47iv .x += imageSamples (i2DMSArray ); 48 49vec4 v = vec4 (0.0 ); 50v += imageLoad (i1D ,ic1D ); 51imageStore (i1D ,ic1D ,v ); 52v += imageLoad (i2D ,ic2D ); 53imageStore (i2D ,ic2D ,v ); 54v += imageLoad (i3D ,ic3D ); 55imageStore (i3D ,ic3D ,v ); 56v += imageLoad (iCube ,ic3D ); 57imageStore (iCube ,ic3D ,v ); 58v += imageLoad (iCubeArray ,ic3D ); 59imageStore (iCubeArray ,ic3D ,v ); 60v += imageLoad (i2DRect ,ic2D ); 61imageStore (i2DRect ,ic2D ,v ); 62v += imageLoad (i1DArray ,ic2D ); 63imageStore (i1DArray ,ic2D ,v ); 64v += imageLoad (i2DArray ,ic3D ); 65imageStore (i2DArray ,ic3D ,v ); 66v += imageLoad (iBuffer ,ic1D ); 67imageStore (iBuffer ,ic1D ,v ); 68v += imageLoad (i2DMS ,ic2D ,1 ); 69imageStore (i2DMS ,ic2D ,2 ,v ); 70v += imageLoad (i2DMSArray ,ic3D ,3 ); 71imageStore (i2DMSArray ,ic3D ,4 ,v ); 72 73uint ui = 0 ; 74iv .x += imageAtomicAdd (ii1D ,ic1D ,10 ); 75ui += imageAtomicAdd (ui2D ,ic2D ,value ); 76iv .x += imageAtomicMin (ii1D ,ic1D ,11 ); 77ui += imageAtomicMin (ui2D ,ic2D ,value ); 78iv .x += imageAtomicMax (ii1D ,ic1D ,12 ); 79ui += imageAtomicMax (ui2D ,ic2D ,value ); 80iv .x += imageAtomicAnd (ii1D ,ic1D ,13 ); 81ui += imageAtomicAnd (ui2D ,ic2D ,value ); 82iv .x += imageAtomicOr (ii1D ,ic1D ,14 ); 83ui += imageAtomicOr (ui2D ,ic2D ,value ); 84iv .x += imageAtomicXor (ii1D ,ic1D ,15 ); 85ui += imageAtomicXor (ui2D ,ic2D ,value ); 86iv .x += imageAtomicExchange (ii1D ,ic1D ,16 ); 87ui += imageAtomicExchange (ui2D ,ic2D ,value ); 88iv .x += imageAtomicCompSwap (ii1D ,ic1D ,18 ,17 ); 89ui += imageAtomicCompSwap (ui2D ,ic2D ,19u ,value ); 90iv .x += imageAtomicCompSwap (ii2DMS ,ic2D ,2 ,18 ,17 ); 91ui += imageAtomicCompSwap (ui2DMSArray ,ic3D ,3 ,19u ,value ); 92 93imageStore (wo2D ,ic2D ,v ); 94 95fragData = ui != iv .y ?v :vec4 (0.0 ); 96} 97