A custom shader program. This class allows you to define a custom shader program that can be used by a [ShaderMaterial]. Shaders allow you to write your own custom behavior for rendering objects or updating particle information. For a detailed explanation and usage, please see the tutorials linked below. $DOCS_URL/tutorials/shaders/index.html Returns the texture that is set as default for the specified parameter. [b]Note:[/b] [param param] must match the name of the uniform in the code exactly. [b]Note:[/b] If the sampler array is used use [param index] to access the specified texture. Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], [constant MODE_SPATIAL] or [constant MODE_PARTICLES]. Returns [code]true[/code] if the shader has this param defined as a uniform in its code. [b]Note:[/b] [param name] must match the name of the uniform in the code exactly. Sets the default texture to be used with a texture uniform. The default is used if a texture is not set in the [ShaderMaterial]. [b]Note:[/b] [param param] must match the name of the uniform in the code exactly. [b]Note:[/b] If the sampler array is used use [param index] to access the specified texture. Returns the shader's code as the user has written it, not the full generated code used internally. Mode used to draw all 3D objects. Mode used to draw all 2D objects. Mode used to calculate particle information on a per-particle basis. Not used for drawing. Mode used for drawing skies. Only works with shaders attached to [Sky] objects. Mode used for setting the color and density of volumetric fog effect.