Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

SH Namespace Reference

The main Sh namespace. More...


Classes

struct  SH::ShArrayTraits
 Default traits for ShArray. More...

class  SH::ShArray1D< T >
 One-dimensional array. More...

class  SH::ShArray2D< T >
 Two-dimensional square power-of-two array. More...

class  SH::ShArrayRect< T >
 Two-dimensional non-square array. More...

class  SH::ShArray3D< T >
 Three-dimensional array. More...

class  SH::ShArrayCube< T >
 Cube array. More...

class  SH::ShAttrib< N, Binding, T, Swizzled >
 A generic attribute (or parameter) holding N values. More...

class  SH::ShBaseTexture1D< T >
 Base type for 1D Textures. More...

class  SH::ShBaseTexture2D< T >
 Base type for 2D Textures. More...

class  SH::ShBaseTextureRect< T >
 Base type for Rectangular Textures. More...

class  SH::ShBaseTexture3D< T >
 Base type for 3D Textures. More...

class  SH::ShBaseTextureCube< T >
 Base type for Cube Textures. More...

class  SH::ShBasicBlock
 A basic block. More...

class  SH::ShBitSet
 A bitset. More...

class  SH::ShBlock
 A generic block or token. More...

class  SH::ShBlockList
 A list of generic blocks. More...

class  SH::ShChannel< T >
 The client interface to a single-channel typed data stream. More...

class  SH::ShClamped< T >
 Set Clamp trait in Texture type. More...

class  SH::ShUnclamped< T >
 Reset Clamp trait in Texture type. More...

class  SH::ShColor< N, Binding, T, Swizzled >
 An n-color. More...

class  SH::ShCtrlGraphNode
 A node in the control graph. More...

class  SH::ShCtrlGraph
 A control-flow graph. More...

class  SH::ShDomTree
 A dominator tree in a flowgraph. More...

class  SH::ShEnvironment
 Global settings for the current program. More...

class  SH::ShException
 A generic exception. More...

class  SH::ShParseException
 An exception representing a parse error. More...

class  SH::ShScopeException
 An exception representing a scoping violation. More...

class  SH::ShImageException
 An exception relating to an ShImage operation. More...

class  SH::ShAlgebraException
 An exception relating to an ShAlgebra operation. More...

class  SH::ShOptimizerException
 An exception relating to an ShOptimizer operation. More...

class  SH::ShTransformerException
 An exception relating to an ShTransformer operation. More...

class  SH::ShBackendException
 An exception relating to an ShBackend operation. More...

class  SH::ShFixedManipulatorNode
 A ShFixedManipulator is a ShProgram output manipulator. More...

class  SH::ShGeneric< N, T >
 A variable of length N. More...

class  SH::ShImage
 An image, consisting of a rectangle of floating-point elements. More...

class  SH::ShImage3D
 A 3D image. More...

class  SH::ShInterp< L, T >
 Set Interpolation level in Texture type. More...

class  SH::ShLinearAllocator
 A simple, basic-block based linear register allocator. More...

struct  SH::storage_trait< T >
 A type trait class that determines storage type used for T in a ShManipulator. There must be an automatic conversion from T to StorageType or an applicable copy constructor. The storage type also must be responsible for its own memory management as the code often uses shallow copies of ranges/range vectors. More...

class  SH::ShManipulator< T >
 A ShManipulator is a ShProgram output manipulator. This kind of manipulator permutes the outputs of a ShProgram based on given integer indices. More...

class  SH::ShMatrix< Rows, Cols, Binding, T >
 A matrix of Rows by Cols elements. More...

class  SH::ShMatrixRows< Rows, Cols, T >
 A few rows from a matrix. More...

class  SH::ShMemory
 A memory object. More...

class  SH::ShTransfer
 A Storage Transfer function. More...

class  SH::ShStorage
 A Storage object Storage represents actual, physical storage of some memory's contents. More...

class  SH::ShHostStorage
 An ShStorage representing data stored on the CPU host memory. More...

class  SH::ShHostMemory
 An ShMemory initially originating in CPU host memory. More...

class  SH::ShNormal< N, Binding, T, Swizzled >
 An n-normal. More...

class  SH::ShParser
 Recursive-descent parser for control structures. More...

class  SH::ShPoint< N, Binding, T, Swizzled >
 An n-point. More...

class  SH::ShPosition< N, Binding, T, Swizzled >
 A vertex or fragment position. More...

class  SH::ShProgram
 Thin wrapper around ShProgramNode. More...

class  SH::ShProgramNode
 A particular Sh program. More...

class  SH::ShQuaternion< B, T >
 A Quaternion. More...

class  SH::ShRefCountable
 A class which can be reference-counted. More...

class  SH::ShPointer< T >
 A reference-counting smart pointer. More...

struct  SH::ShOperationInfo
 Information related to a specific operation. More...

class  SH::ShStatementInfo
 Dummy class representing additional information that can be stored in statements. More...

class  SH::ShStatement
 A single statement. More...

class  SH::ShStream
 Dynamic list of channels. More...

class  SH::ShSwizzle
 Represents swizzling of a variable. More...

