<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY. Rather, use the _ref.xml files found in the 'edits' folder.-->
<c74object name="jit.gl.slab" module="jit" category="Jitter OpenGL">
	<digest>
		Process texture data
	</digest>
	<description>
		Generate, process and combine images efficiently using fragment shaders. Develop custom texture effects for processing on the graphics card.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
		<metadata name="tag">
			Jitter OpenGL
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				messages to this 3d object
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				matrix output if enabled
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--OB3D-->
	<OB3D />
	<!--MESSAGES-->
	<methodlist>
		<method name="(drag)">
			<digest>
				Load a shader file
			</digest>
			<description>
				Dragging a JXS file from the <link type="vignette" module="core" name="file_browser">Max File Browser</link> or desktop to a jit.gl.slab object, will load the file.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Double click to open the shader editor
			</digest>
			<description>
				Double click to open the <link type="vignette" module="core" name="external_editor">shader editor</link>. If no file is loaded the editor will load a starter shader to use as the basis for a new shader. This file must be saved to disk for use after the editor is closed.
			</description>
		</method>
		<method name="getparamdefault">
			<arglist>
				<arg name="name" type="symbol" />
			</arglist>
			<digest>
				Report slab shader parameter's default value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="getparamdescription">
			<arglist />
			<digest>
				Get a parameter description
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="getparamlist">
			<arglist />
			<digest>
				Report slab shader parameter names
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="getparamtype">
			<arglist>
				<arg name="name" type="symbol" />
			</arglist>
			<digest>
				Report slab shader parameter's type
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="getparamval">
			<arglist>
				<arg name="name" type="symbol" />
			</arglist>
			<digest>
				Report slab shader parameter's value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="open">
			<arglist />
			<digest>
				Opens the shader editor
			</digest>
			<description>
				Opens the <link type="vignette" module="core" name="external_editor">shader editor</link>. If no file is loaded the editor will load a starter shader to use as the basis for a new shader. This file must be saved to disk for use after the editor is closed.
			</description>
		</method>
		<method name="param">
			<arglist>
				<arg name="name" optional="0" type="symbol" />
				<arg name="message" optional="0" type="symbol" />
				<arg name="values" optional="1" type="list" />
			</arglist>
			<digest>
				Set a slab shader parameter value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="read">
			<arglist>
				<arg name="filename" type="symbol" />
			</arglist>
			<digest>
				Loads a JXS shader file from disk
			</digest>
			<description>
				Loads the given JXS shader file from disk.
			</description>
		</method>
		<method name="sendinput">
			<arglist>
				<arg name="index" optional="1" type="int" />
				<arg name="message" optional="0" type="symbol" />
				<arg name="values" optional="1" type="list" />
			</arglist>
			<digest>
				Sends an input texture a message
			</digest>
			<description>
				Sends a message to an input texture. If the first arg is an int, it specifies the texture index to send the message, otherwise all input textures receive the message.
			</description>
		</method>
		<method name="sendoutput">
			<arglist>
				<arg name="message" optional="0" type="symbol" />
				<arg name="values" optional="1" type="list" />
			</arglist>
			<digest>
				Sends the output textures a message
			</digest>
			<description>
				Sends the output <o>jit.gl.texture</o> objects a message.
			</description>
		</method>
		<method name="sendshader">
			<arglist>
				<arg name="message" optional="0" type="symbol" />
				<arg name="values" optional="1" type="list" />
			</arglist>
			<digest>
				Sends the internal shader a message
			</digest>
			<description>
				Sends the internal <o>jit.gl.shader</o> object a message
			</description>
		</method>
	</methodlist>
	<jittermethodlist>
		<jittermethod name="bang" />
		<jittermethod name="draw" />
		<jittermethod name="drawimmediate" />
		<jittermethod name="drawraw" />
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="importattrs" />
		<jittermethod name="jit_gl_texture" />
		<jittermethod name="jit_matrix" />
		<jittermethod name="summary" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="activeinput" get="1" set="1" type="int" size="1">
			<digest>
				Current input number
			</digest>
			<description>
				The current input used for texture and matrix messages (default = 0). Useful when calling input messages from Java or JavaScript.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Active Input" />
			</attributelist>
		</attribute>
		<attribute name="adapt" get="1" set="1" type="int" size="1">
			<digest>
				Enable adapt to input
			</digest>
			<description>
				Enable adapt to input (default = 1). When enabled the texture output dimensions will match the input dimensions.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="3" value="Adapt To Input" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="colormode" get="1" set="1" type="symbol" size="1">
			<digest>
				Texture color mode
			</digest>
			<description>
				Texture color mode (default = argb)
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="argb">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="uyvy">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Texture Colormode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="depth" get="1" set="1" type="int" size="1">
			<digest>
				Depth
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="dim" get="1" set="1" type="int" size="2">
			<digest>
				Texture output dimensions
			</digest>
			<description>
				The texture output dimensions when <at>adapt</at> is disabled (default = 256 256)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Texture Dim" />
			</attributelist>
		</attribute>
		<attribute name="dimscale" get="1" set="1" type="float" size="2">
			<digest>
				Output dimension scaling factor
			</digest>
			<description>
				The output dimension scaling factor of the output (default = 1 1). Useful for upsampling or downsampling texture output.
				<br />
				output.dim = input.dim*dimscale
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Dim Scale Factor" />
			</attributelist>
		</attribute>
		<attribute name="displaylist" get="1" set="1" type="int" size="1">
			<digest>
				Displaylist
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="edges" get="1" set="1" type="int" size="1">
			<digest>
				Edges
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="file" get="1" set="1" type="symbol" size="1">
			<digest>
				Shader description file (JXS)
			</digest>
			<description>
				The shader description file (JXS) to use (default = none)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="File" />
			</attributelist>
		</attribute>
		<attribute name="inputs" get="1" set="1" type="int" size="1">
			<digest>
				Slab input count
			</digest>
			<description>
				Slab input count (default = 2)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Inputs" />
			</attributelist>
		</attribute>
		<attribute name="out_name" get="1" set="0" type="symbol" size="32">
			<digest>
				Output texture name
			</digest>
			<description>
				TEXT_HERE
			</description>
		</attribute>
		<attribute name="outputs" get="1" set="1" type="int" size="1">
			<digest>
				Number of texture outputs
			</digest>
			<description>
				Number of texture outputs (default = 1). Texture outputs correspond to shader render targets. For an example of multiple render targets see
				<openfilelink filename="mrt.slab.unpack.maxpat">
					mrt.slab.unpack
				</openfilelink>
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Outputs" />
			</attributelist>
		</attribute>
		<attribute name="rect" get="1" set="1" type="float" size="4">
			<digest>
				Slab geometry rectangle
			</digest>
			<description>
				Slab geometry rectangle (default = 0 0 1 1). The four values represent normalized coordinates for the left, bottom, right and top sides of the geometry rectangle. To flip the image horizontally use <i>rect 1 0 0 1</i> or to flip vertically use <i>rect 0 1 1 0</i>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Rectangle Bounds" />
			</attributelist>
		</attribute>
		<attribute name="rectangle" get="1" set="1" type="int" size="1">
			<digest>
				Enable texture rectangle mode (default = 1)
			</digest>
			<description>
				Enable texture rectangle mode on internal texture objects(default = 1). When enabled the internal GL texture is treated as a rectangular texture, and must be referenced using sampler2DRect and sampled using texture2DRect when sampled from a GLSL shader. When disabled the texture dimensions are upsampled to the nearest power of two value, and must be referenced and sampled using sampler2D and texture2D. Certain texture attributes and GLSL effects require rectangle mode disabled.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Rectangle" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="thru" get="1" set="1" type="int" size="1">
			<digest>
				Enable thru mode
			</digest>
			<description>
				Enable thru mode (default = 1). When the flag is set, texture output is sent whenever input is received.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Thru" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="shape" get="1" set="1" type="int" size="1">
			<digest>
				Slab geometry shape
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="subdiv" get="1" set="1" type="int" size="1">
			<digest>
				Slab geometry subdivisions
			</digest>
			<description>
				The number of subdivisions to use for generating grid based geometry (only valid when shape == grid)
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="texrect" get="1" set="1" type="int" size="1">
			<digest>
				Texture rectangle
			</digest>
			<description>
				Texture rectangle mapping values (default = 0 0 1 1...). The four values represent texture mapping coordinates for the left, bottom, right and top sides of the geometry rectangle, and can be used to easily crop the input image. There are four values for each texture input.
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="type" get="1" set="1" type="symbol" size="1">
			<digest>
				Output texture data type
			</digest>
			<description>
				The output texture data type (default = auto). When type is <ar>auto</ar> the type is set by the input texture or matrix type.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="7">
					<enumlist>
						<enum name="auto">
							<digest>
								Adapt to input data type
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="char">
							<digest>
								8bit unsigned byte
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="long">
							<digest>
								32bit integer
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="half">
							<digest>
								16bit float
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="float">
							<digest>
								32bit float
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="float16">
							<digest>
								16bit float
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="float32">
							<digest>
								32bit float
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Texture Type" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="wrap" get="1" set="1" type="int" size="1">
			<digest>
				Wrap
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="antialias" />
		<jitterattribute name="automatic" />
		<jitterattribute name="aux_color" />
		<jitterattribute name="blend" />
		<jitterattribute name="blend_enable" />
		<jitterattribute name="blend_mode" />
		<jitterattribute name="capture" />
		<jitterattribute name="depth_clear" />
		<jitterattribute name="depth_enable" />
		<jitterattribute name="depth_write" />
		<jitterattribute name="drawto" />
		<jitterattribute name="enable" />
		<jitterattribute name="gl_color" />
		<jitterattribute name="layer" />
		<jitterattribute name="material" />
		<jitterattribute name="name" />
		<jitterattribute name="shader" />
		<jitterattribute name="smooth_shading" />
		<jitterattribute name="tex_map" />
		<jitterattribute name="tex_plane_s" />
		<jitterattribute name="tex_plane_t" />
		<jitterattribute name="texanchor" />
		<jitterattribute name="texrotate" />
		<jitterattribute name="texture" />
		<jitterattribute name="texzoom" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.gl.slab.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.gl.graph" />
		<seealso name="jit.gl.gridshape" />
		<seealso name="jit.gl.handle" />
		<seealso name="jit.gl.isosurf" />
		<seealso name="jit.gl.mesh" />
		<seealso name="jit.gl.model" />
		<seealso name="jit.gl.nurbs" />
		<seealso name="jit.gl.plato" />
		<seealso name="jit.gl.render" />
		<seealso name="jit.gl.shader" />
		<seealso name="jit.gl.sketch" />
		<seealso name="jit.gl.text2d" />
		<seealso name="jit.gl.text3d" />
		<seealso name="jit.gl.texture" />
		<seealso name="jit.gl.videoplane" />
		<seealso name="jit.gl.volume" />
		<seealso name="jitterchapter42" module="jit" type="tutorial" />
		<seealso name="external_editor" module="core" type="vignette" />
	</seealsolist>
	<discussion>
		This object requires one argument: the name of a drawing context. A named drawing context is a named instance of a <o>jit.window</o>, <o>jit.pwindow</o>, or <o>jit.matrix</o> object that has an instance of the <o>jit.gl.render</o> object associated with it. Additionally it can reference the name of a <o>jit.gl.node</o> sub-context. This value may also be set via the OB3D <at>drawto</at> attribute. If no argument is present, the object is implicitly added to the first valid drawing context or sub-context found in the current patch or by searching up the patcher hierarchy.
	</discussion>
</c74object>
