Module graphics3d - A library for programming simple 3D graphics in occam-pi

A library for programming simple 3D graphics in occam-pi.

This library provides for simple 3D graphics in occam-pi, using simple rasters.

Note: the general [serial] techniques/algorithms used in this library are based on code from lightsrc.cpp and glenz.cpp by Marcus Lindblom.

Index

Declarations

graphics3d.occ:95Process flatpolypoints.generator

PROC flatpolypoints.generator (CHAN INT trigger?, VAL INT npoints, VAL REAL32 rad, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Flat 3D polygon generator. Generates a regular N-sided polygon in 3D space (laying down flat by default).

Parameters:

CHAN INT trigger Trigger channel.
VAL INT npoints Number of points.
VAL REAL32 rad Radius (of points from centre).
CHAN MOBILE []G3D.POINT3 out Generated points.
CHAN G3D.GEN.CONTROL ctrl Control channel.

graphics3d.occ:190Process cogpoints.generator

PROC cogpoints.generator (CHAN INT trigger?, VAL INT nteeth, VAL REAL32 i.rad, o.rad, i.ang, o.ang, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Cog points generator. Generates a stream of points that represent a cog in 3D space (laying down flat by default).

Parameters:

CHAN INT trigger Trigger channel.
VAL INT nteeth Number of teeth on the cog.
VAL REAL32 i.rad Inner radius (where teeth start).
VAL REAL32 o.rad Outer raduis (where teeth end).
VAL REAL32 i.ang Inner tooth angle (between teeth bottoms).
VAL REAL32 o.ang Outer tooth angle (of teeth ends).
CHAN MOBILE []G3D.POINT3 out Generated points.
CHAN G3D.GEN.CONTROL ctrl Control channel.

graphics3d.occ:295Process cubepoints.generator

PROC cubepoints.generator (CHAN INT trigger?, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Cube point generator. Generates a constant stream of points that represent a cube in 3D space.

Parameters:

CHAN INT trigger Trigger channel.
CHAN MOBILE []G3D.POINT3 out Points generated.
CHAN G3D.GEN.CONTROL ctrl Control channel.

graphics3d.occ:379Process fbypoints.generator

PROC fbypoints.generator (CHAN INT trigger?, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Inmos butterfly logo generator. The pixel positions were generated by tracing from an Inmos promotional video showing the butterflies running on a Transputer network.

Parameters:

CHAN INT trigger Trigger channel.
CHAN MOBILE []G3D.POINT3 out Points generated.
CHAN G3D.GEN.CONTROL ctrl Control channel.

graphics3d.occ:570Process points3d.rotate

PROC points3d.rotate (CHAN MOBILE []G3D.POINT3 in?, out!, CHAN G3D.ROT.CONTROL ctrl?)

Point rotator. Rotates an arbitrary set of points around the origin, such that it passes through the same sequence of moves repeatedly (e.g. for a spinning cube). Can also be used for static rotation when set with a zero increment.

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT3 out 3D points out.
CHAN G3D.ROT.CONTROL ctrl Control channel.

graphics3d.occ:703Process points3d.translate

PROC points3d.translate (CHAN MOBILE []G3D.POINT3 in?, out!, CHAN G3D.TRN.CONTROL ctrl?)

Point translator. Translates an arbitrary set of points in 3D space.

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT3 out 3D points out.
CHAN G3D.TRN.CONTROL ctrl Control channel.

graphics3d.occ:742Process points3d.scale

PROC points3d.scale (CHAN MOBILE []G3D.POINT3 in?, out!, CHAN G3D.SCL.CONTROL ctrl?)

Point scaler. Scales an arbitrary set of points in 3D space.

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT3 out 3D points out.
CHAN G3D.SCL.CONTROL ctrl Control channel.

graphics3d.occ:1041Process points3d.transrotate

PROC points3d.transrotate (CHAN MOBILE []G3D.POINT3 in?, out!, G3D.SCENE.TRANS? ctrl)

Performs translation and rotation on 3D points (used in camera/scene handling).

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT3 out 3D points out.
G3D.SCENE.TRANS? ctrl Control channel-bundle end.

graphics3d.occ:1055Process points3d.transrotate.prj

PROC points3d.transrotate.prj (CHAN MOBILE []G3D.POINT3 in?, out!, G3D.SCENE.TRANS? ctrl, CHAN G3D.PRJ.CONTROL prj.in?, prj.out!)

Performs translation and rotation on 3D points (used in camera/scene handling).

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT3 out 3D points out.
G3D.SCENE.TRANS? ctrl Control channel-bundle end.
CHAN G3D.PRJ.CONTROL prj.in Projector control in.
CHAN G3D.PRJ.CONTROL prj.out Projector control out.

graphics3d.occ:1064Process g3d.scene.head

PROC g3d.scene.head (G3D.SCENE.TRANS? ctrl)

Provides a scene "head", for combined rotation/translation/etc.

Parameters:

G3D.SCENE.TRANS? ctrl Control channel-end.

graphics3d.occ:1190Process g3d.scene.spawn

PROC g3d.scene.spawn (RESULT G3D.SCENE.TRANS! rctl)

Dynamically spawns a new scene head.

Parameters:

RESULT G3D.SCENE.TRANS! rctl Returned control channel-end.

graphics3d.occ:1205Process g3d.scene.camera

PROC g3d.scene.camera (CHAN RASTER.EVENT ev.in?, CHAN G3D.SCENE.TRANS! sc.in?, G3D.SCENE.TRANS! sc.ctl)

Implements a standard camera, controlled by the user.

Parameters:

CHAN RASTER.EVENT ev.in Raster events.
CHAN G3D.SCENE.TRANS! sc.in Scene control channel-ends in (added to chain).
G3D.SCENE.TRANS! sc.ctl Scene control channel-end.

graphics3d.occ:1361Process points.3d.to.2d3

PROC points.3d.to.2d3 (CHAN MOBILE []G3D.POINT3 in?, CHAN MOBILE []G3D.POINT2.3 out!, CHAN G3D.PRJ.CONTROL ctrl?, VAL INT width, height)

Projects 3D points into 2D, preserves Z information. Maps a set of 3D points down into a set of 2D points, preserving the Z depth information for later operations.

Parameters:

CHAN MOBILE []G3D.POINT3 in 3D points in.
CHAN MOBILE []G3D.POINT2.3 out 2D3 points out.
CHAN G3D.PRJ.CONTROL ctrl Control channel.
VAL INT width, height Display dimensions.

graphics3d.occ:1443Process flatpolify.points

PROC flatpolify.points (CHAN MOBILE []G3D.POINT2.3 in?, VAL INT npoints, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?)

Generates flat polygons from poly-points. Expects to receive ((npoints * 2) + 2) points at a time, and from these generates a set of polygons that represents a flat 3D regular polygon.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in.
VAL INT npoints Number of polygon points.
CHAN MOBILE []G3D.POLY out Polygons out.
CHAN G3D.PGN.CONTROL ctrl Control channel.

graphics3d.occ:1600Process cogify.points

PROC cogify.points (CHAN MOBILE []G3D.POINT2.3 in?, VAL INT nteeth, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?)

Generates cog polygons from cog-points. Expects to receive ((nteeth * 8) + 2) points at a time, and from these generates a set of polygons that represent a solid cog.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in.
VAL INT nteeth Number of cog teeth.
CHAN MOBILE []G3D.POLY out Polygons out.
CHAN G3D.PGN.CONTROL ctrl Control channel.

graphics3d.occ:1959Process cubify.points

PROC cubify.points (CHAN MOBILE []G3D.POINT2.3 in?, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?)

Generates cube polygons from cube points. Expects to receive 8 points at a time, and from these generates a set of polygons that represent a cube. Characteristics are controllable through the control channel (e.g. skip hidden surfaces).

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in (2D with Z-depth).
CHAN MOBILE []G3D.POLY out Polygons out.
CHAN G3D.PGN.CONTROL ctrl Control channel.

graphics3d.occ:1979Process flutterby.points

PROC flutterby.points (CHAN MOBILE []G3D.POINT2.3 in?, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?)

Generates polygons representing the Inmos style butterfly logo. Expects to receive 30 points at a time, and from these generates a set of polygons that represent the butterfly. Only the colour is controllable through the ctrl? channel.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in (2D with Z-depth).
CHAN MOBILE []G3D.POLY out Polygons out.
CHAN G3D.PGN.CONTROL ctrl Control channel.

graphics3d.occ:2317Process poly.scanlines

PROC poly.scanlines (CHAN MOBILE []G3D.POLY in?, CHAN MOBILE []G3D.POLY.SCAN out!, CHAN G3D.PSC.CONTROL ctrl?, VAL INT width, height)

Converts polygons to scan-line data. Expects to receive sets of polygons on its input, which it then transforms into a set of G3D.POLY.SCAN structures.

Parameters:

CHAN MOBILE []G3D.POLY in Polygons input.
CHAN MOBILE []G3D.POLY.SCAN out Scan-line data output.
CHAN G3D.PSC.CONTROL ctrl Control channel.
VAL INT width, height Display dimensions.

graphics3d.occ:2656Process render.polyscans

PROC render.polyscans (CHAN MOBILE []G3D.POLY.SCAN data?, G3D.RENDER.ENGINE? rlink.in, CHAN G3D.RDR.CONTROL ctrl?, VAL INT width, height)

Renders polygon scan-line data onto a raster.

Parameters:

CHAN MOBILE []G3D.POLY.SCAN data Polygon scan-line data input.
G3D.RENDER.ENGINE? rlink.in Raster I/O.
CHAN G3D.RDR.CONTROL ctrl Control channel.
VAL INT width, height Display dimensions.

graphics3d.occ:2676Process render.polyscans.trigger

PROC render.polyscans.trigger (CHAN MOBILE []G3D.POLY.SCAN data?, G3D.RENDER.ENGINE? rlink.in, CHAN G3D.RDR.CONTROL ctrl?, CHAN INT trigger!, VAL INT width, height)

Renders polygon scan-line data onto a raster, sends triggers back to generator process.

Parameters:

CHAN MOBILE []G3D.POLY.SCAN data Polygon scan-line data input.
G3D.RENDER.ENGINE? rlink.in Raster I/O.
CHAN G3D.RDR.CONTROL ctrl Control channel.
CHAN INT trigger Triggers for generator.
VAL INT width, height Display dimensions.

graphics3d.occ:2965Process render.polyframe

PROC render.polyframe (CHAN MOBILE []G3D.POLY data?, G3D.RENDER.ENGINE? rlink.in, CHAN G3D.RDR.CONTROL ctrl?, VAL INT width, height)

Renders polygons as a series of lines (wireframe).

Parameters:

CHAN MOBILE []G3D.POLY data Polygons input.
G3D.RENDER.ENGINE? rlink.in Raster I/O.
CHAN G3D.RDR.CONTROL ctrl Control channel.
VAL INT width, height Display dimensions.

graphics3d.occ:2980Process render.polyframe.trigger

PROC render.polyframe.trigger (CHAN MOBILE []G3D.POLY data?, G3D.RENDER.ENGINE? rlink.in, CHAN G3D.RDR.CONTROL ctrl?, CHAN INT trigger!, VAL INT width, height)

Renders polygons as a series of lines (wireframe).

Parameters:

CHAN MOBILE []G3D.POLY data Polygons input.
G3D.RENDER.ENGINE? rlink.in Raster I/O.
CHAN G3D.RDR.CONTROL ctrl Control channel.
CHAN INT trigger Generator trigger channel.
VAL INT width, height Display dimensions.

graphics3d.occ:2994Process raster.chain.head

PROC raster.chain.head (CHAN RASTER in?, G3D.RENDER.ENGINE! head, CHAN G3D.RENDER.ENGINE! new.link?, VAL BOOL fade)

Head of the raster render chain.

Parameters:

CHAN RASTER in Rasters in.
G3D.RENDER.ENGINE! head Head of raster render chain.
CHAN G3D.RENDER.ENGINE! new.link Channel on which new rendering engines are added.
VAL BOOL fade Whether to fade (TRUE) or clear (FALSE) rasters.

graphics3d.occ:3048Process raster.chain.tail

PROC raster.chain.tail (CHAN RASTER out!, G3D.RENDER.ENGINE? tail)

Tail of the raster render chain.

Parameters:

CHAN RASTER out Rasters out.
G3D.RENDER.ENGINE? tail Tail of raster render chain.

graphics3d.occ:3070Process raster.chain

PROC raster.chain (CHAN RASTER in?, out!, CHAN G3D.RENDER.ENGINE! new.link?, VAL BOOL fade)

Implements raster render chain.

Parameters:

CHAN RASTER in Rasters in.
CHAN RASTER out Rasters out.
CHAN G3D.RENDER.ENGINE! new.link Channel on which new rendering engines are added.
VAL BOOL fade Whether to fade (TRUE) or clear (FALSE) rasters.

graphics3d.occ:3093Process raster.polyidclick

PROC raster.polyidclick (CHAN RASTER in?, out!, CHAN RASTER.EVENT ev.in?, ev.out!, CHAN INT ids.out!, VAL INT dclk)

Connects into the raster chain and event pipeline to extract IDs (0-255) of polygons. Responds to single or double click.

Parameters:

CHAN RASTER in Rasters in.
CHAN RASTER out Rasters out.
CHAN RASTER.EVENT ev.in Events in.
CHAN RASTER.EVENT ev.out Events out.
CHAN INT ids.out Polygon IDs out (extracted from high 8 bits of the rendered pixel).
VAL INT dclk Double click time (0 = single click).

rasterutil.occ:30Process raster.buffer

PROC raster.buffer (CHAN RASTER in?, out!)

Simple raster buffer. Basic raster buffer process.

Parameters:

CHAN RASTER in Rasters in
CHAN RASTER out Rasters out

rasterutil.occ:46Process raster.timed.buffer

PROC raster.timed.buffer (CHAN RASTER in?, out!, VAL INT fps, CHAN G3D.TMR.CONTROL ctrl?)

Timed raster buffer. Basic raster buffer process, but limits speed through at specified number of frames-per-second.

Parameters:

CHAN RASTER in Rasters in
CHAN RASTER out Rasters out
VAL INT fps Frames per second
CHAN G3D.TMR.CONTROL ctrl Control channel

rasterutil.occ:104Process raster.fader

PROC raster.fader (CHAN RASTER in?, out!)

Fades rasters. Raster buffer that reduces the colour level of each of the components.

Parameters:

CHAN RASTER in Rasters in
CHAN RASTER out Rasters out

rasterutil.occ:126Process raster.clearer

PROC raster.clearer (CHAN RASTER in?, out!)

Clears rasters. Raster buffer that clears rasters as they go through.

Parameters:

CHAN RASTER in Rasters in
CHAN RASTER out Rasters out

graphics3d.inc:41Constant G3D.MAX.POLY.POINTS

VAL INT G3D.MAX.POLY.POINTS

Maximum number of points in a polygon (see G3D.POLY).

graphics3d.inc:44Constant G3D.MAX.SCAN.HEIGHT

VAL INT G3D.MAX.SCAN.HEIGHT

Maximum height of any particular polygon.

graphics3d.inc:46Group G3D.RENDER.MODE

polygon rendering modes.

graphics3d.inc:47Constant G3D.RENDER.MODE.NONE

VAL INT G3D.RENDER.MODE.NONE

Constant shading.

graphics3d.inc:48Constant G3D.RENDER.MODE.GLENZ

VAL INT G3D.RENDER.MODE.GLENZ

Glenz-effect shading.

graphics3d.inc:49Constant G3D.RENDER.MODE.NORM

VAL INT G3D.RENDER.MODE.NORM

Normal vector based shading.

graphics3d.inc:51Group G3D.ROTATE.MODE

point/polygon rotation modes.

graphics3d.inc:52Constant G3D.ROTATE.MODE.NONE

VAL INT G3D.ROTATE.MODE.NONE

No rotation.

graphics3d.inc:53Constant G3D.ROTATE.MODE.DEMO

VAL INT G3D.ROTATE.MODE.DEMO

Demo-effect rotations.

graphics3d.inc:54Constant G3D.ROTATE.MODE.X

VAL INT G3D.ROTATE.MODE.X

Rotate on X axis.

graphics3d.inc:55Constant G3D.ROTATE.MODE.NX

VAL INT G3D.ROTATE.MODE.NX

Negative rotate on X axis.

graphics3d.inc:56Constant G3D.ROTATE.MODE.Y

VAL INT G3D.ROTATE.MODE.Y

Rotate on Y axis.

graphics3d.inc:57Constant G3D.ROTATE.MODE.NY

VAL INT G3D.ROTATE.MODE.NY

Negative rotate on Y axis.

graphics3d.inc:58Constant G3D.ROTATE.MODE.Z

VAL INT G3D.ROTATE.MODE.Z

Rotate on Z axis.

graphics3d.inc:59Constant G3D.ROTATE.MODE.NZ

VAL INT G3D.ROTATE.MODE.NZ

Negative rotate on Z axis.

graphics3d.inc:65Record G3D.POINT3

DATA TYPE G3D.POINT3

Real point in 3D space (REAL32s).

graphics3d.inc:71Record G3D.POINT2.3

DATA TYPE G3D.POINT2.3

Integer point in 2D space, original Z multiplied up.

graphics3d.inc:77Record G3D.POINT2

DATA TYPE G3D.POINT2

Integer point in 2D space.

graphics3d.inc:84Record G3D.POLY

DATA TYPE G3D.POLY

General polygon in 2D space, orignal Z multiplied up.

graphics3d.inc:96Record G3D.POLY.SCAN

DATA TYPE G3D.POLY.SCAN

Scan-line converted polygon in 2D space.

graphics3d.inc:112Data type ZBUFFER

DATA TYPE ZBUFFER

Z-buffer is a 2D array of integers, passed around with rasters.

graphics3d.inc:120Protocol G3D.GEN.CONTROL

PROTOCOL G3D.GEN.CONTROL

Polygon points generator control.

graphics3d.inc:122Tag reset

reset

Reset generator to default state.

graphics3d.inc:123Tag add.scale

add.scale; [3]REAL32

Add to the current scale.

graphics3d.inc:124Tag set.scale

set.scale; [3]REAL32

Absolutely set the scale.

graphics3d.inc:125Tag add.trans

add.trans; [3]REAL32

Add to the current translation.

graphics3d.inc:126Tag set.trans

set.trans; [3]REAL32

Absolutely set the translation.

graphics3d.inc:131Protocol G3D.ROT.CONTROL

PROTOCOL G3D.ROT.CONTROL

Points rotation control.

graphics3d.inc:133Tag reset

reset

Reset rotation to default state.

graphics3d.inc:134Tag add.increment

add.increment; REAL32

Add to the increment.

graphics3d.inc:135Tag set.increment

set.increment; REAL32

Absolutely set the increment.

graphics3d.inc:136Tag set.angle

set.angle; REAL32

Absolutely set the angle of rotation.

graphics3d.inc:137Tag set.mode

set.mode; INT

Set the rotation mode (see G3D.ROTATE.MODE).

graphics3d.inc:141Protocol G3D.TRN.CONTROL

PROTOCOL G3D.TRN.CONTROL

Points translation control.

graphics3d.inc:143Tag reset

reset

Reset translation to default state (0, 0, 0).

graphics3d.inc:144Tag set.3dshift

set.3dshift; [3]REAL32

Set 3D translation.

graphics3d.inc:148Protocol G3D.SCL.CONTROL

PROTOCOL G3D.SCL.CONTROL

Points scaler control.

graphics3d.inc:150Tag reset

reset

Reset scale to default state (1, 1, 1)

graphics3d.inc:151Tag set.3dscale

set.3dscale; [3]REAL32

Set 3D scaling.

graphics3d.inc:155Protocol G3D.PRJ.CONTROL

PROTOCOL G3D.PRJ.CONTROL

Polygon points 3D-to-2D projection control.

graphics3d.inc:157Tag reset

reset

Reset projector to default state.

graphics3d.inc:158Tag set.scaling

set.scaling; [2]REAL32

Set 2D scaling.

graphics3d.inc:159Tag set.zdepth

set.zdepth; REAL32

Set Z depth offset (pushes scene away from camera).

graphics3d.inc:160Tag set.2dshift

set.2dshift; [2]INT

Set 2D translation.

graphics3d.inc:161Tag set.3dshift

set.3dshift; [3]REAL32

Set 3D translation (applied before projection).

graphics3d.inc:165Protocol G3D.PGN.CONTROL

PROTOCOL G3D.PGN.CONTROL

Polygon generator control.

graphics3d.inc:167Tag reset

reset

Reset polygon generator to default state.

graphics3d.inc:168Tag set.trimap

set.trimap; BOOL

Generate triangular polygons only.

graphics3d.inc:169Tag set.backfaces

set.backfaces; BOOL

Whether back faces of solid objects should be generated.

graphics3d.inc:170Tag set.face.colour

set.face.colour; INT; INT

Set individual face colour.

graphics3d.inc:171Tag set.face.colours

set.face.colours; MOBILE []INT

Set all face colours.

graphics3d.inc:172Tag set.polyid

set.polyid; INT

Set polygon ID (0-255).

graphics3d.inc:176Protocol G3D.PSC.CONTROL

PROTOCOL G3D.PSC.CONTROL

Polygon scan-line generator control.

graphics3d.inc:178Tag reset

reset

Resets scan-line generator to default state.

graphics3d.inc:179Tag set.zcolour

set.zcolour; BOOL

Whether the pixel colour used is adjusted for Z depth.

graphics3d.inc:183Protocol G3D.RDR.CONTROL

PROTOCOL G3D.RDR.CONTROL

Polygon render (shader) control.

graphics3d.inc:185Tag reset

reset

Resets shader to default state.

graphics3d.inc:186Tag set.mode

set.mode; INT

Set shader mode (see G3D.RENDER.MODE).

graphics3d.inc:190Protocol G3D.ALL.CONTROL

PROTOCOL G3D.ALL.CONTROL

Overall control for graphics pipeline.

graphics3d.inc:192Tag reset.all

reset.all

Reset all components to default state.

graphics3d.inc:196Protocol G3D.TMR.CONTROL

PROTOCOL G3D.TMR.CONTROL

Graphics pipeline speed control.

graphics3d.inc:198Tag reset

reset

Resets the timer control.

graphics3d.inc:199Tag pause

pause

Pause/unpause the rasters flowing through the network.

graphics3d.inc:200Tag faster

faster

Go faster.

graphics3d.inc:201Tag slower

slower

Go slower.

graphics3d.inc:202Tag set.fps

set.fps; INT

Set frames-per-second absolutely.

graphics3d.inc:217Channel type G3D.RENDER.ENGINE:

CHAN TYPE G3D.RENDER.ENGINE:

graphics3d.inc:228Channel type G3D.RENDER.ENGINE

CHAN TYPE G3D.RENDER.ENGINE

graphics3d.inc:236Group G3D.SCENE.RO

Scene rotation ordering.

graphics3d.inc:237Constant G3D.SCENE.RO.NONE

VAL INT G3D.SCENE.RO.NONE

No rotations applied

graphics3d.inc:238Constant G3D.SCENE.RO.X

VAL INT G3D.SCENE.RO.X

Rotate on X axis only.

graphics3d.inc:239Constant G3D.SCENE.RO.Y

VAL INT G3D.SCENE.RO.Y

Rotate on Y axis only.

graphics3d.inc:240Constant G3D.SCENE.RO.Z

VAL INT G3D.SCENE.RO.Z

Rotate on Z axis only.

graphics3d.inc:241Constant G3D.SCENE.RO.YX

VAL INT G3D.SCENE.RO.YX

Rotate on Y then X.

graphics3d.inc:242Constant G3D.SCENE.RO.ZX

VAL INT G3D.SCENE.RO.ZX

Rotate on Z then X.

graphics3d.inc:243Constant G3D.SCENE.RO.XY

VAL INT G3D.SCENE.RO.XY

Rotate on X then Y.

graphics3d.inc:244Constant G3D.SCENE.RO.ZY

VAL INT G3D.SCENE.RO.ZY

Rotate on Z then Y.

graphics3d.inc:245Constant G3D.SCENE.RO.XZ

VAL INT G3D.SCENE.RO.XZ

Rotate on X then Z.

graphics3d.inc:246Constant G3D.SCENE.RO.YZ

VAL INT G3D.SCENE.RO.YZ

Rotate on Y then Z.

graphics3d.inc:247Constant G3D.SCENE.RO.ZYX

VAL INT G3D.SCENE.RO.ZYX

Rotate on Z then Y then X.

graphics3d.inc:248Constant G3D.SCENE.RO.YZX

VAL INT G3D.SCENE.RO.YZX

Rotate on Y then Z then X.

graphics3d.inc:249Constant G3D.SCENE.RO.ZXY

VAL INT G3D.SCENE.RO.ZXY

Rotate on Z then X then Y.

graphics3d.inc:250Constant G3D.SCENE.RO.XZY

VAL INT G3D.SCENE.RO.XZY

Rotate on X then Z then Y.

graphics3d.inc:251Constant G3D.SCENE.RO.YXZ

VAL INT G3D.SCENE.RO.YXZ

Rotate on Y then X then Z.

graphics3d.inc:252Constant G3D.SCENE.RO.XYZ

VAL INT G3D.SCENE.RO.XYZ

Rotate on X then Y then Z.

graphics3d.inc:259Channel type G3D.SCENE.TRANS:

CHAN TYPE G3D.SCENE.TRANS:

graphics3d.inc:277Channel type G3D.SCENE.TRANS

CHAN TYPE G3D.SCENE.TRANS

g3dchess.occ:197Process chesspoints.generator

PROC chesspoints.generator (CHAN INT trigger?, VAL INT npoints, piece, VAL [][2]REAL32 profile, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Chess piece points generator.

Parameters:

CHAN INT trigger Trigger channel.
VAL INT npoints Number of points around the outside.
VAL INT piece Particular piece (defines how the topping is handled, see G3D.CP).
VAL [][2]REAL32 profile Y/rad pairs for the piece.
CHAN MOBILE []G3D.POINT3 out Generated points.
CHAN G3D.GEN.CONTROL ctrl Control channel.

g3dchess.occ:322Process chessboardpoints.generator

PROC chessboardpoints.generator (CHAN INT trigger?, VAL INT dim, VAL REAL32 width, height, CHAN MOBILE []G3D.POINT3 out!, CHAN G3D.GEN.CONTROL ctrl?)

Chess board points generator.

Parameters:

CHAN INT trigger Trigger channel.
VAL INT dim Number of squares along one edge.
VAL REAL32 width Width of each square.
VAL REAL32 height Height of the board.
CHAN MOBILE []G3D.POINT3 out Generated points.
CHAN G3D.GEN.CONTROL ctrl Control channel.

g3dchess.occ:343Process chessify.points

PROC chessify.points (CHAN MOBILE []G3D.POINT2.3 in?, VAL INT npoints, piece, VAL [][2]REAL32 profile, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?, CHAN BOOL hide?)

Generates chess-style polygons from points.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in.
VAL INT npoints Number of points around the base of the object.
VAL INT piece Particular piece (defines how the topping is handled, see G3D.CP).
VAL [][2]REAL32 profile Profile for the piece.
CHAN MOBILE []G3D.POLY out Polygons out.
CHAN G3D.PGN.CONTROL ctrl Control channel.
CHAN BOOL hide Hide control channel.

g3dchess.occ:739Process chessboardify.points

PROC chessboardify.points (CHAN MOBILE []G3D.POINT2.3 in?, VAL INT dim, CHAN MOBILE []G3D.POLY out!, CHAN G3D.PGN.CONTROL ctrl?)

Turns chessboard points into polygons.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in.
VAL INT dim Number of squares along one edge.
CHAN MOBILE []G3D.POLY out Generated points.
CHAN G3D.PGN.CONTROL ctrl Control channel.

g3dchess.occ:764Process chesspiece.network

PROC chesspiece.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, piece, npoints, bdim, VAL REAL32 sqw, bh, G3DC.PIECE.CTL? svr, G3D.SCENE.TRANS? sct)

Implements a basic chess piece (zdepth style).

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL INT piece Particular piece (see G3D.CP).
VAL INT npoints Number of points around the circumference.
VAL INT bdim Board dimension.
VAL REAL32 sqw Board square width.
VAL REAL32 bh Board height.
G3DC.PIECE.CTL? svr Piece control channel-end.
G3D.SCENE.TRANS? sct Scene transform control channel-end.

g3dchess.occ:915Process chesspiece.network.spawn

PROC chesspiece.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!, VAL INT piece, npoints, bdim, VAL REAL32 sqw, bh, RESULT G3DC.PIECE.CTL! pctl, RESULT G3D.SCENE.TRANS! sti)

Dynamically spawns a new 'chesspiece.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.
VAL INT piece Particular piece (see G3D.CP).
VAL INT npoints Number of points around the circumference.
VAL INT bdim Board dimension.
VAL REAL32 sqw Board square width.
VAL REAL32 bh Board height.
RESULT G3DC.PIECE.CTL! pctl Piece control channel-end (returned).
RESULT G3D.SCENE.TRANS! sti Returned scene transform client channel-end.

g3dchess.occ:941Process chessboard.network

PROC chessboard.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, dim, polyid, VAL REAL32 sqw, bh, G3D.SCENE.TRANS? sct)

Implements a basic chess board (zdepth style).

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL INT dim Board dimension.
VAL INT polyid Polygon id (0-255 or +256 for incrementing).
VAL REAL32 sqw Width of each square.
VAL REAL32 bh Board height.
G3D.SCENE.TRANS? sct Scene transform control.

g3dchess.occ:981Process chessboard.network.spawn

PROC chessboard.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!, VAL INT dim, polyid, VAL REAL32 sqw, bh, RESULT G3D.SCENE.TRANS! sti)

Spawns a new 'chessboard.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.
VAL INT dim Board dimension.
VAL INT polyid Polygon id (0-255 or +256 for incrementing).
VAL REAL32 sqw Size of each square.
VAL REAL32 bh Board height.
RESULT G3D.SCENE.TRANS! sti Returned scene-transform client channel-end.

g3dutil.occ:32Process g3d.point3.delta

PROC g3d.point3.delta (CHAN MOBILE []G3D.POINT3 in?, out.0!, out.1!)

Delta for mobile arrays of the G3D.POINT3 type.

Parameters:

CHAN MOBILE []G3D.POINT3 in Points in.
CHAN MOBILE []G3D.POINT3 out.0 Points out.
CHAN MOBILE []G3D.POINT3 out.1 Points out.

g3dutil.occ:49Process g3d.point2.3.delta

PROC g3d.point2.3.delta (CHAN MOBILE []G3D.POINT2.3 in?, out.0!, out.1!)

Delta for mobile arrays of the G3D.POINT2.3 type.

Parameters:

CHAN MOBILE []G3D.POINT2.3 in Points in.
CHAN MOBILE []G3D.POINT2.3 out.0 Points out.
CHAN MOBILE []G3D.POINT2.3 out.1 Points out.

g3dutil.occ:65Process g3d.point2.delta

PROC g3d.point2.delta (CHAN MOBILE []G3D.POINT2 in?, out.0!, out.1!)

Delta for mobile arrays of the G3D.POINT2 type.

Parameters:

CHAN MOBILE []G3D.POINT2 in Points in.
CHAN MOBILE []G3D.POINT2 out.0 Points out.
CHAN MOBILE []G3D.POINT2 out.1 Points out.

g3dutil.occ:81Process g3d.poly.delta

PROC g3d.poly.delta (CHAN MOBILE []G3D.POLY in?, out.0!, out.1!)

Delta for mobile arrays of the G3D.POLY type.

Parameters:

CHAN MOBILE []G3D.POLY in Polygons in.
CHAN MOBILE []G3D.POLY out.0 Polygons out.
CHAN MOBILE []G3D.POLY out.1 Polygons out.

g3dutil.occ:97Process g3d.poly.scan.delta

PROC g3d.poly.scan.delta (CHAN MOBILE []G3D.POLY.SCAN in?, out.0!, out.1!)

Delta for mobile arrays of the G3D.POLY.SCAN type.

Parameters:

CHAN MOBILE []G3D.POLY.SCAN in Polygon scans in.
CHAN MOBILE []G3D.POLY.SCAN out.0 Polygon scans out.
CHAN MOBILE []G3D.POLY.SCAN out.1 Polygon scans out.

g3dutil.occ:114Process g3d.gen.control.delta

PROC g3d.gen.control.delta (CHAN G3D.GEN.CONTROL in?, out.0!, out.1!)

Delta for G3D.GEN.CONTROL protocol.

Parameters:

CHAN G3D.GEN.CONTROL in Commands in.
CHAN G3D.GEN.CONTROL out.0 Commands out.
CHAN G3D.GEN.CONTROL out.1 Commands out.

g3dutil.occ:150Process g3d.rot.control.delta

PROC g3d.rot.control.delta (CHAN G3D.ROT.CONTROL in?, out.0!, out.1!)

Delta for G3D.ROT.CONTROL protocol.

Parameters:

CHAN G3D.ROT.CONTROL in Commands in.
CHAN G3D.ROT.CONTROL out.0 Commands out.
CHAN G3D.ROT.CONTROL out.1 Commands out.

g3dutil.occ:186Process g3d.prj.control.delta

PROC g3d.prj.control.delta (CHAN G3D.PRJ.CONTROL in?, out.0!, out.1!)

Delta for G3D.PRJ.CONTROL protocol.

Parameters:

CHAN G3D.PRJ.CONTROL in Commands in.
CHAN G3D.PRJ.CONTROL out.0 Commands out.
CHAN G3D.PRJ.CONTROL out.1 Commands out.

g3dutil.occ:222Process g3d.pgn.control.delta

PROC g3d.pgn.control.delta (CHAN G3D.PGN.CONTROL in?, out.0!, out.1!)

Delta for G3D.PGN.CONTROL protocol.

Parameters:

CHAN G3D.PGN.CONTROL in Commands in.
CHAN G3D.PGN.CONTROL out.0 Commands out.
CHAN G3D.PGN.CONTROL out.1 Commands out.

g3dutil.occ:258Process g3d.psc.control.delta

PROC g3d.psc.control.delta (CHAN G3D.PSC.CONTROL in?, out.0!, out.1!)

Delta for G3D.PSC.CONTROL protocol.

Parameters:

CHAN G3D.PSC.CONTROL in Commands in.
CHAN G3D.PSC.CONTROL out.0 Commands out.
CHAN G3D.PSC.CONTROL out.1 Commands out.

g3dutil.occ:274Process g3d.rdr.control.delta

PROC g3d.rdr.control.delta (CHAN G3D.RDR.CONTROL in?, out.0!, out.1!)

Delta for G3D.RDR.CONTROL protocol.

Parameters:

CHAN G3D.RDR.CONTROL in Commands in.
CHAN G3D.RDR.CONTROL out.0 Commands out.
CHAN G3D.RDR.CONTROL out.1 Commands out.

g3dnets.occ:35Process rotate.orchestra1

PROC rotate.orchestra1 (CHAN G3D.ROT.CONTROL rot.out!)

Orchestrates components.

Parameters:

CHAN G3D.ROT.CONTROL rot.out Rotation control out.

g3dnets.occ:71Process planar.path

PROC planar.path (CHAN G3D.PRJ.CONTROL out!, VAL REAL32 xrad, zrad, pangle, iangle, VAL INT islow, VAL [3]REAL32 pos)

Moves a 3D object around a plane following an elliptical path.

Parameters:

CHAN G3D.PRJ.CONTROL out Projection control.
VAL REAL32 xrad X-radius of path.
VAL REAL32 zrad Z-radius of path.
VAL REAL32 pangle Tilt in XY plane of the path.
VAL REAL32 iangle Tilt in XZ plane of the path.
VAL INT islow Slow-down setting
VAL [3]REAL32 pos Initial position.

g3dnets.occ:101Process glenz.network

PROC glenz.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height)

