Difference between revisions of "GLSL MAT"

From TouchDesigner Documentation
Jump to: navigation, search
(TD Editor)
(TD Editor)
Line 15: Line 15:
 
{{ParMenu
 
{{ParMenu
 
|Parorder=0
 
|Parorder=0
|Parsummary=
+
|Parsummary=Pick what version of GLSL to compile the shader with.
 
|Parlabel=GLSL Version
 
|Parlabel=GLSL Version
 
|Paritems=
 
|Paritems=
Line 80: Line 80:
 
}}
 
}}
 
{{ParDatRef
 
{{ParDatRef
|Parsummary=
+
|Parsummary=Path to the DAT that holds the vertex shader code.
 
|Parlabel=Vertex Shader
 
|Parlabel=Vertex Shader
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 88: Line 88:
 
}}
 
}}
 
{{ParDatRef
 
{{ParDatRef
|Parsummary=
+
|Parsummary=Path to the DAT that holds the pixel shader code.
 
|Parlabel=Pixel Shader
 
|Parlabel=Pixel Shader
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 96: Line 96:
 
}}
 
}}
 
{{ParButton
 
{{ParButton
|Parsummary=
+
|Parsummary=This will read all the declared (and used) uniforms in the compiled GLSL shader, and fill in the various name fields for the uniform parameters.
 
|Parlabel=Load Uniform Names
 
|Parlabel=Load Uniform Names
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 104: Line 104:
 
}}
 
}}
 
{{ParButton
 
{{ParButton
|Parsummary=
+
|Parsummary=This will clear all of the name fields for the uniform parameters.
 
|Parlabel=Clear Uniform Names
 
|Parlabel=Clear Uniform Names
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 112: Line 112:
 
}}
 
}}
 
