!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ T?@AaThis context is used to select which types can be used in a frame buffers color buffer, and also $ to restrict the type of a texture. B  CD  EFA CPU format for 1 component GHIJKLMNO=A CPU format for 2 components (i.e. a LuminanceAlpha color). PQ2A CPU format for 3 components (i.e. a RGB color). RSTUVW3A CPU format for 4 components (i.e. a RGBA color). XYZ[\]^_`a)A GPU format for a stencil buffer value.  This is the associated type in C: CPUFormat StencilFormat F bc'A GPU format for a depth buffer value.  This is the associated type in C: CPUFormat DepthFormat F defgPA GPU format with color components for red, green and blue, and an alpha value. # These are the associated types in C and A: CPUFormat RGBAFormat W Color RGBAFormat a RGBA (= a) a hijklmnop<A GPU format with color components for red, green and blue. # These are the associated types in C and A: CPUFormat RGBFormat Q Color RGBFormat a RGB (= a) qrstuvwxy?A GPU format with a single color component and an alpha value. # These are the associated types in C and A: CPUFormat LuminanceAlphaFormat O Color LuminanceAlphaFormat a LuminanceAlpha a a z{|}~,A GPU format with a single color component. # These are the associated types in C and A: CPUFormat LuminanceFormat F Color LuminanceFormat a  Luminance a 'A GPU format with only an alpha value. # These are the associated types in C and A: CPUFormat AlphaFormat F Color AlphaFormat a Alpha a X?@AB  CD  EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~S?@AB  B  CD  D  EFNMLKJIHGGHIJKLMNOPPQVUTSRRSTUVW `_^]\[ZYXXYZ[\]^_`abbcfeddefgonmlkjihhijklmnopxwvutsrqqrstuvwxy~}|{zz{|}~G !"# Edge mode used in sampler state "Filter mode used in sampler state 0A structure describing how a texture is sampled $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS?T$%&'()*+,-./0123456789:;<=>?BCEFGHIKLMOPQUVRWSXY9$('&%%&'(),+**+,-.210//0123456:987789:;<==>??BCEFGHIKLMOPQRSR?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~My~}|{zpxwvutsrqgonmlkjihcfedabCDAB@?W`_^]\[ZYXQVUTSROPFNMLKJIHGE G^Provides a common way to convert numeric types to integer and floating point representations. $Convert to a floating point number. >Convert to an integral number, using truncation if necessary. AThis class provides the GPU functions either not found in Prelude'.s numerical classes, or that has wrong types. * Instances are also provided for normal Zs and [s.  Minimal complete definition:  and . LAn opaque type constructor for atomic values in a fragment on the GPU, e.g.  Z. \]JAn opaque type constructor for atomic values in a vertex on the GPU, e.g.  Z. ^_`abcdefhDenotes a type on the GPU, that can be moved there from the CPU (through the internal use of uniforms). @ Use the existing instances of this class to create new ones. The type on the CPU. *Converts a value from the CPU to the GPU. ghijFThe derivative in x using local differencing of the rasterized value. FThe derivative in y using local differencing of the rasterized value. `The sum of the absolute derivative in x and y using local differencing of the rasterized value. klmnopqrstuvwxyz{|}~(previous, current) 84ghij ghijS:;<=>;:<=> FA stream of fragments on the GPU, parameterized on the fragments type  (built up of atoms of type ). jA stream of primitives built by vertices on the GPU. The first parameter is the primitive type (currently ,  or ) and the second the  the type of each primitives' vertices'! type (built up of atoms of type ). FFilters out fragments in a stream where the provided function returns .  <The context of types that can be converted into vertices in s. ] Create your own instances in terms of the existing ones, e.g. convert your vertex data to Zs,  turn them into  Zs with ; and then convert them to your vertex data representation. 3Turns an ordinary value into a vertex value in the . monad. The following rule must be satisfied:   toVertex undefined >> a = a ?This ensures that its definition always use the same series of + calls to convert values of the same type.  This unfortunatly rules out ordinary lists (but instances for fixed length lists from the Vec package are however provided). 9A monad in which CPU data gets converted to vertex data.  Use  in the existing instances of  to operate in this monad. Converts a list of values to a , using a specified  type. E This function is lazy in the aspect that if parts of the values aren't used on the GPU, they won't / get evaluated and transferred there either. The primitive type. EA list of vertices, with the layout specified by the primitive type. The resulting . Converts a list of values to a , using a specified  type and an index list. i This will use index buffer objects on the GPU, and is recommended if several primitives share vertices. E This function is lazy in the aspect that if parts of the values aren't used on the GPU, they won't / get evaluated and transferred there either. The primitive type. A list of vertices. YA list of indexes into the vertex list, with the layout specified by the primitive type. The resulting .  =The context of types that can be rasterized from vertices in s to fragments in s. ] Create your own instances in terms of the existing ones, e.g. convert your vertex data to  Zs,  turn them into  Zs with = and then convert them to your fragment data representation. The corresponding type in the  after rasterization. 2Turns a vertex value into a fragment value in the  monad. >A monad in which vertex data gets converted to fragment data.  Use  in the existing instances of  to operate in this monad. xRasterize front side of all types of primitives with vertices containing canonical view coordinates into fragments. fThe primitive stream with vertices containing canonical view coordinates and data to be interpolated. QThe resulting fragment stream with fragments containing the interpolated values. Rasterize both sides of triangles with vertices containing canonical view coordinates into fragments, also returning the primitives side in the fragments. fThe primitive stream with vertices containing canonical view coordinates and data to be interpolated. The resulting fragment stream with fragments containing a bool saying if the primitive was front facing and the interpolated values. iRasterize back side of triangles with vertices containing canonical view coordinates into fragments. fThe primitive stream with vertices containing canonical view coordinates and data to be interpolated. QThe resulting fragment stream with fragments containing the interpolated values.  .nA polymorphic frame buffer. It is parameterized on the type of color buffer, depth buffer and stencil buffer.  Any instances of A" can be used for color buffer, or '()' to denote no color buffer.  For depth and stencil buffers, c and ba& marks the existance of buffer, while '()'  marks the inexistance. ;Sets a test that should be performed on the stencil value. !The function used to compare the stencilReference% and the stencil buffers value with. ,The value to compare with the stencil buffer' s value. aA bit mask with ones in each position that should be compared and written to the stencil buffer. Sets the tests that should be performed on the stencil value, first for front facing triangles and other primitives, then for back facing triangles. 4Sets the operations that should be performed on the s stencil value 5Used for front faced triangles and other primitives. Used for back faced triangles. 1Sets how the painted colors are blended with the s previous value. Use a +2 to combine the fragment with the previous value. HUse blending equations to combine the fragment with the previous value.  The first * and  :s is used for front faced triangles and other primitives, * and the second for back faced triangles. ?The painted fragment completely overwrites the previous value. )The function used to compare the fragment'*s depth and the depth buffers depth with. 1 if the depth component should be written to the . 8 for each color component that should be written to the . ^Returns the byte size needed to store a certain format and size of a framebuffer. Use this to  allocate memory before using ,  or . The format to store data to "The size to give the frame buffer The size in bytes of the data Saves a s color buffer to main memory. The format to store data to "The size to give the frame buffer #A frame buffer with a color buffer 5A pointer to the memory where the data will be saved Saves a s depth buffer to main memory. The format to store data to "The size to give the frame buffer #A frame buffer with a depth buffer 5A pointer to the memory where the data will be saved Saves a !s stencil buffer to main memory. The format to store data to "The size to give the frame buffer %A frame buffer with a stencil buffer 5A pointer to the memory where the data will be saved xCretes and shows a new GPipe window. Use the last parameter to add extra GLUT callbacks to the window. Note that you can't register your own  and . The window title The window position The window size XThis function is evaluated every time the window needs to be redrawn, and the resulting O will be drawn in the window. The parameter is the current size of the window. :Extra optional initialization of the window. The provided + should not be used outside this function. f  !"#$%&'()*+,-./0123456789,e  !"#$%&'()*+,-./0123456789e*0/.-,+  )('&%$#"! 198765432CThe textures that is instances of this class may be created from a s depth buffer. ] The texture will have the type of a color format and is sampled as such, but contains depth # component information internally. 3Create a texture of a specific depth format from a  and a size. CThe textures that is instances of this class may be created from a s color buffer. -Create a texture of a specific format from a  and a size. ]The formats that is instances of this class may be used as depth textures, i.e. created with  ,  and  . TThe color format of the texture, affects the type of the samples from the texture. 5The type that is used for the dimension of texture. The sample coordinate in s. The sample coordinate in s. bCalculates the byte size of all mipmaps for a specific format and size, which eases the useage of   and . 'Samples the texture using mipmaps in a . 'Samples the texture using mipmaps in a +, with a bias to add to the mipmap level. 1Samples the texture using a specific mipmap in a . bA cube texture. The sides of the cube are always specified in this order: Positive X, negative X, 1 positive Y, negative Y, positive Z, negative Z.   f+ has the following associated types in its  instance: TextureFormat (TextureCube f) f TextureSize (TextureCube f) <  (The size of each side) "TextureVertexCoord (TextureCube f) = ( Z) $TextureFragmentCoord (TextureCube f) = ( Z) IA 1D texture. Assumes a frame buffer of height 1 when created from such.   f+ has the following associated types in its  instance: TextureFormat (Texture1D f) f TextureSize (Texture1D f)   TextureVertexCoord (Texture1D f)  Z "TextureFragmentCoord (Texture1D f)  Z A 2D texture.   f+ has the following associated types in its  instance: TextureFormat (Texture2D f) f TextureSize (Texture2D f) <   TextureVertexCoord (Texture2D f) < ( Z) "TextureFragmentCoord (Texture2D f) < ( Z) =A 3D texture. May only be created from main memory in GPipe.   f+ has the following associated types in its  instance: TextureFormat (Texture3D f) f TextureSize (Texture3D f) =   TextureVertexCoord (Texture3D f) = ( Z) "TextureFragmentCoord (Texture3D f) = ( Z) bCreates a texture from color data in main memory. It lives in the IO monad for the sake of the Ptr',s, and could otherwise safely be wrapped in unsafePerformIO calls. *The format of the data in the provided Ptr's. 0The format of the resulting texture on the GPU. The dimension of the texture.  A list of Ptr'Hs for each mipmap of the texture (you may provide as many as you want).  For H, this list starts with all mipmaps of the first side, then the mipmaps Z of the second, and so on. In this case all sides must have the same number of mipmaps. d All rows and depth levels are tightly packed, i.e. no padding between them and 1 byte alignment. Creates a depth texture from data in main memory. The texture will have the type of a color format and is sampled as such, but contains depth S component information internally. It lives in the IO monad for the sake of the Ptr',s, and could otherwise safely be wrapped in unsafePerformIO calls. *The format of the data in the provided Ptr's. 6The depth format of the resulting texture on the GPU. The dimension of the texture.  A list of Ptr'Hs for each mipmap of the texture (you may provide as many as you want).  For H, this list starts with all mipmaps of the first side, then the mipmaps Z of the second, and so on. In this case all sides must have the same number of mipmaps. d All rows and depth levels are tightly packed, i.e. no padding between them and 1 byte alignment.  Create a O of a specific format and size from the the color buffers of six framebuffers.   Create a U of a specific depth format and size from the the depth buffers of six framebuffers. ] The texture will have the type of a color format and is sampled as such, but contains depth # component information internally.     H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,-,?,@,A,B,C,D,E,F,G,H,I,J,K,LMNOMNOMNPMNQMNRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuuvwxyz{|}~                                                !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgefh  i  j k l m n o p q r s t u v w x y z { | } ~                         MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM                        e  ef GPipe-1.2.0Graphics.GPipe.FrameBufferGraphics.GPipe.StreamGraphics.GPipe.FormatGraphics.GPipe.TextureGraphics.GPipe.Stream.FragmentGraphics.GPipe.Stream.PrimitiveFormats ResourcesShader GPUStreamInputAssembler Rasterizer OutputMergerTexturesGraphics.GPipeOpenGL-2.4.0.1/Graphics.Rendering.OpenGL.GL.ComparisonFunctionComparisonFunctionAlwaysGequalNotequalGreaterLequalEqualLessNever+Graphics.Rendering.OpenGL.GL.BlendingFactorBlendingFactorSrcAlphaSaturateOneMinusConstantAlpha ConstantAlphaOneMinusConstantColor ConstantColorOneMinusDstAlphaDstAlphaOneMinusSrcAlphaSrcAlphaOneMinusDstColorDstColorOneMinusSrcColorSrcColorOneZero(Graphics.Rendering.OpenGL.GL.PerFragmentLogicOpSetNand OrInverted CopyInverted OrReverseInvertEquivNorOrXorNoop AndInvertedCopy AndReverseAndClear BlendEquationMaxMinFuncReverseSubtract FuncSubtractFuncAdd StencilOpOpInvert OpDecrWrapOpDecr OpIncrWrapOpIncr OpReplaceOpKeepOpZero Vec-0.9.6 Data.Vec.Base:.Vec2Vec3Vec4StencilDepth ColorFormatColor GPUFormat CPUFormatStorableCPUFormatCPUFormat1Comp FloatFormat IntFormatUnsignedIntFormat ShortFormatUnsignedShortFormat ByteFormat BitmapFormatUnsignedByteFormatCPUFormat2CompPerComp2CPUFormat3CompUnsignedShort5_6_5_RevUnsignedShort5_6_5UnsignedByte2_3_3_RevUnsignedByte3_3_2PerComp3CPUFormat4CompUnsignedInt2_10_10_10_RevUnsignedInt10_10_10_2UnsignedInt8_8_8_8_RevUnsignedInt8_8_8_8UnsignedShort1_5_5_5_RevUnsignedShort5_5_5_1UnsignedShort4_4_4_4_RevUnsignedShort4_4_4_4PerComp4 StencilFormat DepthFormatDepth32Depth24Depth16 RGBAFormatSRGBA8RGBA16RGBA12RGB10A2RGBA8RGB5A1RGBA4RGBA2 RGBFormatSRGB8RGB16RGB12RGB10RGB8RGB5RGB4R3G3B2LuminanceAlphaFormatSLuminance8Alpha8Luminance16Alpha16Luminance12Alpha12Luminance12Alpha4Luminance8Alpha8Luminance6Alpha2Luminance4Alpha4LuminanceFormat SLuminance8 Luminance16 Luminance12 Luminance8 Luminance4 AlphaFormatAlpha16Alpha12Alpha8Alpha4EdgeModeClampMirrorWrapFilterLinearPointSamplerConvert ConvertFloat ConvertInttoFloattoIntReal'rsqrtexp2log2floor'ceiling'fract'mod'clampsaturatemixstep smoothstepFragmentVertexGPUCPUtoGPUdFdxdFdyfwidth PointListLineLineList LineStripTriangle TriangleFan TriangleList TriangleStrip PrimitiveVertexPositionFragmentStreamPrimitiveStreamfilterFragments VertexInputtoVertex toGPUStreamtoIndexedGPUStream VertexOutput FragmentInput toFragmentrasterizeFrontrasterizeFrontAndBack rasterizeBack FrameBuffer StencilTeststencilComparisionstencilReference stencilMask StencilTests StencilOpsfrontStencilOp backStencilOpBlending BlendLogicOpBlend NoBlending DepthFunction DepthMask ColorMask FragmentDepthnewFrameBufferColornewFrameBufferColorDepthnewFrameBufferColorDepthStencilnewFrameBufferColorStencilnewFrameBufferDepthnewFrameBufferDepthStencilnewFrameBufferStencil paintColor paintDepthpaintColorDepth paintStencilpaintDepthStencilpaintColorStencilpaintColorDepthStencilpaintRastDepthpaintColorRastDepthpaintRastDepthStencilpaintColorRastDepthStencilgetFrameBufferCPUFormatByteSizegetFrameBufferColorgetFrameBufferDepthgetFrameBufferStencil newWindowFromFrameBufferDepthfromFrameBufferDepthFromFrameBufferColorfromFrameBufferColorDepthColorFormatTexture TextureFormat TextureSizeTextureVertexCoordTextureFragmentCoordtextureCPUFormatByteSizesample sampleBias sampleLod TextureCube Texture1D Texture2D Texture3D newTexturenewDepthTexturefromFrameBufferCubeColorfromFrameBufferCubeDepth fromColortoColortoGLInternalFormattoGLPixelFormat sizeOfFormat toGLDataTypeformatRowByteSizeRGBARGBLuminanceAlpha LuminanceAlphaWinMappedTextureContextCacheIO ContextCache programCachevbCacheibCache contextWindowcontextViewPortIBCacheVBCache ProgramCacheProgramCacheMapProgramCacheValueUniformUniformSampler UniformBool UniformInt UniformFloatConst ConstBoolConstInt ConstFloatOp ShaderKeyNode ShaderKeyOpShaderKeyInputShaderKeyConstantShaderKeyUniform ShaderKey ShaderInfo UniformSet SamplerType SamplerCube Sampler1D Sampler2D Sampler3DUniformLocationSet IndexBuffer VertexBuffer pCacheLookup pCacheInsertnewContextCachesetContextWindowcreateShaderResourcecreateProgramResourcecreateVertexBuffercreateIndexBufferuseProgramResource useUniformsuseVertexBufferdrawIndexVertexBufferdrawVertexBufferhiddenWindowContextCachewindowContextCachesgetContextCachesaveContextCachechangeContextSize ioEvaluatenewWinMappedTexture mtl-1.1.1.0Control.Monad.TransliftIOgetCurrentOrSetHiddenContext evaluateDeep evaluatePtrbindWinMappedTexturecubeMapTargetsghc-prim GHC.TypesFloatDouble fromFragment fromVertex ShaderDAG ShaderTreeShaderOpShaderInputTree ShaderInputShaderConstant ShaderUniformrasterizeVertex inputVertexfragmentFrontFacing getShadersnormF4normF3normF2normV4normV3normV2 normalizeF4 normalizeF3 normalizeF2 normalizeV4 normalizeV3 normalizeV2dotF4dotF3dotF2dotV4dotV3dotV2crossF3crossV3noFun uniformDeclscreateShaderKey splitShaders createDAGextractUniforms extractInputsgetCodeAssignmentsassignbinFunc Boolean-0.0.1 Data.BooleanmaxBminBcropcondboolean||*&&*notBfalsetrueBooleanifBIfB/=*==*EqB<=*>*>=*<*OrdBvSampleBinFuncfSampleBinFuncvSampleTernFuncfSampleTernFuncData.Vec.LinAlgsolve invertAndDetinvert cramer'sRuledetidentitydiagonalscalerowcolumn translatemultmmmultmvmultvmprojecthomVechomPointcross normalizenormnormSqdot transpose Transpose setDiagonal SetDiagonal getDiagonal GetDiagonalnearZeroNearZero gaussElim GaussElimbackSubstituteBackSubstitutebackSubstitute'BackSubstitute'getPrimitiveModeFragmentStreamDescPrimitiveStreamDesc VertexSetupIndexedVertexSetupCullModeCullBack CullFrontCullNonePrimitiveStreamShaderPrimitiveStreamNoShaderloadFragmentColorStreamloadFragmentDepthStreamloadFragmentColorDepthStreamloadFragmentAnyStreamfromInputAssemblergetVertexInputfromRasterizergetFragmentInputGHC.BoolTruesetDefaultStates GLUT-2.2.2.0!Graphics.UI.GLUT.Callbacks.WindowdisplayCallbackreshapeCallbackGraphics.UI.GLUT.TypesWindowrunFrameBufferInContext mkTextureInt