úÎ æ{Ñ¿Ç      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ Edge mode used in sampler state "Filter mode used in sampler state 0A structure describing how a texture is sampled .ÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêë(ÈÉÊËÌËÌÍÑÐÏÎÎÏÐÑÒÓÔÕÕÖ×רÙÚÛÜÝÞßàáâãäçé aThis 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. A CPU format for 1 component =A CPU format for 2 components (i.e. a LuminanceAlpha color). 2A CPU format for 3 components (i.e. a RGB color). !3A CPU format for 4 components (i.e. a RGBA color). +)A GPU format for a stencil buffer value.  This is the associated type in  : CPUFormat AlphaFormat  -'A GPU format for a depth buffer value.  This is the associated type in  : CPUFormat AlphaFormat  1PA GPU format with color components for red, green and blue, and an alpha value. # These are the associated types in   and  : CPUFormat AlphaFormat ! Color AlphaFormat a RGBA (ì  a) a :<A GPU format with color components for red, green and blue. # These are the associated types in   and  : CPUFormat AlphaFormat  Color AlphaFormat a RGB (ì  a) C?A GPU format with a single color component and an alpha value. # These are the associated types in   and  : CPUFormat AlphaFormat  Color AlphaFormat a LuminanceAlpha a a K,A GPU format with a single color component. # These are the associated types in   and  : CPUFormat AlphaFormat  Color AlphaFormat a  Luminance a Q'A GPU format with only an alpha value. # These are the associated types in   and  : CPUFormat AlphaFormat  Color AlphaFormat a Alpha a X íî ïðñ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUòóôõö÷S  íî íî ïðïðññ  ! *)('&%$#""#$%&'()*+,,-0/../019876543223456789:BA@?>=<;;<=>?@ABCJIHGFEDDEFGHIJKPONMLLMNOPQUTSRRSTU÷R  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUòóôõöMQUTSRKPONMLCJIHGFED:BA@?>=<;198765432-0/.+,  !*)('&%$#"  VAThis class provides the GPU functions either not found in Prelude'.s numerical classes, or that has wrong types. * Instances are also provided for normal ø s and ù s.  Minimal complete definition: Z and [. cLAn opaque type constructor for atomic values in a fragment on the GPU, e.g. c ø . dJAn opaque type constructor for atomic values in a vertex on the GPU, e.g. d ø . ehDenotes a type on the GPU, that can be moved there from the CPU (through the internal use of uniforms). J Use the existing instances of this class to create new ones. Note that g' should not be strict on its argument. < Its definition should also always use the same series of g= calls to convert values of the same type. This unfortunatly n rules out ordinary lists (but instances for fixed length lists from the Vec package are however provided). fThe type on the CPU. g*Converts a value from the CPU to the GPU. hFThe derivative in x using local differencing of the rasterized value. iFThe derivative in y using local differencing of the rasterized value. j`The sum of the absolute derivative in x and y using local differencing of the rasterized value. ;úûüýþÿ    VWXYZ[\]^_`abc defghij"V WXYZ[\]^_`abWXYZ[\]^_`abc  defgfghijLúûüýþÿ     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFìGVWXYZ[\]^_`abefgefgVWXYZ[\]^_`abvFA stream of fragments on the GPU, parameterized on the fragments type  (built up of atoms of type c). wjA stream of primitives built by vertices on the GPU. The first parameter is the primitive type (currently p, m or k) and the second the  the type of each primitives' vertices'! type (built up of atoms of type d). xFFilters out fragments in a stream where the provided function returns . klmnopqrstHIJKLMNOPQRuvSwTxUVWXkllmonnopsrqqrstHHIJKLNMMNORQPPQRuvSSwTTxUVWXy<The context of types that can be converted into vertices in ws. ] Create your own instances in terms of the existing ones, e.g. convert your vertex data to ø s,  turn them into d ø s with z; and then convert them to your vertex data representation. z3Turns an ordinary value into a vertex value in the {3 monad. This should not be strict on its argument. < Its definition should also always use the same series of z= calls to convert values of the same type. This unfortunatly o 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 z in the existing instances of y to operate in this monad. |Converts a list of values to a w, using a specified t 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. }Converts a list of values to a w, using a specified t 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. yz{|}yzz{|}dklmnopqrstwyz{|}wdyz{psrqmonklt|}~nA polymorphic frame buffer. It is parameterized on the type of color buffer, depth buffer and stencil buffer.  Any instances of  " can be used for color buffer, or '()' to denote no color buffer.  For depth and stencil buffers, - and ,+& 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 YZ2 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 §. ¥Saves a ~s color buffer to main memory. ¦Saves a ~s depth buffer to main memory. §Saves a ~!s stencil buffer to main memory. ¨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 _. f`abcdefgh\ijklmnopqrstuvwZxyz{|}~€‚ƒ„…†‡[Yˆ‰Š‹ŒŽ‘’“”•~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨–,~€‚ƒ€‚ƒ„……†‡ˆ‰‡ˆ‰ŠŒ‹‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨–e`abcdefgh\ijklmnopqrstuvwZxyz{|}~€‚ƒ„…†‡[Yˆ‰Š‹ŒŽ‘’“”•~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨+~¨’“•”–˜—¥¦§¤™š›œžŸ ¡¢£ŠŒ‹Ž†‡ˆ‰€‚ƒ„…‘©=The context of types that can be rasterized from vertices in ws to fragments in vs. ] Create your own instances in terms of the existing ones, e.g. convert your vertex data to d ø s,  turn them into c ø s with «= and then convert them to your fragment data representation. ªThe corresponding type in the v after rasterization. «2Turns a vertex value into a fragment value in the ¬3 monad. This should not be strict on its argument. < Its definition should also always use the same series of «= calls to convert values of the same type. This unfortunatly o rules out ordinary lists (but instances for fixed length lists from the Vec package are however provided). ¬>A monad in which vertex data gets converted to fragment data.  Use « in the existing instances of © to operate in this monad. ­ˆRasterize all types of primitives (and both sides of triangles) with vertices containing canonical view coordinates into fragments. ®ŸRasterize both sides of triangles with vertices containing canonical view coordinates into fragments, also returning the primitives side in the fragments. ¯oRasterize only front side of triangles with vertices containing canonical view coordinates into fragments. °nRasterize only back side of triangles with vertices containing canonical view coordinates into fragments. ©ª«¬­®¯°©ª«ª«¬­®¯°chijuvx©ª«¬­®¯°vchijx©ª«¬u­°®¯±CThe 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 ds. ºThe sample coordinate in cs. »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 c. ½'Samples the texture using mipmaps in a c+, with a bias to add to the mipmap level. ¾1Samples the texture using a specific mipmap in a d. ¿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) F  —  (The size of each side) "TextureVertexCoord (TextureCube f) ì  (d ø ) $TextureFragmentCoord (TextureCube f) ì  (c ø ) À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) d ø  "TextureFragmentCoord (Texture1D f) c ø  ÁA 2D texture.  Á f+ has the following associated types in its ¶ instance: TextureFormat (Texture2D f) f TextureSize (Texture2D f) F  —   TextureVertexCoord (Texture2D f) F  (d ø ) "TextureFragmentCoord (Texture2D f) F  (c ø ) Â=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) ì  (d ø ) "TextureFragmentCoord (Texture3D f) ì  (c ø ) Ã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. ÄŽ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. Å 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. ±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ±²²³´´µ¶·¸¹º»¼½¾·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÂÁÀ¿¶·¸¹º»¼½¾Ãij´±²µÅÆÿBúûüýþÿ    `abcdefgh\ijklmnopqrstuvwZxyz{|}~€‚ƒ„…†‡[Yˆ‰Š‹ŒŽ‘’“”• !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFìG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUòóôõöVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ˜ !""#$%&'()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn o p q r s t u v w x y z { | } ~  € ‚ ƒ!„…†‡ˆ‰Š‹ŒŽ‘’“”•––—˜™šš››œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèééêêëìíîïðñòóôõö÷øùúûüýþ ÿ      | }  ! " # $  % & ' ( ) * + , - . / 01 02 03 04 05 06 07 08 09 0: 0; 0< 0= 0> 0? 0@ 0A 0B 0C 0D 0E 0F 0G 0H 0I 0J 0K 0L 0M 0N 0O 0P 0Q 0R 0S 0T U U V WXYZ[\]\^_`aŽbcdeffghi jklmnmompmqmrmsmtmumvhwhxhyhzh{h|h}h~hh€hh‚hƒh„h…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤ ¥¦ GPipe-1.0.0Graphics.GPipe.TextureGraphics.GPipe.FormatGraphics.GPipe.StreamGraphics.GPipe.Stream.FragmentGraphics.GPipe.Stream.PrimitiveGraphics.GPipe.FrameBuffer ResourcesFormats Vec-0.9.6 Data.Vec.BaseShaderghc-prim GHC.Types GPUStream Boolean-0.0.0 Data.BooleanInputAssembler OutputMergerOpenGL-2.4.0.1(Graphics.Rendering.OpenGL.GL.PerFragmentGHC.Bool GLUT-2.2.2.0!Graphics.UI.GLUT.Callbacks.Window RasterizerTexturesGraphics.GPipeEdgeModeClampMirrorWrapFilterLinearPointSamplerStencilDepth 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 AlphaFormatAlpha16Alpha12Alpha8Alpha4Real'rsqrtexp2log2floor'ceiling'fract'mod'clampsaturatemixstep smoothstepFragmentVertexGPUCPUtoGPUdFdxdFdyfwidth PointListLineLineList LineStripTriangle TriangleFan TriangleList TriangleStrip PrimitiveVertexPositionFragmentStreamPrimitiveStreamfilterFragments VertexInputtoVertex toGPUStreamtoIndexedGPUStream FrameBuffer StencilTeststencilComparisionstencilReference stencilMask StencilTests StencilOpsfrontStencilOp backStencilOpBlending BlendLogicOpBlend NoBlending DepthFunction DepthMask ColorMask FragmentDepthnewFrameBufferColornewFrameBufferColorDepthnewFrameBufferColorDepthStencilnewFrameBufferColorStencilnewFrameBufferDepthnewFrameBufferDepthStencilnewFrameBufferStencil paintColor paintDepthpaintColorDepth paintStencilpaintDepthStencilpaintColorStencilpaintColorDepthStencilpaintRastDepthpaintColorRastDepthpaintRastDepthStencilpaintColorRastDepthStencilgetFrameBufferCPUFormatByteSizegetFrameBufferColorgetFrameBufferDepthgetFrameBufferStencil newWindow VertexOutput FragmentInput toFragment rasterizerasterizeFrontAndBackrasterizeFront rasterizeBackFromFrameBufferDepthfromFrameBufferDepthFromFrameBufferColorfromFrameBufferColorDepthColorFormatTexture TextureFormat TextureSizeTextureVertexCoordTextureFragmentCoordtextureCPUFormatByteSizesample sampleBias sampleLod TextureCube Texture1D Texture2D Texture3D newTexturenewDepthTexturefromFrameBufferCubeColorfromFrameBufferCubeDepth mtl-1.1.0.2Control.Monad.TransliftIOWinMappedTextureContextCacheIO ContextCache contextWindowcontextViewPort SamplerType SamplerCube Sampler1D Sampler2D Sampler3D UniformSetUniformLocationSet IndexBuffer VertexBuffernewContextCachesetContextWindowcreateProgramResourcecreateVertexBuffercreateIndexBufferuseProgramResource useUniformsdrawIndexVertexBufferdrawVertexBufferhiddenWindowContextCachegetContextCachesaveContextCachechangeContextSizegetCurrentOrSetHiddenContext evaluateDeep ioEvaluate evaluatePtrnewWinMappedTexturebindWinMappedTexturecubeMapTargetsVec3 fromColortoColortoGLInternalFormattoGLPixelFormat toGLDataTypeRGBARGBLuminanceAlpha LuminanceAlphaformatRowByteSizeFloatDoublecropcondboolean||*&&*notBfalsetrueBooleanifBIfB/=*==*EqB<=*>*>=*<*OrdBUniformSamplerUniform BoolUniform IntUniform FloatUniform vertexProgramfragmentProgramcolorFragmentShadercolorDepthFragmentShader vSampleFunc fSampleFuncaddVertexSamplerUniformaddFragmentSamplerUniform runShaderaddInput addUniformData.Vec.LinAlgsolve invertAndDetinvert cramer'sRuledetidentitydiagonalscalerowcolumn translatemultmmmultmvmultvmprojecthomVechomPointcross normalizenormnormSqdot transpose Transpose setDiagonal SetDiagonal getDiagonal GetDiagonalnearZeroNearZero gaussElim GaussElimbackSubstituteBackSubstitutebackSubstitute'BackSubstitute':.Vec2Vec4getPrimitiveModeFragmentStreamDescPrimitiveStreamDesc FragmentSetup VertexSetupIndexedVertexSetupCullModeCullBack CullFrontCullNoneloadFragmentColorStreamloadFragmentDepthStreamloadFragmentColorDepthStreamloadFragmentAnyStreamLogicOp BlendEquation+Graphics.Rendering.OpenGL.GL.BlendingFactorBlendingFactorTruedisplayCallbackreshapeCallback/Graphics.Rendering.OpenGL.GL.ComparisonFunctionComparisonFunctionAlwaysGequalNotequalGreaterLequalEqualLessNeverSrcAlphaSaturateOneMinusConstantAlpha ConstantAlphaOneMinusConstantColor ConstantColorOneMinusDstAlphaDstAlphaOneMinusSrcAlphaSrcAlphaOneMinusDstColorDstColorOneMinusSrcColorSrcColorOneZeroSetNand OrInverted CopyInverted OrReverseInvertEquivNorOrXorNoop AndInvertedCopy AndReverseAndClearMaxMinFuncReverseSubtract FuncSubtractFuncAdd StencilOpOpInvert OpDecrWrapOpDecr OpIncrWrapOpIncr OpReplaceOpKeepOpZerorunFrameBufferInContextInt