Pipeline { info = "" , backend = OpenGL33 , textures = [ TextureDescriptor { textureType = Texture2D (IntT RGBA) 1 , textureSize = VV2U (V2 800 600) , textureSemantic = Color , textureSampler = SamplerDescriptor { samplerWrapS = Repeat , samplerWrapT = Just Repeat , samplerWrapR = Nothing , samplerMinFilter = Nearest , samplerMagFilter = Nearest , samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0) , samplerMinLod = Nothing , samplerMaxLod = Nothing , samplerLodBias = 0.0 , samplerCompareFunc = Nothing } , textureBaseLevel = 0 , textureMaxLevel = 0 } ] , samplers = [] , targets = [ RenderTarget { renderTargets = [ TargetItem { targetSemantic = Color , targetRef = Just (TextureImage 0 0 Nothing) } ] } ] , programs = [ Program { programUniforms = fromList [ ( "viewProj" , M44F ) ] , programStreams = fromList [ ( "vi1" , Parameter { name = "position" , ty = V3F } ) , ( "vi2" , Parameter { name = "color" , ty = V4F } ) , ( "vi3" , Parameter { name = "id" , ty = Int } ) ] , programInTextures = fromList [] , programOutput = [ Parameter { name = "f0" , ty = V4I } ] , vertexShader = """ #version 330 core vec4 texture2D(sampler2D s,vec2 uv) { return texture(s,uv); } uniform mat4 viewProj; in vec3 vi1; in vec4 vi2; in int vi3; flat out vec2 vo1; flat out ivec4 vo2; void main() { gl_Position = (viewProj) * (vec4 ((vi1).x,(vi1).y,0.0,1.0)); vo1 = vec2 (0.0,0.0); vo2 = ivec4 (0,0,0,vi3); } """ , geometryShader = Nothing , fragmentShader = """ #version 330 core vec4 texture2D(sampler2D s,vec2 uv) { return texture(s,uv); } flat in vec2 vo1; flat in ivec4 vo2; out ivec4 f0; void main() { f0 = vo2; } """ } ] , slots = [ Slot { slotName = "objects" , slotStreams = fromList [ ( "color" , V4F ) , ( "id" , Int ) , ( "position" , V3F ) ] , slotUniforms = fromList [ ( "viewProj" , M44F ) ] , slotPrimitive = Triangles , slotPrograms = [ 0 ] } ] , streams = [] , commands = [ SetRenderTarget 0 , ClearRenderTarget [ ClearImage { imageSemantic = Color , clearValue = VV4I (V4 0 0 0 0) } ] , SetProgram 0 , SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex) , SetAccumulationContext AccumulationContext { accViewportName = Nothing , accOperations = [ ColorOp NoBlending (VV4B (V4 True True True True)) ] } , RenderSlot 0 ] }