Changeset 37444 in project


Ignore:
Timestamp:
03/23/19 13:03:13 (13 months ago)
Author:
Kooda
Message:

Document hypergiant for CHICKEN 5

File:
1 copied

Legend:

Unmodified
Added
Removed
  • wiki/eggref/5/hypergiant

    r37426 r37444  
     1
    12== Hypergiant
    23[[toc:]]
     
    1112
    1213=== Requirements
    13 * opengl-glew
     14* epoxy
    1415* glfw3
    1516* gl-utils
     
    2021* noise
    2122* soil
    22 * random-mtzig
    2323* miscmacros
    2424* srfi-42
    2525* srfi-99
    2626
    27 While Hypergiant doesn’t require any external libraries directly, opengl-glew and glfw3 depend on OpenGL, [[http://glew.sourceforge.net/|GLEW]], [[http://www.glfw.org/|GLFW]] (the most recent major version is required: 3.X). gl-type depends on [[http://www.freetype.org/|Freetype]]
     27While Hypergiant doesn’t require any external libraries directly, epoxy and glfw3 depend on OpenGL, [[https://github.com/anholt/libepoxy|libepoxy]], [[http://www.glfw.org/|GLFW]] (the most recent major version is required: 3.X). gl-type depends on [[http://www.freetype.org/|Freetype]]
    2828
    2929When installing GLFW on OS X through Homebrew, an extra step is needed. Homebrew renames the library’s from the default. You can fix this by creating a link that points to the library that gets installed. E.g. {{sudo ln -s <homebrew-lib-dir>/glfw3.dylib /usr/local/lib/libglfw.dylib}}
     
    4343Hypergiant reexports (and uses) the following libraries:
    4444
    45 * [[http://wiki.call-cc.org/eggref/4/opengl-glew|opengl-glew]] (prefix {{gl:}}): Bindings to core OpenGL or OpenGL ES
    46 * [[http://wiki.call-cc.org/eggref/4/glls|glls]] (some macros modified, as noted below): Creates OpenGL Shader Language shaders in Scheme, and compiles rendering functions in C for use with the shaders
    47 * [[http://wiki.call-cc.org/eggref/4/hyperscene|Hyperscene]] (some functions modified, as noted below): Scene management with a scene-graph, cameras, frustum culling, and a lighting extension (extensible only in C)
    48 * [[http://wiki.call-cc.org/eggref/4/gl-utils|gl-utils]] (gl-utils-core is prefixed with {{gl:}}, all other modules have no prefix): Extends OpenGL to help make common operations easier
    49 * [[http://wiki.call-cc.org/eggref/4/gl-math|gl-math]]: Provides fast matrix, quaternion, and vector manipulation functions, suitable for use with OpenGL
    50 * [[http://wiki.call-cc.org/eggref/4/gl-type|gl-type]]: Loads Truetype fonts and renders them as OpenGL objects
    51 * [[http://wiki.call-cc.org/eggref/4/soil|soil]]: Image loading for OpenGL
    52 * [[http://wiki.call-cc.org/eggref/4/noise|noise]]: Noise functions that run on the GPU, created as glls shaders
     45* [[https://wiki.call-cc.org/egg/epoxy|epoxy]] (prefix {{gl:}}): Bindings to core OpenGL or OpenGL ES
     46* [[https://wiki.call-cc.org/egg/glls|glls]] (some macros modified, as noted below): Creates OpenGL Shader Language shaders in Scheme, and compiles rendering functions in C for use with the shaders
     47* [[https://wiki.call-cc.org/egg/hyperscene|Hyperscene]] (some functions modified, as noted below): Scene management with a scene-graph, cameras, frustum culling, and a lighting extension (extensible only in C)
     48* [[https://wiki.call-cc.org/egg/gl-utils|gl-utils]] (gl-utils-core is prefixed with {{gl:}}, all other modules have no prefix): Extends OpenGL to help make common operations easier
     49* [[https://wiki.call-cc.org/egg/gl-math|gl-math]]: Provides fast matrix, quaternion, and vector manipulation functions, suitable for use with OpenGL
     50* [[https://wiki.call-cc.org/egg/gl-type|gl-type]]: Loads Truetype fonts and renders them as OpenGL objects
     51* [[https://wiki.call-cc.org/egg/soil|soil]]: Image loading for OpenGL
     52* [[https://wiki.call-cc.org/egg/noise|noise]]: Noise functions that run on the GPU, created as glls shaders
    5353
    5454Because Hypergiant reexports from all of these eggs, when the import list of one of these eggs changes, Hypergiant must be reinstalled in order to reflect the change. You can use the following command to ensure that a full update is performed:
     
    7676<procedure> (start WIDTH HEIGHT TITLE [init: INIT] [update: UPDATE] [pre-render: PRE-RENDER] [post-render: POST-RENDER] [cleanup: CLEANUP] . WINDOW-HINTS)</procedure>
    7777
    78 Start the main body of the program, creating a new window with dimensions {{WIDTH}} and {{HEIGHT}}, and the given {{TITLE}}. {{INIT}} may be a function of zero arguments that will be called during the initialization sequence, after all libraries are initialized, but before the main loop. {{UPDATE}} may be a function of one argument ({{delta}}: the time that passed between the current update and the last one) that is called once per frame before scenes are updated and rendered. {{PRE-RENDER}} and {{POST-RENDER}} may be functions of zero arguments that perform some action immediately before and after {{render-cameras}} is called, respectively. {{CLEANUP}} may be a function of zero arguments which is called before the window is closed. {{WINDOW-HINTS}} accepts the same keyword arguments as [[http://api.call-cc.org/doc/glfw3/make-window|{{make-window}}]].
     78Start the main body of the program, creating a new window with dimensions {{WIDTH}} and {{HEIGHT}}, and the given {{TITLE}}. {{INIT}} may be a function of zero arguments that will be called during the initialization sequence, after all libraries are initialized, but before the main loop. {{UPDATE}} may be a function of one argument ({{delta}}: the time that passed between the current update and the last one) that is called once per frame before scenes are updated and rendered. {{PRE-RENDER}} and {{POST-RENDER}} may be functions of zero arguments that perform some action immediately before and after {{render-cameras}} is called, respectively. {{CLEANUP}} may be a function of zero arguments which is called before the window is closed. {{WINDOW-HINTS}} accepts the same keyword arguments as [[https://api.call-cc.org/5/doc/glfw3/make-window|{{make-window}}]].
    7979
    8080<procedure> (stop)</procedure>
     
    208208
    209209==== Scenes
    210 Hypergiant reexports most of [[http://wiki.call-cc.org/eggref/4/hyperscene|Hyperscene]] except for {{resize-cameras}}, since it manages this functionality. {{resize-cameras}} is handled by {{start}}. {{add-node}}, {{add-light}}, {{make-camera}}, and {{set-max-lights!}} are modified as described below.
     210Hypergiant reexports most of [[https://wiki.call-cc.org/egg/hyperscene|Hyperscene]] except for {{resize-cameras}}, since it manages this functionality. {{resize-cameras}} is handled by {{start}}. {{add-node}}, {{add-light}}, {{make-camera}}, and {{set-max-lights!}} are modified as described below.
    211211
    212212Cameras are automatically resized in Hypergiant so that their projection matrix matches the bounds of the window.
     
    238238{{POSITION}} expects a gl-math point. When {{POSITION}} is provided, {{set-node-position!}} is called with {{POSITION}} after the node is created. {{RADIUS}} expects a float. When {{RADIUS}} is provided, {{set-node-bounding-sphere!}} is called with {{RADIUS}} after the node is created.
    239239
    240 When {{PIPELINE}} is a render-pipeline the node data that is created is a [[http://wiki.call-cc.org/eggref/4/glls#renderables|glls renderable]] object. {{MESH}}, {{VAO}}, {{MODE}}, {{N-ELEMENTS}}, {{ELEMENT-TYPE}}, and {{OFFSET}} all function as they do when making a renderable. Additionally, {{MESH}} may be passed to {{add-node}} when its VAO has not yet been created (i.e. with [[http://api.call-cc.org/doc/gl-utils/mesh-make-vao%21|{{mesh-make-vao!}}]]), and {{mesh-make-vao!}} will be called automatically, influenced by the optional {{USAGE}} keyword (defaulting to {{#:static}}). {{DRAW-ARRAYS?}} is a boolean that indicates whether or not the renderable’s array rendering function should be used (i.e. {{draw-arrays}} is used instead of {{draw-elements}}). {{DRAW-ARRAYS?}} defaults to {{#t}} if {{MESH}} has no index data, and {{#f}} otherwise. {{add-node}} accepts other keyword {{UNIFORM-ARGS}}, which are used to set the value for each uniform in the pipeline, as required by glls renderable makers.
     240When {{PIPELINE}} is a render-pipeline the node data that is created is a [[https://wiki.call-cc.org/egg/glls#renderables|glls renderable]] object. {{MESH}}, {{VAO}}, {{MODE}}, {{N-ELEMENTS}}, {{ELEMENT-TYPE}}, and {{OFFSET}} all function as they do when making a renderable. Additionally, {{MESH}} may be passed to {{add-node}} when its VAO has not yet been created (i.e. with [[https://api.call-cc.org/5/doc/gl-utils/mesh-make-vao%21|{{mesh-make-vao!}}]]), and {{mesh-make-vao!}} will be called automatically, influenced by the optional {{USAGE}} keyword (defaulting to {{#:static}}). {{DRAW-ARRAYS?}} is a boolean that indicates whether or not the renderable’s array rendering function should be used (i.e. {{draw-arrays}} is used instead of {{draw-elements}}). {{DRAW-ARRAYS?}} defaults to {{#t}} if {{MESH}} has no index data, and {{#f}} otherwise. {{add-node}} accepts other keyword {{UNIFORM-ARGS}}, which are used to set the value for each uniform in the pipeline, as required by glls renderable makers.
    241241
    242242{{add-node}} appends a number of Hyperscene values to its renderable creation call, for convenience. The following keys and values are added, which must correspond to the names of uniforms in the renderable’s pipeline if they are to be used:
     
    264264<macro> (define-alpha-pipeline PIPELINE-NAME . SHADERS)</macro>
    265265
    266 Accepts arguments identical to glls’ [[http://api.call-cc.org/doc/glls/define-pipeline|{{define-pipeline}}]], but additionally defines a ''render-pipeline'' object with the name {{PIPELINE-NAME-render-pipeline}}. This render-pipeline object should be passed to {{add-node}}, and contains all the functions necessary to render the pipeline’s renderables. In other words, this creates managed Hyperscene pipeline objects that you don’t need to worry about. Additional work occurs if you evaluate (i.e. don’t compile) a program that uses {{define-pipeline}}.
    267 
    268 The functions in the Hyperscene pipelines created by {{define-pipeline}} correspond to the begin render, render, and end render [[http://wiki.call-cc.org/eggref/4/glls#fast-render-functions|“fast” functions]] created by glls. Setting the {{unique-textures?}} parameter, to {{#f}} (for syntax), if a pipeline is known to use only one texture (for each sampler type), may improve speed.
     266Accepts arguments identical to glls’ [[https://api.call-cc.org/5/doc/glls/define-pipeline|{{define-pipeline}}]], but additionally defines a ''render-pipeline'' object with the name {{PIPELINE-NAME-render-pipeline}}. This render-pipeline object should be passed to {{add-node}}, and contains all the functions necessary to render the pipeline’s renderables. In other words, this creates managed Hyperscene pipeline objects that you don’t need to worry about. Additional work occurs if you evaluate (i.e. don’t compile) a program that uses {{define-pipeline}}.
     267
     268The functions in the Hyperscene pipelines created by {{define-pipeline}} correspond to the begin render, render, and end render [[https://wiki.call-cc.org/egg/glls#fast-render-functions|“fast” functions]] created by glls. Setting the {{unique-textures?}} parameter, to {{#f}} (for syntax), if a pipeline is known to use only one texture (for each sampler type), may improve speed.
    269269
    270270{{define-alpha-pipeline}} works the same, but the creates a pipeline that is potentially transparent to some degree. This additional macro is necessary since Hyperscene renders alpha objects at a different stage, in a different order from opaque objects.
     
    445445
    446446==== Geometry
    447 Hypergiant provides numerous functions for generating [[http://api.call-cc.org/doc/gl-utils#sec:gl-utils-mesh|gl-utils mesh]] primitives. The attributes of these meshes are all named with the same convention as the [[#pre-defined-pipelines-and-shaders|pre-defined pipelines]]: The vertex position, normal, three element colour, and texture coordinate attributes are named {{position}}, {{normal}}, {{color}}, and {{tex-coord}}, respectively. Positions and normals are always {{vec3}}s, represented as floats in memory, while the type of the other attributes can be controlled with arguments.
     447Hypergiant provides numerous functions for generating [[https://api.call-cc.org/5/doc/gl-utils#sec:gl-utils-mesh|gl-utils mesh]] primitives. The attributes of these meshes are all named with the same convention as the [[#pre-defined-pipelines-and-shaders|pre-defined pipelines]]: The vertex position, normal, three element colour, and texture coordinate attributes are named {{position}}, {{normal}}, {{color}}, and {{tex-coord}}, respectively. Positions and normals are always {{vec3}}s, represented as floats in memory, while the type of the other attributes can be controlled with arguments.
    448448
    449449<procedure> (line-mesh POINTS [mode: MODE])</procedure>
     
    463463Create a cube mesh with sides of {{LENGTH}} with the centre of the cube at the origin. Each face of the cube has a unique set of vertices – i.e. no face shares vertices. When {{NORMALS?}} is {{#t}}, normals are added to the mesh. When {{CUBE-MAP?}} is {{#t}}, three element texture coordinates are added to the mesh, corresponding to a unit-cube. Alternately, {{TEXTURE}} may be supplied, which expects a function of one argument: the index of a vertex. This texture function should return a three element list of the texture coordinate at that index. The cube mesh vertices are ordered as follows: each face has vertices {{(upper-left upper-right lower-left lower-right)}}, and the faces are ordered {{(front right back left top bottom)}}. The up direction for each face can be seen in the image below:
    464464
    465 [[image:https://github.com/AlexCharlton/hypergiant/raw/master/doc-images/cube-mapping.png|Cube wrapping]]
     465[[image:https://www.upyum.com/cgit.cgi/hypergiant/plain/doc-images/cube-mapping.png|Cube wrapping]]
    466466
    467467Likewise, {{COLOR}} expects a similar function that accepts one index as an argument, but should return a three element list of colour values. {{WINDING}} controls the direction of the vertex winding, either counter-clockwise ({{#:ccw}}, the default), or clockwise ({{#:cw}}). {{MODE}} should be a valid argument to {{mode->gl}},  defaulting to {{#:triangles}}. {{TEXTURE-TYPE}}, {{COLOUR-TYPE}}, and {{INDEX-TYPE}} control the in-memory type of the texture attribute, the color attribute, and the index, and should be a valid argument to {{type->gl}}. {{TEXTURE-TYPE}} defaults to {{#:float}}, while {{COLOUR-TYPE}} and {{INDEX-TYPE}} default to {{#:ushort}}.
     
    471471Create a spherical mesh of {{RADIUS}} with the centre of the sphere at the origin. Depending on {{TYPE}}, the way the sphere is created will differ: {{#:uv}} will create a UV sphere – with vertices positioned on longitude/latitude points – {{#:cube}} will create a cube sphere – with vertices positioned on a deformed cube. The former is useful for 2D texture mapping, but will necessarily have increasingly large deformation towards the poles, and lower resolution near the equator. The latter is useful for a cube-mapped texture, for minimal deformation. The images below illustrates a UV sphere and cube sphere, respectively.
    472472
    473 [[image:https://github.com/AlexCharlton/hypergiant/raw/master/doc-images/uv-sphere.gif|UV sphere]] [[image:https://github.com/AlexCharlton/hypergiant/raw/master/doc-images/cube-sphere.gif|Cube sphere]]
     473[[image:https://www.upyum.com/cgit.cgi/hypergiant/plain/doc-images/uv-sphere.gif|UV sphere]] [[image:https://www.upyum.com/cgit.cgi/hypergiant/plain/doc-images/cube-sphere.gif|Cube sphere]]
    474474
    475475For the UV sphere, {{RESOLUTION}} sets the number of longitudinal subdivisions, half of which is the number of latitudinal subdivisions ({{RESOLUTION}} must be a factor of 2). Setting both {{TEXTURE-WIDTH}} and {{TEXTURE-HEIGHT}} for a UV sphere causes 2 element texture coordinates to be added to the mesh, with {{TEXTURE-OFFSET}} representing the upper left corner of the texture, defaulting to {{(0 0)}}. The texture’s upper left corner is mapped to the left side of the sphere, wrapping counter-clockwise such that the left half of the texture corresponds to the front half of the sphere. Alternately, {{TEXTURE}} may be supplied, which expects a function of one argument: the index of a vertex. This texture function should return a two element list of the texture coordinate at that index. The cube mesh vertices are ordered as a rectangular array with {{RESOLUTION + 1}} columns and {{RESOLUTION/2 + 1}} rows. The first row corresponds to the “north” pole, while the last corresponds to the “south” pole. The first column has the same position as the last. This array is wrapped counter-clockwise around the sphere, starting on the left. Likewise, {{COLOR}} expects a similar function that accepts one index as an argument, but should return a three element list of colour values.
     
    573573
    574574==== Animated models
    575 Animated models are an opaque object similar to animated sprites, but for rigged models. Animated models are used with the same animation getting and setting functions as [[http://wiki.call-cc.org/eggref/4/hypergiant#animated-sprites|animated sprites]], i.e. {{current-animation}} and {{set-animation!}}. Animations suitable for animated models are created when loading IQM files containing animations (which can be referenced with {{iqm-animations}}).
     575Animated models are an opaque object similar to animated sprites, but for rigged models. Animated models are used with the same animation getting and setting functions as [[https://wiki.call-cc.org/egg/hypergiant#animated-sprites|animated sprites]], i.e. {{current-animation}} and {{set-animation!}}. Animations suitable for animated models are created when loading IQM files containing animations (which can be referenced with {{iqm-animations}}).
    576576
    577577<procedure> (add-new-animated-model PARENT PIPELINE mesh: MESH base-animation: BASE-ANIMATION . ARGS)</procedure>
     
    585585
    586586==== Particle system
    587 Hypergiant’s particle system is implemented as an extension to Hyperscene. It introduces two concepts: ''emitters'' and ''particles''. Emitters are a record that is created when added to a scene (via {{add-emitter}}), similar to a node. These records contain a reference to the node that is used to move them around the scene. Emitters also share properties with [[http://wiki.call-cc.org/eggref/4/gl-utils#gl-utils-mesh|meshes]]. A component of the emitter is essentially a mesh where each vertex corresponds to a particle, and the same attribute system is shared with meshes.
     587Hypergiant’s particle system is implemented as an extension to Hyperscene. It introduces two concepts: ''emitters'' and ''particles''. Emitters are a record that is created when added to a scene (via {{add-emitter}}), similar to a node. These records contain a reference to the node that is used to move them around the scene. Emitters also share properties with [[https://wiki.call-cc.org/egg/gl-utils#gl-utils-mesh|meshes]]. A component of the emitter is essentially a mesh where each vertex corresponds to a particle, and the same attribute system is shared with meshes.
    588588
    589589Emitters are used to “emit” a number of particles. These particles are created and updated via the {{for-emitter}} macro.
     
    617617Add a new emitter to the node or scene {{PARENT}}, returning an emitter record. {{PIPELINE}} is the render-pipeline used to render the emitter.
    618618
    619 {{ATTRIBUTES}} is a list of the kind that would be passed as the {{ATTRIBUTES}} argument in [[http://api.call-cc.org/doc/gl-utils/make-mesh|make-mesh]], a list in the form:
     619{{ATTRIBUTES}} is a list of the kind that would be passed as the {{ATTRIBUTES}} argument in [[https://api.call-cc.org/5/doc/gl-utils/make-mesh|make-mesh]], a list in the form:
    620620
    621621    (NAME TYPE N [normalized: NORMALIZED])
     
    625625These attributes correspond to the properties of each particle. All emitters are given the attribute {{(position #:float 3)}}, so {{ATTRIBUTES}} is used to define any attributes beyond this default one.
    626626
    627 {{N-PARTICLES}} is a required argument, which defines the maximum number of particles that the emitter may create. {{POSITION}} is used to define the initial position of the emitter, while {{RADIUS}} is used to define the radius of its bounding sphere. Unlike most nodes, the radius of the bounding sphere of an emitter cannot be meaningfully changed after it is created, so make sure to properly initialize it. As with {{add-node}}, {{UNIFORM-ARGS}} is the set of other keywords used to set the value for each uniform in the pipeline, as required by the [[http://wiki.call-cc.org/eggref/4/glls#renderables|glls renderable]] makers, specific to the {{PIPELINE}} that is used.
     627{{N-PARTICLES}} is a required argument, which defines the maximum number of particles that the emitter may create. {{POSITION}} is used to define the initial position of the emitter, while {{RADIUS}} is used to define the radius of its bounding sphere. Unlike most nodes, the radius of the bounding sphere of an emitter cannot be meaningfully changed after it is created, so make sure to properly initialize it. As with {{add-node}}, {{UNIFORM-ARGS}} is the set of other keywords used to set the value for each uniform in the pipeline, as required by the [[https://wiki.call-cc.org/egg/glls#renderables|glls renderable]] makers, specific to the {{PIPELINE}} that is used.
    628628
    629629<procedure> (delete-emitter EMITTER)</procedure>
     
    647647
    648648==== Text
    649 Hypergiant reexports all of [[http://wiki.call-cc.org/eggref/4/gl-type|gl-type]] with no modifications. The following utilities are additionally provided:
     649Hypergiant reexports all of [[https://wiki.call-cc.org/egg/gl-type|gl-type]] with no modifications. The following utilities are additionally provided:
    650650
    651651<procedure> (update-string-mesh! MESH NODE STRING FACE)</procedure>
    652652
    653 Used to modify an existing string mesh, this is similar to calling [[http://api.call-cc.org/doc/gl-type/string-mesh|{{string-mesh}}]] with the {{mesh:}} argument, but additionally updates the {{NODE}}’s renderable to properly display the new {{STRING}}. {{MESH}} should be a mesh that was created with {{string-mesh}}. When the mesh’s VAO is created, it must have a non-static usage (i.e. setting {{add-node}}’s {{usage:}} keyword to {{#:dynamic}} or {{#:stream}}). {{NODE}} is a node associated with that mesh, which must have been created with a render-pipeline. {{FACE}} is a font face created with [[http://api.call-cc.org/doc/gl-type/load-face|{{load-face}}]]. The number of graphical characters (non-whitespace characters in the char-set of {{FACE}}) in {{STRING}} must be equal to or less than the number of graphical characters in the string used to create {{MESH}}.
     653Used to modify an existing string mesh, this is similar to calling [[https://api.call-cc.org/5/doc/gl-type/string-mesh|{{string-mesh}}]] with the {{mesh:}} argument, but additionally updates the {{NODE}}’s renderable to properly display the new {{STRING}}. {{MESH}} should be a mesh that was created with {{string-mesh}}. When the mesh’s VAO is created, it must have a non-static usage (i.e. setting {{add-node}}’s {{usage:}} keyword to {{#:dynamic}} or {{#:stream}}). {{NODE}} is a node associated with that mesh, which must have been created with a render-pipeline. {{FACE}} is a font face created with [[https://api.call-cc.org/5/doc/gl-type/load-face|{{load-face}}]]. The number of graphical characters (non-whitespace characters in the char-set of {{FACE}}) in {{STRING}} must be equal to or less than the number of graphical characters in the string used to create {{MESH}}.
     654
     655<procedure> (make-string-mesh N-CHARS)</procedure>
     656
     657Creates a mesh similar to those created by [[https://api.call-cc.org/5/doc/gl-type/string-mesh|{{string-mesh}}]] with space reserved for N-CHARS. Intended to be used with {{update-string-mesh!}}.
    654658
    655659
     
    666670<procedure> (color-b COLOR)</procedure>
    667671<procedure> (color-a COLOR)</procedure>
    668 <procedure> (set-color-r! COLOR)</procedure>
    669 <procedure> (set-color-g! COLOR)</procedure>
    670 <procedure> (set-color-b! COLOR)</procedure>
    671 <procedure> (set-color-a! COLOR)</procedure>
     672<procedure> (set-color-r! COLOR R)</procedure>
     673<procedure> (set-color-g! COLOR G)</procedure>
     674<procedure> (set-color-b! COLOR B)</procedure>
     675<procedure> (set-color-a! COLOR A)</procedure>
     676<procedure> (rgb-color-set! COLOR R G B)</procedure>
     677<procedure> (rgba-color-set! COLOR R G B A)</procedure>
    672678
    673679Getters and setters for colors. {{color-a}} and {{set-color-a!}} can only be used with 4 element (alpha) colors.
     680
     681<procedure> (rgb-color-set-color! COLOR COLOR2)</procedure>
     682<procedure> (rgba-color-set-color! COLOR COLOR2)</procedure>
     683
     684Set the given {{COLOR}} to the values of {{COLOR2}}.
    674685
    675686<constant> black</constant>
     
    680691
    681692==== Math
    682 Hypergiant reexports all of [[http://wiki.call-cc.org/eggref/4/gl-math|gl-math]] with no modifications. The following math functions are additionally provided:
     693Hypergiant reexports all of [[https://wiki.call-cc.org/egg/gl-math|gl-math]] with no modifications. The following math functions are additionally provided:
    683694
    684695<procedure> (random-normal [MEAN] [VARIANCE])</procedure>
     
    700711
    701712===== Vector operations
    702 The following operate on the 3 element vectors ([[http://wiki.call-cc.org/eggref/4/gl-math#vector-operations|{{point}}s]]) defined in gl-math.
     713The following operate on the 3 element vectors ([[https://wiki.call-cc.org/egg/gl-math#vector-operations|{{point}}s]]) defined in gl-math.
    703714
    704715<procedure> (vclamp VECTOR LOWER UPPER [NON-GC?])</procedure>
     
    720731
    721732=== Examples
    722 See the [[https://github.com/AlexCharlton/Hypergiant/tree/master/examples|examples directory]] for several examples that use Hypergiant.
     733See the [[https://www.upyum.com/cgit.cgi/hypergiant/tree/examples|examples directory]] for several examples that use Hypergiant.
    723734
    724735The following example shows the creation and addition of a multi-coloured square to a scene:
    725736
    726737<enscript highlight="scheme">   
    727 (import chicken scheme)
    728 (use hypergiant)
     738(import scheme (chicken base) hypergiant)
    729739
    730740(define scene (make-parameter #f))
     
    788798
    789799=== Source repository
    790 Source available on [[https://github.com/AlexCharlton/hypergiant|GitHub]].
    791 
    792 Bug reports and patches welcome! Bugs can be reported via GitHub or to alex.n.charlton at gmail.
    793 
    794 
    795 === Author
     800Source available [[https://www.upyum.com/cgit.cgi/hypergiant/|here]]
     801
     802Bug reports and patches welcome! Bugs can be reported to kooda@upyum.com
     803
     804
     805=== Authors
    796806Alex Charlton
     807
     808Adrien (Kooda) Ramos
    797809
    798810
    799811=== License
    800812BSD-2-Clause
     813
Note: See TracChangeset for help on using the changeset viewer.