<?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.volume" module="jit" category="Jitter OpenGL">
	<digest>
		Create a volume visualization
	</digest>
	<description>
		Creates a transparent volume from a volumetric density field. This process is GL accelerated by using graphics hardware.
	</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-->
	<jittermethodlist>
		<jittermethod name="bang" />
		<jittermethod name="anim_grow" />
		<jittermethod name="anim_move" />
		<jittermethod name="anim_reset" />
		<jittermethod name="anim_turn" />
		<jittermethod name="draw" />
		<jittermethod name="drawimmediate" />
		<jittermethod name="drawraw" />
		<jittermethod name="export_material" />
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="import_material" />
		<jittermethod name="jit_gl_texture" />
		<jittermethod name="jit_matrix" />
		<jittermethod name="importattrs" />
		<jittermethod name="summary" />
		<jittermethod name="update_node" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="bounds" get="1" set="1" type="int" size="1">
			<digest>
				Render bounding box
			</digest>
			<description>
				Flag which enables or disables the rendering of the bounding box surrounding the volume (default = 0).
				<br />
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Bounds" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="clip" get="1" set="1" type="int" size="1">
			<digest>
				Slice on clip plane
			</digest>
			<description>
				Flag for enabling a controllable clip plane to slice the volume along an arbitrary axis (default = 0)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Clip" />
			</attributelist>
		</attribute>
		<attribute name="clipangle" get="1" set="1" type="float" size="1">
			<digest>
				Clip plane rotation angles
			</digest>
			<description>
				Rotation angles per axis for the clip plane (default = 0 0 0)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Clip Angle" />
			</attributelist>
		</attribute>
		<attribute name="clipaxis" get="1" set="1" type="float" size="3">
			<digest>
				Clip plane axis coefficients
			</digest>
			<description>
				Axis coefficients for the clip plane (default = 1 0 0)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Clip Axis" />
			</attributelist>
		</attribute>
		<attribute name="cubes" get="1" set="1" type="int" size="1">
			<digest>
				Cube subdivision
			</digest>
			<description>
				Flag which enables or disables cube subdivision (default = 1).
				<br />
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Cubes" />
			</attributelist>
		</attribute>
		<attribute name="density" get="1" set="1" type="float" size="1">
			<digest>
				Density threshold
			</digest>
			<description>
				The density threshold for constructing the surface. (default = 0.5)
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Density" />
			</attributelist>
		</attribute>
		<attribute name="displaylist" get="1" set="1" type="int" size="1">
			<digest>
				Cache in displaylist
			</digest>
			<description>
				Cache in displaylist flag (default = 0) This feature may be used to speed up rendering time by creating and storing a list of gl drawing commands on the graphics card. This will have no effect if <at>matrixoutput</at> turned on.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Displaylist" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="distance" get="1" set="1" type="float" size="1">
			<digest>
				Distance offset
			</digest>
			<description>
				The distance offset from the camera. (default = -5)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Distance" />
			</attributelist>
		</attribute>
		<attribute name="ds" get="1" set="1" type="float" size="1">
			<digest>
				Step size in raycast mode
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="DS" />
			</attributelist>
		</attribute>
		<attribute name="exposure" get="1" set="1" type="float" size="1">
			<digest>
				Exposure in raycast mode
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Exposure" />
			</attributelist>
		</attribute>
		<attribute name="intensity" get="1" set="1" type="float" size="1">
			<digest>
				Intensity scale factor
			</digest>
			<description>
				The intensity scale factor for multiplying against volume density values. (default = 0.5)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Intensity" />
			</attributelist>
		</attribute>
		<attribute name="mode" get="1" set="1" type="symbol" size="1">
			<digest>
				Rendering mode
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="slices">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="raycast">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="raycast_adapt" get="1" set="1" type="int" size="1">
			<digest>
				Raycast mode adapts resolution
			</digest>
			<description>
				Raycast mode adapts resolution to rendering destination
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Raycast Adapt" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="raycast_dim" get="1" set="1" type="int" size="2">
			<digest>
				Resolution of raycast mode
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Raycast Dim" />
			</attributelist>
		</attribute>
		<attribute name="samples" get="1" set="1" type="int" size="1">
			<digest>
				Number of samples in raycast mode
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Samples" />
			</attributelist>
		</attribute>
		<attribute name="slices" get="1" set="1" type="int" size="1">
			<digest>
				Number of slices
			</digest>
			<description>
				Sets he number of slices used as proxies for rendering the volume data.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Slices" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="anchor" />
		<jitterattribute name="anim" />
		<jitterattribute name="animmode" />
		<jitterattribute name="antialias" />
		<jitterattribute name="auto_material" />
		<jitterattribute name="automatic" />
		<jitterattribute name="aux_color" />
		<jitterattribute name="axes" />
		<jitterattribute name="blend" />
		<jitterattribute name="blend_enable" />
		<jitterattribute name="blend_mode" />
		<jitterattribute name="capture" />
		<jitterattribute name="color" />
		<jitterattribute name="cull_face" />
		<jitterattribute name="depth_clear" />
		<jitterattribute name="depth_enable" />
		<jitterattribute name="depth_write" />
		<jitterattribute name="dest_dim" />
		<jitterattribute name="drawto" />
		<jitterattribute name="enable" />
		<jitterattribute name="filterclass" />
		<jitterattribute name="fog" />
		<jitterattribute name="fog_color" />
		<jitterattribute name="fog_density" />
		<jitterattribute name="fog_params" />
		<jitterattribute name="fog_range" />
		<jitterattribute name="gl_color" />
		<jitterattribute name="inherit_all" />
		<jitterattribute name="inherit_color" />
		<jitterattribute name="inherit_depth" />
		<jitterattribute name="inherit_fog" />
		<jitterattribute name="inherit_material" />
		<jitterattribute name="inherit_poly" />
		<jitterattribute name="inherit_texture" />
		<jitterattribute name="inherit_transform" />
		<jitterattribute name="layer" />
		<jitterattribute name="lighting_enable" />
		<jitterattribute name="line_width" />
		<jitterattribute name="mat_ambient" />
		<jitterattribute name="mat_diffuse" />
		<jitterattribute name="mat_emission" />
		<jitterattribute name="mat_specular" />
		<jitterattribute name="material" />
		<jitterattribute name="matfile" />
		<jitterattribute name="name" />
		<jitterattribute name="point_size" />
		<jitterattribute name="poly_mode" />
		<jitterattribute name="position" />
		<jitterattribute name="quat" />
		<jitterattribute name="rotate" />
		<jitterattribute name="rotatexyz" />
		<jitterattribute name="scale" />
		<jitterattribute name="shader" />
		<jitterattribute name="shadow_caster" />
		<jitterattribute name="shininess" />
		<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" />
		<jitterattribute name="transform_reset" />
		<jitterattribute name="two_sided" />
		<jitterattribute name="viewalign" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.gl.volume.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.slab" />
		<seealso name="jit.gl.text2d" />
		<seealso name="jit.gl.text3d" />
		<seealso name="jit.gl.texture" />
		<seealso name="jit.gl.videoplane" />
	</seealsolist>
	<discussion>
		Internally, <o>jit.gl.volume</o> creates a 3d <o>jit.gl.texture</o> object and applies it to multiple view-aligned slices of geometry. The resulting slices are then blended together using the standard ob3d blend modes. The density and intensity attributes subsequently control which features are visibile. By enabling the cubes attribute, slices will be rendered in both horizontal and vertical direction, which may result in a visualization which that is comparatively better or worse depending on the volume dataset being used.
		<br />
		The <o>jit.gl.volume</o> 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>