class  SH::ShSwizzleException
 Thrown when an invalid swizzle is specified (e.g. More...

class  SH::ShTexCoord< N, Binding, T, Swizzled >
 A texture coordinate. More...

struct  SH::ShFilteredTextureTraits
 Trait class to represent texture filtering modes. More...

class  SH::ShTexture1D< T >
 One-dimensional power-of-two texture type. More...

class  SH::ShTexture2D< T >
 Two-dimensional square power-of-two texture type. More...

class  SH::ShTextureRect< T >
 Two-dimensional rectangular texture type. More...

class  SH::ShTexture3D< T >
 Three-dimensional texture type. More...

class  SH::ShTextureCube< T >
 Cubic texture type. More...

class  SH::ShTextureTraits
 Texture traits. More...

class  SH::ShToken
 A token in the (unparsed) parse tree. More...

struct  SH::ShTokenArgument
 A token argument, e.g. to SH_IF or SH_FOR. More...

class  SH::ShTokenizerException
 An exception indicating a tokenizer error. More...

class  SH::ShTokenizer
 A tokenizer. More...

class  SH::ShTransformer
 Program transformer. More...

struct  SH::ShCompileTimeChecker< B >
 Check a boolean condition at compile time. More...

class  SH::ShVariable
 A reference and interface to a generic n-tuple variable. More...

class  SH::ShVariableNode
 A generic n-tuple variable. More...

class  SH::ShVector< N, Binding, T, Swizzled >
 A (geometric) n-vector. More...

class  SH::ShWrapClamp< T >
 Set WrapClamp trait in Texture type. More...

class  SH::ShWrapClampToEdge< T >
 Set WrapClampToEdge trait in Texture type. More...

class  SH::ShWrapRepeat< T >
 Set WrapRepeat trait in Texture type. More...


[NOHEADER]

template<typename T> ShProgram abs (const std::string &name="result")
 Nibbles for unary operators Inputs: IN(0) T name Outputs: OUT(0) T name.

template<typename T> ShProgram acos (const std::string &name="result")
template<typename T> ShProgram asin (const std::string &name="result")
template<typename T> ShProgram cos (const std::string &name="result")
template<typename T> ShProgram frac (const std::string &name="result")
template<typename T> ShProgram sin (const std::string &name="result")
template<typename T> ShProgram sqrt (const std::string &name="result")
template<typename T> ShProgram normalize (const std::string &name="result")
template<typename T> ShProgram pos (const std::string &name="result")

[NOHEADER]

 SHNIBBLE_BINARY_OP_DECL (add)
 SHNIBBLE_BINARY_OP_DECL (sub)
 SHNIBBLE_BINARY_OP_DECL (mul)
 SHNIBBLE_BINARY_OP_DECL (div)
 SHNIBBLE_BINARY_OP_DECL (pow)
 SHNIBBLE_BINARY_OP_DECL (slt)
 SHNIBBLE_BINARY_OP_DECL (sle)
 SHNIBBLE_BINARY_OP_DECL (sgt)
 SHNIBBLE_BINARY_OP_DECL (sge)
 SHNIBBLE_BINARY_OP_DECL (seq)
 SHNIBBLE_BINARY_OP_DECL (sne)
 SHNIBBLE_BINARY_OP_DECL (max)
 SHNIBBLE_BINARY_OP_DECL (min)
 SHNIBBLE_BINARY_OP_DECL (mod)

[NOHEADER]

template<typename T> ShProgram dot (const std::string &name="result")
 Nibble for dot product operator Inputs: IN(0) T a IN(1) T b Outputs: OUT(0) ShAttrib1f name.


[NOHEADER]

template<typename T1, typename T2> ShProgram lerp (const std::string &name="result")
 Nibble for lerp operator Inputs: IN(0) T1 a IN(1) T1 b IN(2) T2 alpha (T2 = T1 by default) Outputs: OUT(0) T1 name = a * alpha + b * (1 - alpha).


Typedefs

typedef ShAttrib< 1, SH_INPUT,
float > 
ShInputAttrib1f
typedef ShAttrib< 1, SH_OUTPUT,
float > 
ShOutputAttrib1f
typedef ShAttrib< 1, SH_INOUT,
float > 
ShInOutAttrib1f
typedef ShAttrib< 1, SH_TEMP,
float > 
ShAttrib1f
typedef ShAttrib< 1, SH_CONST,
float > 
ShConstAttrib1f
typedef ShAttrib< 2, SH_INPUT,
float > 
ShInputAttrib2f
typedef ShAttrib< 2, SH_OUTPUT,
float > 
ShOutputAttrib2f
typedef ShAttrib< 2, SH_INOUT,
float > 
ShInOutAttrib2f
typedef ShAttrib< 2, SH_TEMP,
float > 
ShAttrib2f
typedef ShAttrib< 2, SH_CONST,
float > 
ShConstAttrib2f
typedef ShAttrib< 3, SH_INPUT,
float > 
ShInputAttrib3f
typedef ShAttrib< 3, SH_OUTPUT,
float > 
ShOutputAttrib3f
typedef ShAttrib< 3, SH_INOUT,
float > 
ShInOutAttrib3f
typedef ShAttrib< 3, SH_TEMP,
float > 
ShAttrib3f
typedef ShAttrib< 3, SH_CONST,
float > 
ShConstAttrib3f
typedef ShAttrib< 4, SH_INPUT,
float > 
ShInputAttrib4f
typedef ShAttrib< 4, SH_OUTPUT,
float > 
ShOutputAttrib4f
typedef ShAttrib< 4, SH_INOUT,
float > 
ShInOutAttrib4f
typedef ShAttrib< 4, SH_TEMP,
float > 
ShAttrib4f
typedef ShAttrib< 4, SH_CONST,
float > 
ShConstAttrib4f
typedef ShPointer< ShBackendCode > ShBackendCodePtr
typedef ShPointer< const ShBackendCode > ShBackendCodeCPtr
typedef ShPointer< ShBackend > ShBackendPtr
typedef ShPointer< const ShBackend > ShBackendCPtr
typedef ShPointer< ShBasicBlockShBasicBlockPtr
typedef ShPointer< const ShBasicBlockShBasicBlockCPtr
typedef ShPointer< ShBlockShBlockPtr
typedef ShPointer< const ShBlockShBlockCPtr
typedef ShPointer< ShBlockListShBlockListPtr
typedef ShPointer< const ShBlockListShBlockListCPtr
typedef ShPointer< ShChannelNode > ShChannelNodePtr
typedef ShPointer< const ShChannelNode > ShChannelNodeCPtr
typedef ShColor< 1, SH_INPUT,
float > 
ShInputColor1f
typedef ShColor< 1, SH_OUTPUT,
float > 
ShOutputColor1f
typedef ShColor< 1, SH_INOUT,
float > 
ShInOutColor1f
typedef ShColor< 1, SH_TEMP,
float > 
ShColor1f
typedef ShColor< 1, SH_CONST,
float > 
ShConstColor1f
typedef ShColor< 2, SH_INPUT,
float > 
ShInputColor2f
typedef ShColor< 2, SH_OUTPUT,
float > 
ShOutputColor2f
typedef ShColor< 2, SH_INOUT,
float > 
ShInOutColor2f
typedef ShColor< 2, SH_TEMP,
float > 
ShColor2f
typedef ShColor< 2, SH_CONST,
float > 
ShConstColor2f
typedef ShColor< 3, SH_INPUT,
float > 
ShInputColor3f
typedef ShColor< 3, SH_OUTPUT,
float > 
ShOutputColor3f
typedef ShColor< 3, SH_INOUT,
float > 
ShInOutColor3f
typedef ShColor< 3, SH_TEMP,
float > 
ShColor3f
typedef ShColor< 3, SH_CONST,
float > 
ShConstColor3f
typedef ShColor< 4, SH_INPUT,
float > 
ShInputColor4f
typedef ShColor< 4, SH_OUTPUT,
float > 
ShOutputColor4f
typedef ShColor< 4, SH_INOUT,
float > 
ShInOutColor4f
typedef ShColor< 4, SH_TEMP,
float > 
ShColor4f
typedef ShColor< 4, SH_CONST,
float > 
ShConstColor4f
typedef ShContext::BoundProgramMap::iterator ShBoundIterator
typedef std::map< ShCtrlGraphNodePtr,
ShCtrlGraphNodePtr
CtrlGraphCopyMap
typedef ShPointer< ShCtrlGraphNodeShCtrlGraphNodePtr
typedef ShPointer< const ShCtrlGraphNodeShCtrlGraphNodeCPtr
typedef ShPointer< ShCtrlGraphShCtrlGraphPtr
typedef ShPointer< const ShCtrlGraphShCtrlGraphCPtr
typedef ShProgramNode::VarList::const_iterator ShManipVarIterator
typedef ShPointer< ShFixedManipulatorNodeShFixedManipulator
typedef ShManipulator< int > ShPositionManipulator
typedef ShManipulator< char * > ShNameManipulator
typedef ShMatrix< 1, 1, SH_INPUT,
float > 
ShInputMatrix1x1f
typedef ShMatrix< 1, 1, SH_OUTPUT,
float > 
ShOutputMatrix1x1f
typedef ShMatrix< 1, 1, SH_INOUT,
float > 
ShInOutMatrix1x1f
typedef ShMatrix< 1, 1, SH_TEMP,
float > 
ShMatrix1x1f
typedef ShMatrix< 1, 2, SH_INPUT,
float > 
ShInputMatrix1x2f
typedef ShMatrix< 1, 2, SH_OUTPUT,
float > 
ShOutputMatrix1x2f
typedef ShMatrix< 1, 2, SH_INOUT,
float > 
ShInOutMatrix1x2f
typedef ShMatrix< 1, 2, SH_TEMP,
float > 
ShMatrix1x2f
typedef ShMatrix< 1, 3, SH_INPUT,
float > 
ShInputMatrix1x3f
typedef ShMatrix< 1, 3, SH_OUTPUT,
float > 
ShOutputMatrix1x3f
typedef ShMatrix< 1, 3, SH_INOUT,
float > 
ShInOutMatrix1x3f
typedef ShMatrix< 1, 3, SH_TEMP,
float > 
ShMatrix1x3f
typedef ShMatrix< 1, 4, SH_INPUT,
float > 
ShInputMatrix1x4f
typedef ShMatrix< 1, 4, SH_OUTPUT,
float > 
ShOutputMatrix1x4f
typedef ShMatrix< 1, 4, SH_INOUT,
float > 
ShInOutMatrix1x4f
typedef ShMatrix< 1, 4, SH_TEMP,
float > 
ShMatrix1x4f
typedef ShMatrix< 2, 1, SH_INPUT,
float > 
ShInputMatrix2x1f
typedef ShMatrix< 2, 1, SH_OUTPUT,
float > 
ShOutputMatrix2x1f
typedef ShMatrix< 2, 1, SH_INOUT,
float > 
ShInOutMatrix2x1f
typedef ShMatrix< 2, 1, SH_TEMP,
float > 
ShMatrix2x1f
typedef ShMatrix< 2, 2, SH_INPUT,
float > 
ShInputMatrix2x2f
typedef ShMatrix< 2, 2, SH_OUTPUT,
float > 
ShOutputMatrix2x2f
typedef ShMatrix< 2, 2, SH_INOUT,
float > 
ShInOutMatrix2x2f
typedef ShMatrix< 2, 2, SH_TEMP,
float > 
ShMatrix2x2f
typedef ShMatrix< 2, 3, SH_INPUT,
float > 
ShInputMatrix2x3f
typedef ShMatrix< 2, 3, SH_OUTPUT,
float > 
ShOutputMatrix2x3f
typedef ShMatrix< 2, 3, SH_INOUT,
float > 
ShInOutMatrix2x3f
typedef ShMatrix< 2, 3, SH_TEMP,
float > 
ShMatrix2x3f
typedef ShMatrix< 2, 4, SH_INPUT,
float > 
ShInputMatrix2x4f
typedef ShMatrix< 2, 4, SH_OUTPUT,
float > 
ShOutputMatrix2x4f
typedef ShMatrix< 2, 4, SH_INOUT,
float > 
ShInOutMatrix2x4f
typedef ShMatrix< 2, 4, SH_TEMP,
float > 
ShMatrix2x4f
typedef ShMatrix< 3, 1, SH_INPUT,
float > 
ShInputMatrix3x1f
typedef ShMatrix< 3, 1, SH_OUTPUT,
float > 
ShOutputMatrix3x1f
typedef ShMatrix< 3, 1, SH_INOUT,
float > 
ShInOutMatrix3x1f
typedef ShMatrix< 3, 1, SH_TEMP,
float > 
ShMatrix3x1f
typedef ShMatrix< 3, 2, SH_INPUT,
float > 
ShInputMatrix3x2f
typedef ShMatrix< 3, 2, SH_OUTPUT,
float > 
ShOutputMatrix3x2f
typedef ShMatrix< 3, 2, SH_INOUT,
float > 
ShInOutMatrix3x2f
typedef ShMatrix< 3, 2, SH_TEMP,
float > 
ShMatrix3x2f
typedef ShMatrix< 3, 3, SH_INPUT,
float > 
ShInputMatrix3x3f
typedef ShMatrix< 3, 3, SH_OUTPUT,
float > 
ShOutputMatrix3x3f
typedef ShMatrix< 3, 3, SH_INOUT,
float > 
ShInOutMatrix3x3f
typedef ShMatrix< 3, 3, SH_TEMP,
float > 
ShMatrix3x3f
typedef ShMatrix< 3, 4, SH_INPUT,
float > 
ShInputMatrix3x4f
typedef ShMatrix< 3, 4, SH_OUTPUT,
float > 
ShOutputMatrix3x4f
typedef ShMatrix< 3, 4, SH_INOUT,
float > 
ShInOutMatrix3x4f
typedef ShMatrix< 3, 4, SH_TEMP,
float > 
ShMatrix3x4f
typedef ShMatrix< 4, 1, SH_INPUT,
float > 
ShInputMatrix4x1f
typedef ShMatrix< 4, 1, SH_OUTPUT,
float > 
ShOutputMatrix4x1f
typedef ShMatrix< 4, 1, SH_INOUT,
float > 
ShInOutMatrix4x1f
typedef ShMatrix< 4, 1, SH_TEMP,
float > 
ShMatrix4x1f
typedef ShMatrix< 4, 2, SH_INPUT,
float > 
ShInputMatrix4x2f
typedef ShMatrix< 4, 2, SH_OUTPUT,
float > 
ShOutputMatrix4x2f
typedef ShMatrix< 4, 2, SH_INOUT,
float > 
ShInOutMatrix4x2f
typedef ShMatrix< 4, 2, SH_TEMP,
float > 
ShMatrix4x2f
typedef ShMatrix< 4, 3, SH_INPUT,
float > 
ShInputMatrix4x3f
typedef ShMatrix< 4, 3, SH_OUTPUT,
float > 
ShOutputMatrix4x3f
typedef ShMatrix< 4, 3, SH_INOUT,
float > 
ShInOutMatrix4x3f
typedef ShMatrix< 4, 3, SH_TEMP,
float > 
ShMatrix4x3f
typedef ShMatrix< 4, 4, SH_INPUT,
float > 
ShInputMatrix4x4f
typedef ShMatrix< 4, 4, SH_OUTPUT,
float > 
ShOutputMatrix4x4f
typedef ShMatrix< 4, 4, SH_INOUT,
float > 
ShInOutMatrix4x4f
typedef ShMatrix< 4, 4, SH_TEMP,
float > 
ShMatrix4x4f
typedef ShPointer< ShMemoryShMemoryPtr
typedef ShPointer< const ShMemoryShMemoryCPtr
typedef ShPointer< ShStorageShStoragePtr
typedef ShPointer< const ShStorageShStorageCPtr
typedef ShPointer< ShHostStorageShHostStoragePtr
typedef ShPointer< const ShHostStorageShHostStorageCPtr
typedef ShPointer< ShHostMemoryShHostMemoryPtr
typedef ShPointer< const ShHostMemoryShHostMemoryCPtr
typedef ShNormal< 1, SH_INPUT,
float > 
ShInputNormal1f
typedef ShNormal< 1, SH_OUTPUT,
float > 
ShOutputNormal1f
typedef ShNormal< 1, SH_INOUT,
float > 
ShInOutNormal1f
typedef ShNormal< 1, SH_TEMP,
float > 
ShNormal1f
typedef ShNormal< 1, SH_CONST,
float > 
ShConstNormal1f
typedef ShNormal< 2, SH_INPUT,
float > 
ShInputNormal2f
typedef ShNormal< 2, SH_OUTPUT,
float > 
ShOutputNormal2f
typedef ShNormal< 2, SH_INOUT,
float > 
ShInOutNormal2f
typedef ShNormal< 2, SH_TEMP,
float > 
ShNormal2f
typedef ShNormal< 2, SH_CONST,
float > 
ShConstNormal2f
typedef ShNormal< 3, SH_INPUT,
float > 
ShInputNormal3f
typedef ShNormal< 3, SH_OUTPUT,
float > 
ShOutputNormal3f
typedef ShNormal< 3, SH_INOUT,
float > 
ShInOutNormal3f
typedef ShNormal< 3, SH_TEMP,
float > 
ShNormal3f
typedef ShNormal< 3, SH_CONST,
float > 
ShConstNormal3f
typedef ShNormal< 4, SH_INPUT,
float > 
ShInputNormal4f
typedef ShNormal< 4, SH_OUTPUT,
float > 
ShOutputNormal4f
typedef ShNormal< 4, SH_INOUT,
float > 
ShInOutNormal4f
typedef ShNormal< 4, SH_TEMP,
float > 
ShNormal4f
typedef ShNormal< 4, SH_CONST,
float > 
ShConstNormal4f
typedef ShPoint< 1, SH_INPUT,
float > 
ShInputPoint1f
typedef ShPoint< 1, SH_OUTPUT,
float > 
ShOutputPoint1f
typedef ShPoint< 1, SH_INOUT,
float > 
ShInOutPoint1f
typedef ShPoint< 1, SH_TEMP,
float > 
ShPoint1f
typedef ShPoint< 1, SH_CONST,
float > 
ShConstPoint1f
typedef ShPoint< 2, SH_INPUT,
float > 
ShInputPoint2f
typedef ShPoint< 2, SH_OUTPUT,
float > 
ShOutputPoint2f
typedef ShPoint< 2, SH_INOUT,
float > 
ShInOutPoint2f
typedef ShPoint< 2, SH_TEMP,
float > 
ShPoint2f
typedef ShPoint< 2, SH_CONST,
float > 
ShConstPoint2f
typedef ShPoint< 3, SH_INPUT,
float > 
ShInputPoint3f
typedef ShPoint< 3, SH_OUTPUT,
float > 
ShOutputPoint3f
typedef ShPoint< 3, SH_INOUT,
float > 
ShInOutPoint3f
typedef ShPoint< 3, SH_TEMP,
float > 
ShPoint3f
typedef ShPoint< 3, SH_CONST,
float > 
ShConstPoint3f
typedef ShPoint< 4, SH_INPUT,
float > 
ShInputPoint4f
typedef ShPoint< 4, SH_OUTPUT,
float > 
ShOutputPoint4f
typedef ShPoint< 4, SH_INOUT,
float > 
ShInOutPoint4f
typedef ShPoint< 4, SH_TEMP,
float > 
ShPoint4f
typedef ShPoint< 4, SH_CONST,
float > 
ShConstPoint4f
typedef ShPosition< 1, SH_INPUT,
float > 
ShInputPosition1f
typedef ShPosition< 1, SH_OUTPUT,
float > 
ShOutputPosition1f
typedef ShPosition< 1, SH_INOUT,
float > 
ShInOutPosition1f
typedef ShPosition< 1, SH_TEMP,
float > 
ShPosition1f
typedef ShPosition< 1, SH_CONST,
float > 
ShConstPosition1f
typedef ShPosition< 2, SH_INPUT,
float > 
ShInputPosition2f
typedef ShPosition< 2, SH_OUTPUT,
float > 
ShOutputPosition2f
typedef ShPosition< 2, SH_INOUT,
float > 
ShInOutPosition2f
typedef ShPosition< 2, SH_TEMP,
float > 
ShPosition2f
typedef ShPosition< 2, SH_CONST,
float > 
ShConstPosition2f
typedef ShPosition< 3, SH_INPUT,
float > 
ShInputPosition3f
typedef ShPosition< 3, SH_OUTPUT,
float > 
ShOutputPosition3f
typedef ShPosition< 3, SH_INOUT,
float > 
ShInOutPosition3f
typedef ShPosition< 3, SH_TEMP,
float > 
ShPosition3f
typedef ShPosition< 3, SH_CONST,
float > 
ShConstPosition3f
typedef ShPosition< 4, SH_INPUT,
float > 
ShInputPosition4f
typedef ShPosition< 4, SH_OUTPUT,
float > 
ShOutputPosition4f
typedef ShPosition< 4, SH_INOUT,
float > 
ShInOutPosition4f
typedef ShPosition< 4, SH_TEMP,
float > 
ShPosition4f
typedef ShPosition< 4, SH_CONST,
float > 
ShConstPosition4f
typedef ShPointer< ShProgramNodeShProgramNodePtr
typedef ShPointer< const ShProgramNodeShProgramNodeCPtr
typedef ShQuaternion< SH_INPUT,
float > 
ShInputQuaternionf
typedef ShQuaternion< SH_OUTPUT,
float > 
ShOutputQuaternionf
typedef ShQuaternion< SH_TEMP,
float > 
ShQuaternionf
typedef ShPointer< ShStructuralNode > ShStructuralNodePtr
typedef ShPointer< const ShStructuralNode > ShStructuralNodeCPtr
typedef ShTexCoord< 1, SH_INPUT,
float > 
ShInputTexCoord1f
typedef ShTexCoord< 1, SH_OUTPUT,
float > 
ShOutputTexCoord1f
typedef ShTexCoord< 1, SH_INOUT,
float > 
ShInOutTexCoord1f
typedef ShTexCoord< 1, SH_TEMP,
float > 
ShTexCoord1f
typedef ShTexCoord< 1, SH_CONST,
float > 
ShConstTexCoord1f
typedef ShTexCoord< 2, SH_INPUT,
float > 
ShInputTexCoord2f
typedef ShTexCoord< 2, SH_OUTPUT,
float > 
ShOutputTexCoord2f
typedef ShTexCoord< 2, SH_INOUT,
float > 
ShInOutTexCoord2f
typedef ShTexCoord< 2, SH_TEMP,
float > 
ShTexCoord2f
typedef ShTexCoord< 2, SH_CONST,
float > 
ShConstTexCoord2f
typedef ShTexCoord< 3, SH_INPUT,
float > 
ShInputTexCoord3f
typedef ShTexCoord< 3, SH_OUTPUT,
float > 
ShOutputTexCoord3f
typedef ShTexCoord< 3, SH_INOUT,
float > 
ShInOutTexCoord3f
typedef ShTexCoord< 3, SH_TEMP,
float > 
ShTexCoord3f
typedef ShTexCoord< 3, SH_CONST,
float > 
ShConstTexCoord3f
typedef ShTexCoord< 4, SH_INPUT,
float > 
ShInputTexCoord4f
typedef ShTexCoord< 4, SH_OUTPUT,
float > 
ShOutputTexCoord4f
typedef ShTexCoord< 4, SH_INOUT,
float > 
ShInOutTexCoord4f
typedef ShTexCoord< 4, SH_TEMP,
float > 
ShTexCoord4f
typedef ShTexCoord< 4, SH_CONST,
float > 
ShConstTexCoord4f
typedef ShPointer< ShTextureNode > ShTextureNodePtr
typedef ShPointer< const ShTextureNode > ShTextureNodeCPtr
typedef ShPointer< ShTokenShTokenPtr
typedef ShPointer< const ShTokenShTokenCPtr
typedef ShPointer< ShVariableNodeShVariableNodePtr
typedef ShPointer< const ShVariableNodeShVariableNodeCPtr
typedef ShVector< 1, SH_INPUT,
float > 
ShInputVector1f
typedef ShVector< 1, SH_OUTPUT,
float > 
ShOutputVector1f
typedef ShVector< 1, SH_INOUT,
float > 
ShInOutVector1f
typedef ShVector< 1, SH_TEMP,
float > 
ShVector1f
typedef ShVector< 1, SH_CONST,
float > 
ShConstVector1f
typedef ShVector< 2, SH_INPUT,
float > 
ShInputVector2f
typedef ShVector< 2, SH_OUTPUT,
float > 
ShOutputVector2f
typedef ShVector< 2, SH_INOUT,
float > 
ShInOutVector2f
typedef ShVector< 2, SH_TEMP,
float > 
ShVector2f
typedef ShVector< 2, SH_CONST,
float > 
ShConstVector2f
typedef ShVector< 3, SH_INPUT,
float > 
ShInputVector3f
typedef ShVector< 3, SH_OUTPUT,
float > 
ShOutputVector3f
typedef ShVector< 3, SH_INOUT,
float > 
ShInOutVector3f
typedef ShVector< 3, SH_TEMP,
float > 
ShVector3f
typedef ShVector< 3, SH_CONST,
float > 
ShConstVector3f
typedef ShVector< 4, SH_INPUT,
float > 
ShInputVector4f
typedef ShVector< 4, SH_OUTPUT,
float > 
ShOutputVector4f
typedef ShVector< 4, SH_INOUT,
float > 
ShInOutVector4f
typedef ShVector< 4, SH_TEMP,
float > 
ShVector4f
typedef ShVector< 4, SH_CONST,
float > 
ShConstVector4f

Enumerations

enum  OffsetRangeErrors { OFFSET_RANGE_BAD_OFFSET, OFFSET_RANGE_BAD_INDEX }
enum  ShOperation {
  SH_OP_ASN, SH_OP_NEG, SH_OP_ADD, SH_OP_MUL,
  SH_OP_DIV, SH_OP_SLT, SH_OP_SLE, SH_OP_SGT,
  SH_OP_SGE, SH_OP_SEQ, SH_OP_SNE, SH_OP_ABS,
  SH_OP_ACOS, SH_OP_ASIN, SH_OP_ATAN, SH_OP_ATAN2,
  SH_OP_CBRT, SH_OP_CEIL, SH_OP_COS, SH_OP_CMUL,
  SH_OP_CSUM, SH_OP_DOT, SH_OP_DX, SH_OP_DY,
  SH_OP_EXP, SH_OP_EXP2, SH_OP_EXP10, SH_OP_FLR,
  SH_OP_FRAC, SH_OP_LRP, SH_OP_MAD, SH_OP_MAX,
  SH_OP_MIN, SH_OP_MOD, SH_OP_LOG, SH_OP_LOG2,
  SH_OP_LOG10, SH_OP_POW, SH_OP_RCP, SH_OP_RND,
  SH_OP_RSQ, SH_OP_SIN, SH_OP_SGN, SH_OP_SQRT,
  SH_OP_TAN, SH_OP_NORM, SH_OP_XPD, SH_OP_TEX,
  SH_OP_TEXI, SH_OP_TEXD, SH_OP_COND, SH_OP_KIL,
  SH_OP_OPTBRA, SH_OP_FETCH
}
 Kinds of operations. More...

enum  ShTextureDims {
  SH_TEXTURE_1D, SH_TEXTURE_2D, SH_TEXTURE_RECT, SH_TEXTURE_3D,
  SH_TEXTURE_CUBE
}
 Texture formats. More...

enum  ShCubeDirection {
  SH_CUBE_POS_X, SH_CUBE_NEG_X, SH_CUBE_POS_Y, SH_CUBE_NEG_Y,
  SH_CUBE_POS_Z, SH_CUBE_NEG_Z
}
 Cube map faces. More...

enum  ShTokenType {
  SH_TOKEN_IF, SH_TOKEN_ELSE, SH_TOKEN_ENDIF, SH_TOKEN_WHILE,
  SH_TOKEN_ENDWHILE, SH_TOKEN_DO, SH_TOKEN_UNTIL, SH_TOKEN_FOR,
  SH_TOKEN_ENDFOR, SH_TOKEN_BREAK, SH_TOKEN_CONTINUE
}
 Possible types a token can have. More...

enum  ShBindingType {
  SH_INPUT, SH_OUTPUT, SH_INOUT, SH_TEMP,
  SH_CONST, SH_TEXTURE, SH_STREAM
}
 The various ways variables can be bound.

enum  ShSemanticType {
  SH_ATTRIB, SH_POINT, SH_VECTOR, SH_NORMAL,
  SH_COLOR, SH_TEXCOORD, SH_POSITION
}
 The various ways semantic types for variables.


Functions

ShProgram connect (ShProgram pa, ShProgram pb)
 Replace inputs of b with outputs of a.

ShProgram combine (ShProgram pa, ShProgram pb)
 Combine a and b.

ShProgram mergeNames (ShProgram p)
ShProgram namedCombine (ShProgram a, ShProgram b)
 Combine a and b.

ShProgram namedConnect (ShProgram pa, ShProgram pb, bool keepExtra)
 Replace inputs of b with outputs of a.

ShProgram renameInput (ShProgram a, const std::string &oldName, const std::string &newName)
 Renames all inputs named oldName to newName.

ShProgram renameOutput (ShProgram a, const std::string &oldName, const std::string &newName)
 Renames all outputs named oldName to newName.

ShProgram namedAlign (ShProgram a, ShProgram b)
 Swizzles named outputs of a to match named inputs of b.

ShProgram operator<< (ShProgram a, ShProgram b)
 Equivalent to connect(b,a).

ShProgram operator>> (ShProgram a, ShProgram b)
ShProgram operator & (ShProgram a, ShProgram b)
 Equivalent to combine(a,b).

ShProgram operator>> (ShProgram p, const ShVariable &var)
 Equivalent to replaceUniform(p,var).

ShProgram replaceUniform (ShProgram a, const ShVariable &v)
 Replaces parameter with attribute.

template<int N, typename T> ShProgram operator<< (ShProgram a, const ShGeneric< N, T > &v)
 Application operator.

std::ostream & operator<< (std::ostream &out, const ShBitSet &bitset)
std::ostream & operator<< (std::ostream &out, const ShBlockList &l)
template<typename T> ShProgram connect (const ShChannel< T > &channel, const ShProgram &program)
 Apply a programs to a single channel.

template<typename T> ShProgram operator<< (const ShProgram &program, const ShChannel< T > &channel)
 Equivalent to connect(p,c).

void propagate_constants (ShProgram &p)
 Propagate constants and lift uniform computations.

ShBoundIterator shBeginBound ()
 Get beginning of bound program map for current context.

ShBoundIterator shEndBound ()
 Get end of bound program map for current context.

void shError (const ShException &exception)
 Throws the given exception when ShContext::current()->throw_errors() is on.

void evaluate (ShStatement &stmt)
void evaluate (const ShProgramNodePtr &p)
ShVariable makeVariable (const ShVariableNodePtr &v, ShBindingType binding)
ShFixedManipulator shKeep (int numChannels)
ShFixedManipulator shLose (int numChannels)
ShFixedManipulator shDup (int numDups)
ShProgram operator<< (const ShProgram &p, const ShFixedManipulator &m)
ShProgram operator<< (const ShFixedManipulator &m, const ShProgram &p)
ShFixedManipulator operator & (const ShFixedManipulator &m, const ShFixedManipulator &n)
ShFixedManipulator operator & (const ShFixedManipulator &m, const ShProgram &p)
ShFixedManipulator operator & (const ShProgram &p, const ShFixedManipulator &m)
void shASN (ShVariable &dest, const ShVariable &src)
void shADD (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shMUL (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shDIV (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSLT (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSLE (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSGT (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSGE (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSEQ (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shSNE (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shABS (ShVariable &dest, const ShVariable &a)
void shACOS (ShVariable &dest, const ShVariable &a)
void shASIN (ShVariable &dest, const ShVariable &a)
void shATAN (ShVariable &dest, const ShVariable &a)
void shATAN2 (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shCBRT (ShVariable &dest, const ShVariable &a)
void shCEIL (ShVariable &dest, const ShVariable &a)
void shCOS (ShVariable &dest, const ShVariable &a)
void shCMUL (ShVariable &dest, const ShVariable &a)
void shCSUM (ShVariable &dest, const ShVariable &a)
void shDOT (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shDX (ShVariable &dest, const ShVariable &a)
void shDY (ShVariable &dest, const ShVariable &a)
void shEXP (ShVariable &dest, const ShVariable &a)
void shEXP2 (ShVariable &dest, const ShVariable &a)
void shEXP10 (ShVariable &dest, const ShVariable &a)
void shFLR (ShVariable &dest, const ShVariable &a)
void shMOD (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shFRAC (ShVariable &dest, const ShVariable &a)
void shLRP (ShVariable &dest, const ShVariable &alpha, const ShVariable &a, const ShVariable &b)
void shLOG (ShVariable &dest, const ShVariable &a)
void shLOG2 (ShVariable &dest, const ShVariable &a)
void shLOG10 (ShVariable &dest, const ShVariable &a)
void shMAD (ShVariable &dest, const ShVariable &a, const ShVariable &b, const ShVariable &c)
void shMAX (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shMIN (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shPOW (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shRCP (ShVariable &dest, const ShVariable &a)
void shRND (ShVariable &dest, const ShVariable &a)
void shRSQ (ShVariable &dest, const ShVariable &a)
void shSGN (ShVariable &dest, const ShVariable &a)
void shSIN (ShVariable &dest, const ShVariable &a)
void shSQRT (ShVariable &dest, const ShVariable &a)
void shTAN (ShVariable &dest, const ShVariable &a)
void shNORM (ShVariable &dest, const ShVariable &a)
void shXPD (ShVariable &dest, const ShVariable &a, const ShVariable &b)
void shCOND (ShVariable &dest, const ShVariable &alpha, const ShVariable &a, const ShVariable &b)
void shKIL (const ShVariable &a)
template<int N, typename T> ShGeneric< N, T > operator+ (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Addition.

template<int N, typename T> ShGeneric< N, T > operator+ (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<int N, typename T> ShGeneric< N, T > operator+ (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > operator+ (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator+)
 SH_SHLIB_CONST_N_OP_BOTH (operator+)
template<int N, typename T> ShGeneric< N, T > operator- (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Subtraction.

template<int N, typename T> ShGeneric< N, T > operator- (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<int N, typename T> ShGeneric< N, T > operator- (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > operator- (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator-)
 SH_SHLIB_CONST_N_OP_BOTH (operator-)
template<int N, typename T> ShGeneric< N, T > operator * (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Multiplication.

template<int N, typename T> ShGeneric< N, T > operator * (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<int N, typename T> ShGeneric< N, T > operator * (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > operator * (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator *)
 SH_SHLIB_CONST_N_OP_BOTH (operator *)
template<int N, typename T> ShGeneric< N, T > operator/ (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Division.

template<int N, typename T> ShGeneric< N, T > operator/ (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator/ (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator/ (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator/)
 SH_SHLIB_CONST_N_OP_LEFT (operator/)
template<int N, typename T> ShGeneric< N, T > exp (const ShGeneric< N, T > &var)
 Exponent base 10.

template<int N, typename T> ShGeneric< N, T > exp2 (const ShGeneric< N, T > &var)
 Exponent base 2.

template<int N, typename T> ShGeneric< N, T > expm1 (const ShGeneric< N, T > &x)
 Minus-one Exponent base 10.

template<int N, typename T> ShGeneric< N, T > log (const ShGeneric< N, T > &var)
 Logarithm base 10.

template<int N, typename T> ShGeneric< N, T > log2 (const ShGeneric< N, T > &var)
 Logarithm base 2.

template<int N, typename T> ShGeneric< N, T > logp1 (const ShGeneric< N, T > &x)
 Plus-One Logarithm base 10.

template<int N, typename T> ShGeneric< N, T > pow (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Power.

template<int N, typename T> ShGeneric< N, T > pow (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > pow (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (pow)
 SH_SHLIB_CONST_N_OP_RIGHT (pow)
template<int N, typename T> ShGeneric< N, T > mad (const ShGeneric< N, T > &m1, const ShGeneric< N, T > &m2, const ShGeneric< N, T > &a)
 Multiply and add.

template<int N, typename T> ShGeneric< N, T > mad (const ShGeneric< N, T > &m1, const ShGeneric< 1, T > &m2, const ShGeneric< N, T > &a)
template<int N, typename T> ShGeneric< N, T > mad (const ShGeneric< 1, T > &m1, const ShGeneric< N, T > &m2, const ShGeneric< N, T > &a)
template<typename T> ShGeneric< 1, T > mad (const ShGeneric< 1, T > &m1, const ShGeneric< 1, T > &m2, const ShGeneric< 1, T > &a)
template<int N, typename T> ShGeneric< N, T > mad (T m1, const ShGeneric< N, T > &m2, const ShGeneric< N, T > &a)
template<int N, typename T> ShGeneric< N, T > mad (double m1, const ShGeneric< N, T > &m2, const ShGeneric< N, T > &a)
template<int N, typename T> ShGeneric< N, T > mad (const ShGeneric< N, T > &m1, T m2, const ShGeneric< N, T > &a)
template<int N, typename T> ShGeneric< N, T > mad (const ShGeneric< N, T > &m1, double m2, const ShGeneric< N, T > &a)
template<int N, typename T> ShGeneric< N, T > rcp (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > sqrt (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > rsqrt (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > cbrt (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > lerp (const ShGeneric< N, T > &f, const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Linear interpolation.

template<int N, typename T> ShGeneric< N, T > lerp (const ShGeneric< 1, T > &f, const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
template<typename T> ShGeneric< 1, T > lerp (const ShGeneric< 1, T > &f, const ShGeneric< 1, T > &a, const ShGeneric< 1, T > &b)
template<int N, typename T> ShGeneric< N, T > lerp (T f, const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
template<int N, typename T> ShGeneric< 1, T > sum (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< 1, T > prod (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > exp10 (const ShGeneric< N, T > &var)
template<int N, typename T> ShGeneric< N, T > log10 (const ShGeneric< N, T > &var)
 SH_SHLIB_USUAL_OPERATIONS (ShAttrib)
 SH_SHLIB_USUAL_SUBTRACT (ShAttrib)
 SH_SHLIB_LEFT_MATRIX_OPERATION (ShAttrib, operator|, M)
template<int N, typename T> ShGeneric< N, T > operator< (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise less-than.

template<int N, typename T> ShGeneric< N, T > operator< (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator< (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator< (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator<)
 SH_SHLIB_CONST_N_OP_BOTH (operator<)
template<int N, typename T> ShGeneric< N, T > operator<= (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise less-than-or-equal.

template<int N, typename T> ShGeneric< N, T > operator<= (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator<= (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator<= (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator<=)
 SH_SHLIB_CONST_N_OP_BOTH (operator<=)
template<int N, typename T> ShGeneric< N, T > operator> (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise greater-than.

template<int N, typename T> ShGeneric< N, T > operator> (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator> (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator> (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator>)
 SH_SHLIB_CONST_N_OP_BOTH (operator>)
template<int N, typename T> ShGeneric< N, T > operator>= (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise greater-than-or-equal.

template<int N, typename T> ShGeneric< N, T > operator>= (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator>= (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator>= (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator>=)
 SH_SHLIB_CONST_N_OP_BOTH (operator>=)
template<int N, typename T> ShGeneric< N, T > operator== (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise equal.

template<int N, typename T> ShGeneric< N, T > operator== (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator== (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator== (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator!= (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Componentwise not equal.

template<int N, typename T> ShGeneric< N, T > operator!= (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator!= (const ShGeneric< 1, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > operator!= (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (operator!=)
 SH_SHLIB_CONST_N_OP_BOTH (operator!=)
template<int N, typename T> ShGeneric< N, T > cond (const ShGeneric< N, T > &condition, const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Conditional assignment.

template<int N, typename T> ShGeneric< N, T > cond (const ShGeneric< 1, T > &condition, const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
template<typename T> ShGeneric< 1, T > cond (const ShGeneric< 1, T > &condition, const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator! (const ShGeneric< N, T > &a)
 Boolean negation.

template<int N, typename T> ShGeneric< N, T > operator && (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Componentwise minimum.

template<int N, typename T> ShGeneric< N, T > operator|| (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Componentwise maximum.

template<int N, typename T> ShGeneric< 1, T > any (const ShGeneric< N, T > &a)
 Maximum of all components.

template<int N, typename T> ShGeneric< 1, T > all (const ShGeneric< N, T > &a)
 Minimum of all components.

template<int N, typename T> ShGeneric< N, T > abs (const ShGeneric< N, T > &var)
 Absolute value.

template<int N, typename T> ShGeneric< N, T > ceil (const ShGeneric< N, T > &var)
 Ceiling.

template<int N, typename T> ShGeneric< N, T > floor (const ShGeneric< N, T > &var)
 Floor.

template<int N, typename T> ShGeneric< N, T > round (const ShGeneric< N, T > &var)
 Round.

template<int N, typename T> ShGeneric< N, T > mod (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Float modulus.

template<int N, typename T> ShGeneric< N, T > mod (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > mod (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
template<int N, typename T> ShGeneric< N, T > operator% (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
template<int N, typename T> ShGeneric< N, T > operator% (const ShGeneric< N, T > &left, const ShGeneric< 1, T > &right)
template<typename T> ShGeneric< 1, T > operator% (const ShGeneric< 1, T > &left, const ShGeneric< 1, T > &right)
 SH_SHLIB_CONST_SCALAR_OP (mod)
 SH_SHLIB_CONST_N_OP_LEFT (mod)
 SH_SHLIB_CONST_SCALAR_OP (operator%)
 SH_SHLIB_CONST_N_OP_LEFT (operator%)
template<int N, typename T> ShGeneric< N, T > frac (const ShGeneric< N, T > &var)
 Fractional part.

template<int N, typename T> ShGeneric< N, T > pos (const ShGeneric< N, T > &x)
 Take positive part.

template<int N, typename T> ShGeneric< N, T > max (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Maximum.

 SH_SHLIB_CONST_SCALAR_OP (max)
template<int N, typename T> ShGeneric< N, T > min (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Minimum.

 SH_SHLIB_CONST_SCALAR_OP (min)
template<int N, typename T> ShGeneric< 1, T > max (const ShGeneric< N, T > &a)
 Maximum of all components.

template<int N, typename T> ShGeneric< 1, T > min (const ShGeneric< N, T > &a)
 Minimum of all components.

template<int N, typename T> ShGeneric< N, T > clamp (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b, const ShGeneric< N, T > &c)
 Componentwise clamping.

template<int N, typename T> ShGeneric< N, T > clamp (const ShGeneric< N, T > &a, const ShGeneric< 1, T > &b, const ShGeneric< 1, T > &c)
template<typename T> ShGeneric< 1, T > clamp (const ShGeneric< 1, T > &a, const ShGeneric< 1, T > &b, const ShGeneric< 1, T > &c)
 SH_SHLIB_CONST_TRINARY_OP_011 (clamp)
template<int N, typename T> ShGeneric< N, T > sat (const ShGeneric< N, T > &a)
 Componentwise saturation.

template<int N, typename T> ShGeneric< N, T > sign (const ShGeneric< N, T > &var)
 Componentwise sign.

template<typename T> ShGeneric< 1, T > max (const ShGeneric< 1, T > &a)
template<typename T> ShGeneric< 1, T > min (const ShGeneric< 1, T > &a)
 SH_SHLIB_USUAL_OPERATIONS (ShColor)
 SH_SHLIB_USUAL_SUBTRACT (ShColor)
 SH_SHLIB_LEFT_MATRIX_OPERATION (ShColor, operator|, M)
template<int N, typename T> ShGeneric< N, T > dx (const ShGeneric< N, T > &var)
 Screen-space x derivatives.

template<int N, typename T> ShGeneric< N, T > dy (const ShGeneric< N, T > &var)
 Screen-space y derivatives.

template<int N, typename T> ShGeneric< N, T > fwidth (const ShGeneric< N, T > &var)
 Maximum value of absolute derivatives.

template<typename T> ShGeneric< 2, T > gradient (const ShGeneric< 1, T > &var)
 Pair of screen-space derivatives.

template<int N, typename T> ShMatrix< 2, N, SH_TEMP, T > jacobian (const ShGeneric< N, T > &var)
 Jacobian matrix.

template<typename T> ShGeneric< 3, T > cross (const ShGeneric< 3, T > &left, const ShGeneric< 3, T > &right)
 Take the cross product of two 3-tuples.

template<int N, typename T> ShGeneric< 3, T > operator^ (const ShGeneric< 3, T > &left, const ShGeneric< 3, T > &right)
 Equivalent to cross(left, right).

template<int N, typename T> ShGeneric< N, T > normalize (const ShGeneric< N, T > &var)
 Normalize an n-tuple to unit length.

template<int N, typename T> ShGeneric< N, T > reflect (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Compute reflection vector.

template<int N, typename T> ShGeneric< N, T > refract (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b, const ShGeneric< 1, T > &c)
 Compute refraction vector.

template<int N, typename T> ShGeneric< N, T > faceforward (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Make a vector face the same way as another Negates b if it does not face the same way as a (i.e.

template<typename T> ShGeneric< 4, T > lit (const ShGeneric< 1, T > &a, const ShGeneric< 1, T > &b, const ShGeneric< 1, T > &c)
 Compute lighting coefficents.

template<int N, typename T> ShGeneric< 1, T > dot (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 Inner (dot) product.

template<int N, typename T> ShGeneric< 1, T > operator| (const ShGeneric< N, T > &left, const ShGeneric< N, T > &right)
 SH_SHLIB_CONST_N_OP_RETSIZE_BOTH (dot, 1)
template<int N, typename T> ShGeneric< 1, T > distance (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Euclidean Distance Computes the Euclidean distance between the two points a and b.

template<int N, typename T> ShGeneric< 1, T > distance_1 (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Manhattan Distance Computes the Manhattan distance between the two points a and b.

template<int N, typename T> ShGeneric< 1, T > distance_inf (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
 Inf Distance Computes the Inf norm distance between the two points a and b.

template<int N, typename T> ShGeneric< 1, T > length (const ShGeneric< N, T > &a)
 Euclidean Length Computes the euclidean distance between the zero vector and a.

template<int N, typename T> ShGeneric< 1, T > length_1 (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
template<int N, typename T> ShGeneric< 1, T > length_inf (const ShGeneric< N, T > &a, const ShGeneric< N, T > &b)
template<int M, int N, int P, ShBindingType Binding, ShBindingType Binding2, typename T> ShMatrix< M, P, SH_TEMP, T > operator| (const ShMatrix< M, N, Binding, T > &a, const ShMatrix< N, P, Binding2, T > &b)
 Matrix multiplication.

template<int M, int N, int P, ShBindingType Binding, ShBindingType Binding2, typename T> ShMatrix< M, P, SH_TEMP, T > operator * (const ShMatrix< M, N, Binding, T > &a, const ShMatrix< N, P, Binding2, T > &b)
template<int M, int N, ShBindingType Binding, typename T> ShGeneric< M, T > operator| (const ShMatrix< M, N, Binding, T > &a, const ShGeneric< N, T > &b)
 Matrix-tuple multiplication.

template<int M, int N, ShBindingType Binding, typename T> ShGeneric< M, T > operator * (const ShMatrix< M, N, Binding, T > &a, const ShGeneric< N, T > &b)
template<int M, int N, ShBindingType Binding, typename T> ShGeneric< N, T > operator| (const ShGeneric< M, T > &a, const ShMatrix< M, N, Binding, T > &b)
 Tuple-matrix multiplication.

template<int M, int N, ShBindingType Binding, typename T> ShGeneric< N, T > operator * (const ShGeneric< M, T > &a, const ShMatrix< M, N, Binding, T > &b)
template<int M, int N, ShBindingType Binding, typename T> ShMatrix< M, N, SH_TEMP, T > operator * (const ShMatrix< M, N, Binding, T > &a, const ShGeneric< 1, T > &b)
 Matrix-scalar multiplication.

template<int M, ShBindingType Binding, typename T> ShMatrix< M, 1, SH_TEMP, T > operator * (const ShMatrix< M, 1, Binding, T > &a, const ShGeneric< 1, T > &b)
template<int M, int N, ShBindingType Binding, typename T> ShMatrix< M, N, SH_TEMP, T > operator * (const ShGeneric< 1, T > &a, const ShMatrix< M, N, Binding, T > &b)
 Scalar-matrix multiplication.

template<int N, ShBindingType Binding, typename T> ShMatrix< 1, N, SH_TEMP, T > operator * (const ShGeneric< 1, T > &a, const ShMatrix< 1, N, Binding, T > &b)
template<int M, int N, ShBindingType Binding, typename T> ShMatrix< M, N, SH_TEMP, T > operator/ (const ShMatrix< M, N, Binding, T > &a, const ShGeneric< 1, T > &b)
 Matrix-scalar division.

template<ShBindingType Binding2, typename T2> ShAttrib1f det (const ShMatrix< 1, 1, Binding2, T2 > &matrix)
 Returns the determinant for the given matrix.

template<ShBindingType Binding2, typename T2> ShAttrib1f det (const ShMatrix< 2, 2, Binding2, T2 > &matrix)
template<int RowsCols, ShBindingType Binding2, typename T2> ShAttrib1f det (const ShMatrix< RowsCols, RowsCols, Binding2, T2 > &matrix)
template<int RowsCols, ShBindingType Binding2, typename T2> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T2 > 
cofactors (const ShMatrix< RowsCols, RowsCols, Binding2, T2 > &matrix)
 Returns the matrix of cofactors for the given matrix.

template<int M, int N, ShBindingType Binding2, typename T2> ShMatrix< N, M, SH_TEMP, T2 > transpose (const ShMatrix< M, N, Binding2, T2 > &matrix)
 Returns the transpose of the given matrix.

template<int RowsCols, ShBindingType Binding2, typename T2> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T2 > 
adjoint (const ShMatrix< RowsCols, RowsCols, Binding2, T2 > &matrix)
 Returns the adjoint of the given matrix.

template<int RowsCols, ShBindingType Binding2, typename T2> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T2 > 
inverse (const ShMatrix< RowsCols, RowsCols, Binding2, T2 > &matrix)
 Invert a matrix.

template<int N, typename T> ShMatrix< 1, N, SH_TEMP, T > rowmat (const ShGeneric< N, T > &s0)
template<int N, typename T> ShMatrix< 2, N, SH_TEMP, T > rowmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1)
template<int N, typename T> ShMatrix< 3, N, SH_TEMP, T > rowmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1, const ShGeneric< N, T > &s2)
template<int N, typename T> ShMatrix< 4, N, SH_TEMP, T > rowmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1, const ShGeneric< N, T > &s2, const ShGeneric< N, T > &s3)
template<int N, typename T> ShMatrix< N, 1, SH_TEMP, T > colmat (const ShGeneric< N, T > &s0)
template<int N, typename T> ShMatrix< N, 2, SH_TEMP, T > colmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1)
template<int N, typename T> ShMatrix< N, 3, SH_TEMP, T > colmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1, const ShGeneric< N, T > &s2)
template<int N, typename T> ShMatrix< N, 4, SH_TEMP, T > colmat (const ShGeneric< N, T > &s0, const ShGeneric< N, T > &s1, const ShGeneric< N, T > &s2, const ShGeneric< N, T > &s3)
template<int N, typename T> ShMatrix< N, N, SH_TEMP, T > diag (const ShGeneric< N, T > &a)
template<typename T> ShMatrix< 4, 4, SH_TEMP, T > rotate (const ShGeneric< 3, T > &axis, const ShGeneric< 1, T > &angle)
 3D Rotation about the given axis by the given angle

template<typename T> ShMatrix< 3, 3, SH_TEMP, T > rotate (const ShGeneric< 1, T > &angle)
 2D Rotation about the given angle

template<typename T> ShMatrix< 4, 4, SH_TEMP, T > translate (const ShGeneric< 3, T > &a)
 3D Translation

template<typename T> ShMatrix< 3, 3, SH_TEMP, T > translate (const ShGeneric< 2, T > &a)
 2D Translation

template<typename T> ShMatrix< 4, 4, SH_TEMP, T > scale (const ShGeneric< 3, T > &a)
 3D Scale

template<typename T> ShMatrix< 3, 3, SH_TEMP, T > scale (const ShGeneric< 2, T > &a)
 2D Scale

template<int N, typename T> ShMatrix< N, N, SH_TEMP, T > scale (const ShGeneric< 1, T > &a)
 Uniform scale in N-1 dimensions.

template<ShBindingType Binding, typename T> ShAttrib1f det (const ShMatrix< 1, 1, Binding, T > &matrix)
template<ShBindingType Binding, typename T> ShAttrib1f det (const ShMatrix< 2, 2, Binding, T > &matrix)
template<int RowsCols, ShBindingType Binding, typename T> ShAttrib1f det (const ShMatrix< RowsCols, RowsCols, Binding, T > &matrix)
template<ShBindingType Binding, typename T> ShMatrix< 1, 1, SH_TEMP, T > cofactors (const ShMatrix< 1, 1, Binding, T > &matrix)
template<ShBindingType Binding, typename T> ShMatrix< 2, 2, SH_TEMP, T > cofactors (const ShMatrix< 2, 2, Binding, T > &matrix)
template<int RowsCols, ShBindingType Binding, typename T> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T > 
cofactors (const ShMatrix< RowsCols, RowsCols, Binding, T > &matrix)
template<int M, int N, ShBindingType Binding, typename T> ShMatrix< N, M, SH_TEMP, T > transpose (const ShMatrix< M, N, Binding, T > &matrix)
template<int RowsCols, ShBindingType Binding, typename T> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T > 
adjoint (const ShMatrix< RowsCols, RowsCols, Binding, T > &matrix)
template<int RowsCols, ShBindingType Binding, typename T> ShMatrix< RowsCols, RowsCols,
SH_TEMP, T > 
inverse (const ShMatrix< RowsCols, RowsCols, Binding, T > &matrix)
template<int M, int N, typename T> ShGeneric< M, T > cast (const ShGeneric< N, T > &a)
 Casting.

template<int M> ShGeneric< M, float > cast (float a)
template<int M, int N, typename T> ShGeneric< M, T > fillcast (const ShGeneric< N, T > &a)
 Fill Casting.

template<int M> ShGeneric< M, float > fillcast (float a)
template<int M, int N, typename T> ShGeneric< M+N, T > join (const ShGeneric< M, T > &a, const ShGeneric< N, T > &b)
 Join two tuples Creates an M+N tuple with components of a first then b.

template<int N, typename T> void discard (const ShGeneric< N, T > &c)
 Fragment discard.

template<int N, typename T> void kill (const ShGeneric< N, T > &c)
 Fragment killing.

template<typename T> ShProgram freeze (const ShProgram &p, const T &uniform)
 Uniform freezing.

 SH_SHLIB_USUAL_NON_UNIT_OPS_RETTYPE (ShNormal, ShNormal)
template<int N, ShBindingType B1, typename T, bool S1> ShNormal< N, SH_TEMP, T, false > abs (const ShNormal< N, B1, T, S1 > &var)
template<int N, ShBindingType B1, typename T, bool S1> ShNormal< N, SH_TEMP, T, false > normalize (const ShNormal< N, B1, T, S1 > &var)
 SH_SHLIB_USUAL_SUBTRACT (ShNormal)
 SH_SHLIB_LEFT_MATRIX_OPERATION (ShNormal, operator|, M)
template<int N, ShBindingType B1, ShBindingType B2, typename T, bool S1, bool S2> ShGeneric< 1, T > operator| (const ShNormal< N, B1, T, S1 > &a, const ShNormal< N, B2, T, S2 > &b)
template<int N, ShBindingType B1, ShBindingType B2, typename T, bool S1, bool S2> ShGeneric< 1, T > operator| (const ShVector< N, B1, T, S1 > &a, const ShNormal< N, B2, T, S2 > &b)
template<int N, ShBindingType B1, ShBindingType B2, typename T, bool S1, bool S2> ShGeneric< 1, T > operator| (const ShNormal< N, B1, T, S1 > &a, const ShVector< N, B2, T, S2 > &b)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShNormal< 3, SH_TEMP, T, false > operator| (const ShMatrix< 4, 4, B1, T > &m, const ShNormal< 3, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShNormal< 2, SH_TEMP, T, false > operator| (const ShMatrix< 3, 3, B1, T > &m, const ShNormal< 2, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShNormal< 1, SH_TEMP, T, false > operator| (const ShMatrix< 2, 2, B1, T > &m, const ShNormal< 1, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPoint< 3, SH_TEMP, T, false > operator| (const ShMatrix< 4, 4, B1, T > &m, const ShPoint< 3, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPoint< 2, SH_TEMP, T, false > operator| (const ShMatrix< 3, 3, B1, T > &m, const ShPoint< 2, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPoint< 1, SH_TEMP, T, false > operator| (const ShMatrix< 2, 2, B1, T > &m, const ShPoint< 1, B2, T, S1 > &v)
 SH_SHLIB_USUAL_OPERATIONS_RETTYPE (ShPosition, ShPoint)
 SH_SHLIB_BINARY_RETTYPE_OPERATION (ShPosition, operator-, ShVector, N)
 SH_SHLIB_SPECIAL_RETTYPE_CONST_SCALAR_OP (ShPosition, operator-, ShVector, 1)
 SH_SHLIB_LEFT_MATRIX_RETTYPE_OPERATION (ShPosition, operator|, ShPoint, M)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPoint< 3, SH_TEMP, T, false > operator| (const ShMatrix< 4, 4, B1, T > &m, const ShPosition< 3, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPoint< 2, SH_TEMP, T, false > operator| (const ShMatrix< 3, 3, B1, T > &m, const ShPosition< 2, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShPosition< 1, SH_TEMP, T,
false > 
operator| (const ShMatrix< 2, 2, B1, T > &m, const ShPosition< 1, B2, T, S1 > &v)
 SH_SHLIB_USUAL_OPERATIONS (ShTexCoord)
 SH_SHLIB_USUAL_SUBTRACT (ShTexCoord)
template<int N, typename T> ShGeneric< N, T > acos (const ShGeneric< N, T > &var)
 Arccosine.

template<int N, typename T> ShGeneric< N, T > asin (const ShGeneric< N, T > &var)
 Arcsine.

template<int N, typename T> ShGeneric< N, T > atan (const ShGeneric< N, T > &var)
 Arctangent.

template<int N, typename T> ShGeneric< N, T > atan2 (const ShGeneric< N, T > &y, const ShGeneric< N, T > &x)
 Arctangent of two variables.

template<int N, typename T> ShGeneric< N, T > cos (const ShGeneric< N, T > &var)
 Cosine.

template<int N, typename T> ShGeneric< N, T > sin (const ShGeneric< N, T > &var)
 Sine.

template<int N, typename T> ShGeneric< N, T > tan (const ShGeneric< N, T > &var)
 Tangent.

 SH_SHLIB_USUAL_NON_UNIT_OPS_RETTYPE (ShVector, ShVector)
template<int N, ShBindingType B1, typename T, bool S1> ShVector< N, SH_TEMP, T, false > abs (const ShVector< N, B1, T, S1 > &var)
template<int N, ShBindingType B1, typename T, bool S1> ShVector< N, SH_TEMP, T, false > normalize (const ShVector< N, B1, T, S1 > &var)
 SH_SHLIB_USUAL_SUBTRACT (ShVector)
 SH_SHLIB_LEFT_MATRIX_OPERATION (ShVector, operator|, M)
template<int N, ShBindingType B1, ShBindingType B2, typename T, bool S1, bool S2> ShGeneric< 1, T > operator| (const ShVector< N, B1, T, S1 > &a, const ShVector< N, B2, T, S2 > &b)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShVector< 3, SH_TEMP, T, false > operator| (const ShMatrix< 4, 4, B1, T > &m, const ShVector< 3, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShVector< 2, SH_TEMP, T, false > operator| (const ShMatrix< 3, 3, B1, T > &m, const ShVector< 2, B2, T, S1 > &v)
template<ShBindingType B1, ShBindingType B2, typename T, bool S1> ShVector< 1, SH_TEMP, T, false > operator| (const ShMatrix< 2, 2, B1, T > &m, const ShVector< 1, B2, T, S1 > &v)
template<> SH_DLLEXPORT int OffsetRange< std::string >::absIndex (std::string index, int offset, const ShProgramNode::VarList &v) const
template<typename T> ShProgram operator<< (const ShProgram &p, const ShManipulator< T > &m)
 Applies a manipulator to inputs of a ShProgram.

template<typename T> ShProgram operator<< (const ShManipulator< T > &m, const ShProgram &p)
 Applies a manipulator to the outputs of a ShProgram.

template<typename T> ShManipulator< T > shSwizzle (T i0)
 creates a permutation manipulator which gives outputSize outputs when applied to a ShProgram

template<typename T> ShManipulator< T > shSwizzle (T i0, T i1)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4, T i5)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4, T i5, T i6)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4, T i5, T i6, T i7)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4, T i5, T i6, T i7, T i8)
template<typename T> ShManipulator< T > shSwizzle (T i0, T i1, T i2, T i3, T i4, T i5, T i6, T i7, T i8, T i9)
template<typename T> ShManipulator< T > shSwizzle (std::vector< T > indices)
template<typename T> ShManipulator< T > shRange (T i)
 range manipulator that permutes ranges of shader

template<typename T> ShManipulator< T > shRange (T start, T end)
template<typename T> ShManipulator< T > shExtract (T k)
 extract is a manipulator that removes the kth output and appends it before all other outputs.

template<typename T> ShManipulator< T > shInsert (T k)
 insert is a manipulator that does the opposite of extract.

template<typename T> ShManipulator< T > shDrop (T k)
 drop is a manipulator that discards the k outputs.

template<int R, int C, ShBindingType B, typename Ty> std::ostream & operator<< (std::ostream &out, const ShMatrix< R, C, B, Ty > &m)
 Matrix output operator.

template<int Rows, int Cols, ShBindingType Binding, typename T> std::ostream & operator<< (std::ostream &out, const ShMatrix< Rows, Cols, Binding, T > &m)
template<typename T> ShProgram keep (const std::string &name="")
 Creates a keep nibble. The keep nibble passes through one input of type T named with the given name.

template<typename T> ShProgram dup (const std::string &name="var")
 Creates a dup nibble. The dup nibble makes an extra copy of on input of type T named with the given name.

template<typename T> ShProgram lose (const std::string &name="")
 Creates a lose nibble. The lose nibble discards through one input of type T named with the given name.

template<typename T> ShProgram access (const ShBaseTexture1D< T > &tex, const std::string &tcname="texcoord", const std::string &name="result")
 2D texture lookup nibble Inputs: IN(0) ShTexCoord1f texcoord Outputs: OUT(0) name = tex(tc)

template<typename T> ShProgram access (const ShBaseTexture2D< T > &tex, const std::string &tcname="texcoord", const std::string &name="result")
 2D texture lookup nibble Inputs: IN(0) ShTexCoord2f texcoord Outputs: OUT(0) name = tex(tc)

template<typename T> ShProgram access (const ShBaseTextureRect< T > &tex, const std::string &tcname="texcoord", const std::string &name="result")
 Rect texture lookup nibble Inputs: IN(0) ShTexCoord2f texcoord Outputs: OUT(0) name = tex(tc).

template<typename T> ShProgram access (const ShBaseTexture3D< T > &tex, const std::string &tcname="texcoord", const std::string &name="result")
 3D texture lookup nibble Inputs: IN(0) ShTexCoord3f texcoord Outputs: OUT(0) name = tex(tc)

template<typename T> ShProgram access (const ShBaseTextureCube< T > &tex, const std::string &tcname="texcoord", const std::string &name="result")
 Cube texture lookup nibble Inputs: IN(0) ShTexCoord3f texcoord Outputs: OUT(0) name = tex(tc).

template<typename T2, int Rows, int Cols, ShBindingType Binding, typename T> ShProgram transform (const ShMatrix< Rows, Cols, Binding, T > &m, const std::string &name="result")
 transformation nibble Creates a nibble that transforms a variable of type T2 by a matrix of type ShMatrix<Rows, Cols, Binding, T> Inputs: IN(0) attrib Outputs: OUT(0) T2 name = m | attrib

template<typename T, typename T2> ShProgram cast (const std::string &name="result")
 Casting nibble Casts from tuple type T to type T2 If T::typesize < T2::typesize, pads with 0 components at end. If T::typesize > T2::typesize, truncates components at end. Inputs: IN(0) T in Outputs: OUT(0) T2 name.

template<typename T, typename T2> ShProgram fillcast (const std::string &name="result")
 Fill-Casting nibble Casts from tuple type T to type T2 If T::typesize < T2::typesize, pads with repeated last component at end. If T::typesize > T2::typesize, truncates components at end. Inputs: IN(0) T in Outputs: OUT(0) T2 name.

 SHNIBBLE_UNARY_OP (abs, abs(x))
 SHNIBBLE_UNARY_OP (acos, acos(x))
 SHNIBBLE_UNARY_OP (asin, asin(x))
 SHNIBBLE_UNARY_OP (cos, cos(x))
 SHNIBBLE_UNARY_OP (frac, frac(x))
 SHNIBBLE_UNARY_OP (sin, sin(x))
 SHNIBBLE_UNARY_OP (sqrt, sqrt(x))
 SHNIBBLE_UNARY_OP (normalize, normalize(x))
 SHNIBBLE_UNARY_OP (pos, pos(x))
 SHNIBBLE_BINARY_OP (pow, pow(a, b)) SHNIBBLE_BINARY_OP(mod
 mod (a, b)) SHNIBBLE_BINARY_OP(min
 min (a, b)) SHNIBBLE_BINARY_OP(max
 max (a, b)) template< typename T > ShProgram dot(const std
void insert_branch_instructions (ShProgram &p)
 Insert instructions representing each conditional branch.

void remove_branch_instructions (ShProgram &p)
 Remove instructions representing conditional branches.

void straighten (ShProgram &p, bool &changed)
 Merge blocks with redundant edges.

void remove_dead_code (ShProgram &p, bool &changed)
 Remove code that serves no purpose in the given program.

void copy_propagate (ShProgram &p, bool &changed)
void forward_substitute (ShProgram &p, bool &changed)
void optimize (ShProgram &p, int level)
 Optimize the program with the given optimization level.

void optimize (const ShProgramNodePtr &n, int level)
void optimize (ShProgram &p)
 Optimize the program with the current context's default optimization level.

void optimize (const ShProgramNodePtr &n)
SH_DLLEXPORT void add_value_tracking (ShProgram &prg)
void checkCond (bool cond, const std::string &message="Internal Error")
template<ShBindingType B, typename T, ShBindingType B2> ShQuaternion< SH_TEMP, T > operator * (const ShAttrib< 1, B2, T > &c, const ShQuaternion< B, T > &q)
template<ShBindingType B1, ShBindingType B2, typename T> ShQuaternion< SH_TEMP, T > slerp (const ShQuaternion< B1, T > &q1, const ShQuaternion< B2, T > &q2, const ShAttrib1f &t)
template<ShBindingType B, typename T> std::ostream & operator<< (std::ostream &out, const ShQuaternion< B, T > &q)
template<typename T, typename S> ShPointer< T > shref_static_cast (const ShPointer< S > &other)
template<typename T, typename S> ShPointer< T > shref_dynamic_cast (const ShPointer< S > &other)
template<typename T, typename S> ShPointer< T > shref_const_cast (const ShPointer< S > &other)
std::ostream & operator<< (std::ostream &out, const ShStatement &stmt)
ShProgram connect (const ShChannelNodePtr &node, const ShProgram &program)
ShStream combine (const ShStream &left, const ShStream &right)
ShStream operator & (const ShStream &left, const ShStream &right)
 An operator alias for combine between two streams.

ShProgram connect (const ShStream &stream, const ShProgram &program)
 Apply a program to a stream.

ShProgram operator<< (const ShProgram &program, const ShStream &stream)
 An operator alias for connect(p,s).

template<typename T1, typename T2> ShStream combine (const ShChannel< T1 > &left, const ShChannel< T2 > &right)
 Combine two streams.

template<typename T2> ShStream combine (const ShStream &left, const ShChannel< T2 > &right)
 Combine a stream and a channel.

template<typename T1> ShStream combine (const ShChannel< T1 > &left, const ShStream &right)
 Combine a channel and a stream.

template<typename T1, typename T2> ShStream operator & (const ShChannel< T1 > &left, const ShChannel< T2 > &right)
 An operator alias for combine between channels.

template<typename T2> ShStream operator & (const ShStream &left, const ShChannel< T2 > &right)
 An operator alias for combine between a stream and a channel.

template<typename T1> ShStream operator & (const ShChannel< T1 > &left, const ShStream &right)
 An operator alias for combine between a channel and a stream.

std::ostream & operator<< (std::ostream &out, const ShSwizzle &swizzle)
ShProgram shBeginShader (const std::string &target)
void shEndShader ()
void shCompile (ShProgram &prg)
 Force (re)compilation of a program under its default target.

void shCompile (ShProgram &prg, const std::string &target)
 Force (re)compilation of a program for a given target.

void shCompileShader (ShProgram &prg)
void shCompileShader (const std::string &target, ShProgram &prg)
void shBind (ShProgram &prg)
 Bind a program using the program's default target.

void shBind (ShProgram &prg, const std::string &target)
void shBindShader (ShProgram &shader)
void shBindShader (const std::string &target, ShProgram &shader)
bool shSetBackend (const std::string &name)
 Switch to a particular backend.

void shInit ()
 SH Initialization Function.

void shIf (bool)
void shEndIf ()
void shElse ()
void shWhile (bool)
void shEndWhile ()
void shDo ()
void shUntil (bool)
void shFor (bool)
void shEndFor ()
void ShBreak ()
void ShContinue ()
SH_DLLEXPORT void shCompileShader (ShProgram &prg, const std::string &target)
SH_DLLEXPORT void shBind (const std::string &target, ShProgram &shader)
 Bind a program with the given target.

SH_DLLEXPORT void shBreak ()
SH_DLLEXPORT void shContinue ()
std::ostream & shPrintIndent (std::ostream &out, int indent)
 Print "indent" spaces to out.

std::ostream & operator<< (std::ostream &out, const ShVariable &v)

Variables

const ShOperationInfo opInfo []
 Update this if you add or change operations in ShOperation.

char * tokenNames []
 Names of token types.

const char * ShBindingTypeName []
const char * ShSemanticTypeName []


Detailed Description

The main Sh namespace.

All Sh classes, functions and objects reside within this namespace.


Enumeration Type Documentation

enum SH::ShCubeDirection
 

Cube map faces.

An enumeration of names for the various faces of a cube map.

Definition at line 52 of file ShTextureNode.hpp.

enum SH::ShOperation
 

Kinds of operations.

If you change this, be sure to change the opInfo array in ShStatement.cpp

See also:
opInfo
Enumeration values:
SH_OP_ASN  Assignment.
SH_OP_NEG  Unary negation.
SH_OP_ADD  Binary addition.
SH_OP_MUL  Binary multiplication.

Can be scalar on left or right side.

SH_OP_DIV  Binary division. Can be scalar on right side.
SH_OP_SLT  Set less than.
SH_OP_SLE  Set less than or equal.
SH_OP_SGT  Set greater than.
SH_OP_SGE  Set greater than or equal.
SH_OP_SEQ  Set equal.
SH_OP_SNE  Set not equal.
SH_OP_ABS  Unary absolute value.
SH_OP_ACOS  Unary arccosine (result between -pi/2 and pi/2).
SH_OP_ASIN  Unary arcsine (result between 0 and pi).
SH_OP_ATAN  Unary arctan (result between -pi/2 and pi/2).
SH_OP_ATAN2  Binary arctan of src[1]/src[0] (result between -pi and pi).
SH_OP_CBRT  Unary componentwise cube root.
SH_OP_CEIL  Unary smallest integer not less than src[0].
SH_OP_COS  Unary cosine function.
SH_OP_CMUL  Unary product of components.
SH_OP_CSUM  Unary sum of components.
SH_OP_DOT  Binary dot product.
SH_OP_DX  Unary derivative in x.
SH_OP_DY  Unary derivative in y.
SH_OP_EXP  Unary natural exponent.
SH_OP_EXP2  Unary base-2 exponent.
SH_OP_EXP10  Unary base-10 exponent.
SH_OP_FLR  Unary smallest integer not greater than src[0].
SH_OP_FRAC  Unary fractional part.
SH_OP_LRP  Trinary linear interpolation src[0] * src[1] + (1-src[0]) * src[2].
SH_OP_MAD  Multiply and add src[0] * src[1] + src[2].
SH_OP_MAX  Binary componentwise maximum.
SH_OP_MIN  Binary componentwise minimum.
SH_OP_MOD  Binary float modulus, result has same sign as src[0].
SH_OP_LOG  Unary natural log.
SH_OP_LOG2  Unary base-2 log.
SH_OP_LOG10  Unary base-10 log.
SH_OP_POW  Binary power.
SH_OP_RCP  Unary reciprocal.
SH_OP_RND  Unary round to neareset integer.
SH_OP_RSQ  Unary reciprocal square root.
SH_OP_SIN  Unary sine function.
SH_OP_SGN  Unary componentwise sign.
SH_OP_SQRT  Unary square root.
SH_OP_TAN  Unary tangent.
SH_OP_NORM  Normalize vector.
SH_OP_XPD  Cross product.
SH_OP_TEX  Texture lookup (0..1).
SH_OP_TEXI  Texture lookup, indexed mode (0..width - 1).
SH_OP_TEXD  Texture lookup with derivatives.
SH_OP_COND  Conditional assignment: dst[i] = (src[0][i] > 0.0 ? src[1][i] : src[2][i]).
SH_OP_KIL  Conditionally kill fragment (if for any i, src[0][i] > 0).
SH_OP_OPTBRA  Used in the optimizer to indicate a conditional branch dependency.

This should never show up in code passed to the backend.

SH_OP_FETCH  Unary (takes a stream). Fetch an element from a stream. Similar to TEX.

Definition at line 43 of file ShStatement.hpp.

enum SH::ShTextureDims
 

Texture formats.

An enumeration of the various ways textures can be laid out.

Definition at line 41 of file ShTextureNode.hpp.

enum SH::ShTokenType
 

Possible types a token can have.

If you add to this list or change it, be sure to change tokenNames in ShToken.cpp.

Definition at line 43 of file ShToken.hpp.

Referenced by SH::ShToken::type().


Function Documentation

template<typename T1>
ShStream SH::combine const ShChannel< T1 > &  left,
const ShStream &  right
 

Combine a channel and a stream.

This concatenates the given channel to the start of the list of channels in the stream.

Definition at line 71 of file ShStreamImpl.hpp.

References SH::ShStream::prepend().

template<typename T2>
ShStream SH::combine const ShStream &  left,
const ShChannel< T2 > &  right
 

Combine a stream and a channel.

This concatenates the given channel to the end of the list of channels in the stream.

Definition at line 63 of file ShStreamImpl.hpp.

References SH::ShStream::append().

template<typename T1, typename T2>
ShStream SH::combine const ShChannel< T1 > &  left,
const ShChannel< T2 > &  right
 

Combine two streams.

This concatenates the list of channels in the component streams.

Definition at line 55 of file ShStreamImpl.hpp.

References SH::ShStream::append().

SH_DLLEXPORT ShProgram SH::combine ShProgram  a,
ShProgram  b
 

Combine a and b.

Use all inputs from a and b and all outputs from a and b, concatenated in order, and perform all operations from both programs.

Definition at line 179 of file ShAlgebra.cpp.

References SH::ShProgram::node(), and optimize().

Referenced by namedCombine(), namedConnect(), and operator &().

SH_DLLEXPORT ShProgram SH::connect const ShStream &  stream,
const ShProgram &  program
 

Apply a program to a stream.

This function connects streams onto the output of programs TODO: is this right? why is the stream argument first?

Definition at line 105 of file ShStream.cpp.

References SH::ShStream::begin(), connect(), and SH::ShStream::end().

template<typename T>
ShProgram SH::connect const ShChannel< T > &  channel,
const ShProgram &  program
 

Apply a programs to a single channel.

Bind a channel as an input to a program. The implementation supports currying, and returns a program with one less input.

Definition at line 122 of file ShChannelImpl.hpp.

References connect(), SH_BEGIN_PROGRAM, and SH_END_PROGRAM.

SH_DLLEXPORT ShProgram SH::connect ShProgram  a,
ShProgram  b
 

Replace inputs of b with outputs of a.

Functional composition. Let A = a.outputs.size(), B = b.inputs.size(). If A > B, extra outputs are kept at end If A < B, extra inputs are kept at end

Definition at line 44 of file ShAlgebra.cpp.

References SH::ShProgram::node(), optimize(), SH_OP_ASN, and shError().

Referenced by connect(), operator<<(), renameInput(), and renameOutput().

template<int N, typename T>
ShGeneric< N, T > SH::lerp const ShGeneric< N, T > &  f,
const ShGeneric< N, T > &  a,
const ShGeneric< N, T > &  b
 

Linear interpolation.

Blend between two tuples. The blend value can be a scalar or a tuple.

Definition at line 359 of file ShLibArithImpl.hpp.

Referenced by lerp(), and ShUtil::ShNoise< M, T, P >::perlin().

SH_DLLEXPORT ShProgram SH::namedAlign ShProgram  a,
ShProgram  b
 

Swizzles named outputs of a to match named inputs of b.

This only works on programs with inputs/outputs that all have unique names. Also, the inputs of b must be a subset of the outputs of a.

Definition at line 363 of file ShAlgebra.cpp.

References SH::ShProgram::node().

SH_DLLEXPORT ShProgram SH::namedCombine ShProgram  a,
ShProgram  b
 

Combine a and b.

Use all inputs from a and b and all outputs from a and b, combined by name, and perform all operations from both programs.

This combine detects pairs of inputs with matching names and types. If this occurs, the later input is discarded and replaced with a copy of the earlier one. Unnamed inputs are all considered to be unique.

For instance, if a has inputs x, y, k, x, z and b has inputs w, y, x, v then the result has inputs x, y, k, z, w, v

Definition at line 258 of file ShAlgebra.cpp.

References combine().

SH_DLLEXPORT ShProgram SH::namedConnect ShProgram  a,
ShProgram  b,
bool  keepExtra = false
 

Replace inputs of b with outputs of a.

Functional composition. The outputs of a and inputs of b must all be named.

For each output of a in positional order, this connects the output with an input of b of the same name/type that is not already connected with another output of a. Extra inputs remain at the end. Extra outputs remain iff keepExtra = true

Definition at line 262 of file ShAlgebra.cpp.

References combine(), SH::ShProgram::node(), SH_BEGIN_PROGRAM, and shSwizzle().

template<int R, int C, ShBindingType B, typename Ty>
std::ostream& operator<< std::ostream &  out,
const ShMatrix< R, C, B, Ty > &  m
 

Matrix output operator.

Print a representation of the given (uniform or constant) matrix's values to the given stream.

template<typename T>
ShProgram SH::operator<< const ShManipulator< T > &  m,
const ShProgram &  p
 

Applies a manipulator to the outputs of a ShProgram.

This makes sense since >> is left associative, so p >> m >> q looks like manipulating p's output channels to use as q's inputs.

Definition at line 175 of file ShManipulatorImpl.hpp.

References connect(), SH::ShManipulator< T >::getRanges(), SH_BEGIN_PROGRAM, and shError().

template<typename T>
ShProgram SH::operator<< const ShProgram &  p,
const ShManipulator< T > &  m
 

Applies a manipulator to inputs of a ShProgram.

The permutation ranges are more restrictive than output manipulation since inputs cannot be repeated, and should not be discarded.

This means that ranges in the manipulator must not overlap, and any inputs not in a range are given a default value of 0.

Definition at line 118 of file ShManipulatorImpl.hpp.

References connect(), SH::ShManipulator< T >::getRanges(), SH_BEGIN_PROGRAM, and shError().

template<typename T>
ShProgram SH::operator<< const ShProgram &  program,
const ShChannel< T > &  channel
 

Equivalent to connect(p,c).

Bind a channel as an input to a program. The implementation supports currying, and returns a program with one less input.

Definition at line 132 of file ShChannelImpl.hpp.

References connect().

template<int N, typename T>
ShProgram operator<< ShProgram  a,
const ShGeneric< N, T > &  v
 

Application operator.

The operator used for combine can also be used to apply a program to a variable. The implementation supports currying with delayed read, which is equivalent to replacing an input with a parameter.

Definition at line 128 of file ShAlgebra.hpp.

References connect(), SH::ShVariable::node(), SH_BEGIN_PROGRAM, and SH_END_PROGRAM.

SH_DLLEXPORT ShProgram SH::replaceUniform ShProgram  a,
const ShVariable &  var
 

Replaces parameter with attribute.

Replaces a uniform parameter by appending a varying input attribute to the end of the list of inputs.

Definition at line 393 of file ShAlgebra.cpp.

References SH::ShVariable::node(), SH::ShProgram::node(), optimize(), shError(), SH::ShVariable::size(), and SH::ShVariable::uniform().

Referenced by operator>>().

SH_DLLEXPORT void SH::shBindShader const std::string &  target,
ShProgram &  shader
 

Deprecated:
Use shBind() instead.

Definition at line 110 of file ShSyntax.cpp.

References shBind().

SH_DLLEXPORT void SH::shBindShader ShProgram &  shader  ) 
 

Deprecated:
Use shBind() instead.

Definition at line 105 of file ShSyntax.cpp.

References shBind().

SH_DLLEXPORT void shCompileShader ShProgram &  prg,
const std::string &  target
 

Deprecated:
Use shCompile() instead

SH_DLLEXPORT void SH::shCompileShader ShProgram &  prg  ) 
 

Deprecated:
Use shCompile() instead

Definition at line 83 of file ShSyntax.cpp.

References shCompile().

template<typename T>
ShManipulator< T > SH::shDrop k  ) 
 

drop is a manipulator that discards the k outputs.

int version: discards k'th output

string version: drops given name to beginning

Definition at line 336 of file ShManipulatorImpl.hpp.

SH_DLLEXPORT void SH::shError const ShException &  exception  ) 
 

Throws the given exception when ShContext::current()->throw_errors() is on.

Otherwise prints error message.

Definition at line 33 of file ShError.cpp.

References SH::ShException::message().

Referenced by SH::ShTokenizer::blockList(), SH::ShProgramNode::code(), SH::ShProgramNode::compile(), connect(), SH::ShTokenizer::getArgument(), SH::ShImage::loadPng(), SH::ShSwizzle::operator *=(), SH::ShBaseTexture2D< T >::operator()(), operator<<(), SH::ShSwizzle::operator[](), SH::ShTokenizer::popArgQueue(), SH::ShTokenizer::processArg(), replaceUniform(), and SH::ShSwizzle::ShSwizzle().

template<typename T>
ShManipulator< T > SH::shExtract k  ) 
 

extract is a manipulator that removes the kth output and appends it before all other outputs.

int version: if k >= 0, then take element k (indices start at 0) if k < 0, take element outputs.size + k

string version: extracts given name to beginning

Definition at line 314 of file ShManipulatorImpl.hpp.

SH_DLLEXPORT void SH::shInit  ) 
 

SH Initialization Function.

The function needs to be called prior to the use of any other SH functions. Additionally, in Windows, this function needs to be called after a OpenGL context/window has been created.

Definition at line 123 of file ShSyntax.cpp.

template<typename T>
ShManipulator< T > SH::shInsert k  ) 
 

insert is a manipulator that does the opposite of extract.

It moves the first output to the kth output and shifts the rest of the outputs accordingly.

int version: if k >= 0, then move to element k (indices start at 0) if k < 0, move to element outputs.size + k

string version: inserts first output to the position of the given name

Definition at line 324 of file ShManipulatorImpl.hpp.

References SH::ShManipulator< T >::toString().

template<typename T>
ShManipulator< T > SH::shSwizzle i0  ) 
 

creates a permutation manipulator which gives outputSize outputs when applied to a ShProgram

Empty permutes are not allowed because the compiler would not be able to resolve ambiguity.

if an index >= 0, then uses index'th output if index < 0, then uses program size + index'th output

Definition at line 220 of file ShManipulatorImpl.hpp.

Referenced by namedConnect().


Variable Documentation

SH_DLLEXPORT const ShOperationInfo SH::opInfo
 

Update this if you add or change operations in ShOperation.

See also:
ShOperation

Definition at line 35 of file ShStatement.cpp.

Referenced by remove_dead_code().

char* SH::tokenNames[]
 

Names of token types.

Change this if you change the ShTokenType enumeration.

See also:
ShTokenType

Definition at line 38 of file ShToken.cpp.

Referenced by SH::ShToken::print().


Generated on Mon Oct 18 14:17:53 2004 for Sh by doxygen 1.3.7