Implements a basic "Glenz cube".

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.

g3dnets.occ:139Process glenz.network.spawn

PROC glenz.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'glenz.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:155Process normal.network

PROC normal.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height)

Implements a basic "Normal cube".

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.

g3dnets.occ:193Process normal.network.spawn

PROC normal.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'normal.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:209Process glenz.network2

PROC glenz.network2 (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height)

Implements a basic "Glenz cube".

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.

g3dnets.occ:252Process glenz.network2.spawn

PROC glenz.network2.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'glenz.network2'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:268Process normal.network2

PROC normal.network2 (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height)

Implements a basic "Glenz cube".

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.

g3dnets.occ:309Process normal.network2.spawn

PROC normal.network2.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'normal.network2'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:325Process screen.cube

PROC screen.cube (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height)

Implements an on-screen cube showing the image boundary

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.

g3dnets.occ:358Process screen.cube.spawn

PROC screen.cube.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'screen.cube'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:375Process butterfly.network

PROC butterfly.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, VAL BOOL rpix)

Implements a butterfly that flaps around a particular path.

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL BOOL rpix Random initial placement.

g3dnets.occ:476Process butterfly.network.spawn

PROC butterfly.network.spawn (VAL INT width, height, VAL BOOL rpix, CHAN G3D.RENDER.ENGINE! new.link!)