{{ParDatRef
 
{{ParDatRef
|Parsummary=
+
|Parsummary=Path to the DAT that holds the geometry shader code.
 
|Parlabel=Geometry Shader
 
|Parlabel=Geometry Shader
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 121: Line 121:
 
{{ParMenu
 
{{ParMenu
 
|Parorder=6
 
|Parorder=6
|Parsummary=
+
|Parsummary=The type of geometry that will be inputed into the Geometry Shader.
 
|Parlabel=Input Primitive Type
 
|Parlabel=Input Primitive Type
 
|Paritems=
 
|Paritems=
Line 152: Line 152:
 
{{ParMenu
 
{{ParMenu
 
|Parorder=7
 
|Parorder=7
|Parsummary=
+
|Parsummary=The type of geometry that the Geometry Shader will output.
 
|Parlabel=Output Primitive Type
 
|Parlabel=Output Primitive Type
 
|Paritems=
 
|Paritems=
Line 182: Line 182:
 
}}
 
}}
 
{{ParInteger
 
{{ParInteger
|Parsummary=
+
|Parsummary=The maximum number of vertices the Geometry Shader will output.
 
|Parlabel=Num Output Vertices
 
|Parlabel=Num Output Vertices
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 190: Line 190:
 
}}
 
}}
 
{{ParToggle
 
{{ParToggle
|Parsummary=
+
|Parsummary=Enables support for two-sided coloring. When this is enabled the Vertex and/or Geometry shader can write to gl_FrontColor, gl_BackColor, gl_FrontSecondaryColor and gl_BackSecondaryColor and the correct color will be placed into gl_Color and gl_SecondaryColor in the Pixel shader depending on if the primitive's front face or back face is facing the camera. When this is disabled the values placed into gl_FrontColor and gl_FrontSecondaryColor are passed to gl_Color and gl_SecondaryColor regardless of which side of the primitive is facing the camera.
 
|Parlabel=Two Sided Coloring
 
|Parlabel=Two Sided Coloring
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 198: Line 198:
 
}}
 
}}
 
{{ParMatRef
 
{{ParMatRef
|Parsummary=
+
|Parsummary=This Material will inherit all of the Textures and Uniforms from the GLSL Material referenced in this parameter.
 
|Parlabel=Inherit Uniforms/Samplers from
 
|Parlabel=Inherit Uniforms/Samplers from
 
|OPfamily=MAT
 
|OPfamily=MAT
Line 207: Line 207:
 
{{ParMenu
 
{{ParMenu
 
|Parorder=11
 
|Parorder=11
|Parsummary=
+
|Parsummary=Allows lighting space switch from the current default World Space to legacy Camera Space which was used for TouchDesigner 088.
 
|Parlabel=Lighting Space
 
|Parlabel=Lighting Space
 
|Paritems=
 
|Paritems=

Revision as of 16:14, 30 August 2017

  • Invalid title: ""

Summary
[edit]

The GLSL MAT allows you to write or import custom materials into TouchDesigner. When there are compile errors in a GLSL shader, a blue/red checkerboard error shader will be displayed.

For more information on writing a shader, see Write a GLSL Material, and the GLSL Category.

PythonIcon.png[[{{{opClass}}}]]


Parameters - Page

Template:ParMenu Template:ParDatRef Template:ParDatRef Template:ParButton Template:ParButton Template:ParDatRef Template:ParMenu Template:ParMenu Template:ParInteger Template:ParToggle Template:ParMatRef Template:ParMenu


Parameters - Page

Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef


Parameters - Page

Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef Template:ParString Template:ParTopRef


Parameters - Page

Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat


Parameters - Page

Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat Template:ParString Template:ParFloat


Parameters - Page

Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu


Parameters - Page

Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu Template:ParString Template:ParMenu Template:ParChopRef Template:ParMenu Template:ParMiniMenu


Parameters - Page

Template:ParString Template:ParObjRef Template:ParObjRef Template:ParString Template:ParObjRef Template:ParObjRef Template:ParString Template:ParObjRef Template:ParObjRef Template:ParString Template:ParObjRef Template:ParObjRef Template:ParString Template:ParObjRef Template:ParObjRef


Parameters - Page

Template:ParToggle Template:ParMenu Template:ParSopRef Template:ParString Template:ParString Template:ParString Template:ParMatRef


Parameters - Common Page

Blending

Blending is summing the color value of the pixel being drawn and the pixel currently present in the Color-Buffer. Blending is typically used to simulate Transparency. The blending equation is: Final Pixel Value = (Source Blend * Source Color) + (Dest Blend * Destination Color)


Blending(Transparency) blending - This toggle enables and disables blending. However see the wiki article Transparency.  

Source Color * srcblend - - This value is multiplied by the color value of the pixel that is being written to the Color-Buffer (also know as the Source Color).

  • Zero zero -
  • Dest Color dcol -
  • One Minus Dest Color omdcol -
  • Source Alpha sa -
  • One Minus Source Alpha omsa -
  • Dest Alpha da -
  • One Minus Dest Alpha omda -
  • Source Alpha Saturate sas -
  • One one -

Destination Color * destblend - - This value is multiplied by the color value of the pixel currently in the Color-Buffer (also known as the Destination Color).

  • One one -
  • Src Color scol -
  • One Minus Src Color omscol -
  • Source Alpha sa -
  • One Minus Source Alpha omsa -
  • Dest Alpha da -
  • One Minus Dest Alpha omda -
  • Zero zero -

Separate Alpha Function separatealphafunc - This toggle enables and disables separate blending options for the alpha values.  

Source Alpha * srcblenda - - This value is multiplied by the alpha value of the pixel that is being written to the Color-Buffer (also know as the Source Alpha).

  • Zero zero -
  • Dest Color dcol -
  • One Minus Dest Color omdcol -
  • Source Alpha sa -
  • One Minus Source Alpha omsa -
  • Dest Alpha da -
  • One Minus Dest Alpha omda -
  • Source Alpha Saturate sas -
  • One one -

Destination Alpha * destblenda - - This value is multiplied by the alpha value of the pixel currently in the Color-Buffer (also known as the Destination Alpha).

  • One one -
  • Src Color scol -
  • One Minus Src Color omscol -
  • Source Alpha sa -
  • One Minus Source Alpha omsa -
  • Dest Alpha da -
  • One Minus Dest Alpha omda -
  • Zero zero -

Depth Test

Depth-Testing is comparing the depth value of the pixel being drawn with the pixel currently in the Frame-Buffer. A pixel that is determined to be in-front of the pixel currently in the Frame-Buffer will be drawn over it. Pixels that are determined to be behind the pixel currently in the Frame-Buffer will not be drawn. Depth-Testing allows geometry in a 3D scene to occlude geometry behind it, and be occluded by geometry in-front of it regardless of the order the geometry was drawn.

For a more detailed description of Depth-Testing, refer to the Depth-Test article.


Depth Test depthtest - Enables and disables the Depth-Test. If the depth-test is disabled, depths values aren't written to the Depth-Buffer.  

Depth Test Function depthfunc - - The depth value of the pixel being drawn is compared to the depth value currently in the depth-buffer using this function. If the test passes then the pixel is drawn to the Frame-Buffer. If the test fails the pixel is discarded and no changes are made to the Frame-Buffer.

  • Less Than less -
  • Less Than or Equal lessorequal -
  • Equal equal -
  • Greater Than greater -
  • Greater Than or Equal greaterorequal -
  • Not Equal notequal -
  • Always always -

Write Depth Values depthwriting - If Write Depth Values is on, pixels that pass the depth-test will write their depth value to the Depth-Buffer. If this isn't on then no changes will be made to the Depth-Buffer, regardless of if the pixels drawn pass or fail the depth-test.  

Alpha Test

Alpha-testing allows you to choose to draw or not draw a pixel based on its alpha value.


Discard Pixels Based on Alpha alphatest - This enables or disables the pixel alpha test.  

Keep Pixels with Alpha alphafunc - - This menu works in conjunction with the Alpha Threshold parameter below in determining which pixels to keep based on their alpha value.

  • Less Than less -
  • Less Than or Equal lessorequal -
  • Greater Than greater -
  • Greater Than or Equal greaterorequal -

Alpha Threshold alphathreshold - This value is what the pixel's alpha is compared to to determine if the pixel should be drawn. Pixels with alpha greater than the Alpha Threshold will be drawn. Pixels with alpha less than or equal to the Alpha Threshold will not be drawn.  

Wire Frame

The wire-frame feature will render the geometry as wire-frame, using the actual primitive type used in the render. What this means is surfaces like Metaballs, NURBs and Beziers will become a wire-frame of the triangles/triangle-strips used to render them (since these types of primitives can't be natively rendered in OpenGL).


Wire Frame wireframe - - Enables and disables wire-frame rendering with the option of OpenGL Tesselated or Topology based wireframes.

  • Off off -
  • OpenGL Tesselated Wire Frame tesselated -
  • Topology Wire Frame topology -

Line Width wirewidth - This value is the width that the wires will be. This value is in pixels.  

Cull Face

The cull face parameter will cull faces from the render output. This can be used as an optimization or sometimes to remove artifacts. See Back-Face Culling for more infomation.


Cull Face cullface - - Selects which faces to render.

  • Use Render Setting userender - Use the render settings found in the Render or Render Pass TOP.
  • Neither neither - Do not cull any faces, render everything.
  • Back Faces backfaces - Cull back faces, render front faces.
  • Front Faces frontfaces - Cull front faces, render back faces.
  • Both Faces bothfaces - Cull both faces, render nothing.

Polygon Depth Offset

This feature pushes the polygons back into space a tiny fraction. This is useful when you are rendering two polygons directly on-top of each other and are experiencing Z-Fighting. Refer to Polygon Depth Offset for more information. This is also an important feature when doing shadows.


Polygon Depth Offset polygonoffset - Turns on the polygon offset feature.  

Offset Factor polygonoffsetfactor -  

Offset Units polygonoffsetunits -  

TouchDesigner Build:

MATs
Constant • Depth • GLSL • In • Line • MAT • MAT Common age • Null • Out • PBR • Phong • Point Sprite • Select • Switch • Texture Sampling arameters • Wireframe

An Operator Family that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.

The term "Frame" is used (1) in the Timeline, (2) as a time-unit in CHOPs, (3) as a time-unit in TOPs, and (4) with movies images which are read and created with TOPs.

The connection of an output of one node to the input of another node in a network. In contrast, see Link.

An Operator Family that creates, composites and modifies images, and reads/writes images and movies to/from files and the network. TOPs run on the graphics card's GPU.