Dynamically spawns a new 'butterfly.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
VAL BOOL rpix Random initial placement.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.

g3dnets.occ:497Process glenz.cog.network

PROC glenz.cog.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, nteeth, VAL REAL32 i.rad, o.rad, i.ang, o.ang)

Implements a basic "Glenz cog".

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL INT nteeth Number of teeth.
VAL REAL32 i.rad Inner radius.
VAL REAL32 o.rad Outer radius.
VAL REAL32 i.ang Inner angle.
VAL REAL32 o.ang Outer angle.

g3dnets.occ:541Process glenz.cog.network.spawn

PROC glenz.cog.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!, VAL INT nteeth, VAL REAL32 i.rad, o.rad, i.ang, o.ang)

Dynamically spawns a new 'glenz.cog.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.
VAL INT nteeth Number of teeth.
VAL REAL32 i.rad Inner radius.
VAL REAL32 o.rad Outer radius.
VAL REAL32 i.ang Inner angle.
VAL REAL32 o.ang Outer angle.

g3dnets.occ:559Process glenz.flatpoly.network

PROC glenz.flatpoly.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, npoints, VAL REAL32 rad)

Implements a basic regular polygon (glenz style).

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL INT npoints Number of points.
VAL REAL32 rad Radius.

g3dnets.occ:600Process glenz.flatpoly.network.spawn

PROC glenz.flatpoly.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!, VAL INT npoints, VAL REAL32 rad)

Dynamically spawns a new 'glenz.flatpoly.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.
VAL INT npoints Number of points
VAL REAL32 rad Radius.

g3dnets.occ:618Process zdepth.flatpoly.network

PROC zdepth.flatpoly.network (G3D.RENDER.ENGINE? rlink.in, VAL INT width, height, npoints, VAL REAL32 rad)

Implements a basic regular polygon (zdepth style).

Parameters:

G3D.RENDER.ENGINE? rlink.in Render link.
VAL INT width Width of raster.
VAL INT height Height of raster.
VAL INT npoints Number of points.
VAL REAL32 rad Radius.

g3dnets.occ:660Process zdepth.flatpoly.network.spawn

PROC zdepth.flatpoly.network.spawn (VAL INT width, height, CHAN G3D.RENDER.ENGINE! new.link!, VAL INT npoints, VAL REAL32 rad)

Dynamically spawns a new 'zdepth.flatpoly.network'.

Parameters:

VAL INT width Raster width.
VAL INT height Raster height.
CHAN G3D.RENDER.ENGINE! new.link Channel to communicate new object link.
VAL INT npoints Number of points
VAL REAL32 rad Radius.