Shader

Inherits: Resource < RefCounted < Object

Inherited By: VisualShader

A custom shader program.

Description

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.

Tutorials

Properties

String

code

""

Methods

Texture2D

get_default_texture_parameter ( StringName name, int index=0 ) const

Mode

get_mode ( ) const

Array

get_shader_uniform_list ( bool get_groups=false )

void

set_default_texture_parameter ( StringName name, Texture2D texture, int index=0 )


Enumerations

enum Mode:

Mode MODE_SPATIAL = 0

Mode used to draw all 3D objects.

Mode MODE_CANVAS_ITEM = 1

Mode used to draw all 2D objects.

Mode MODE_PARTICLES = 2

Mode used to calculate particle information on a per-particle basis. Not used for drawing.

Mode MODE_SKY = 3

Mode used for drawing skies. Only works with shaders attached to Sky objects.

Mode MODE_FOG = 4

Mode used for setting the color and density of volumetric fog effect.


Property Descriptions

String code = ""

Returns the shader's code as the user has written it, not the full generated code used internally.


Method Descriptions

Texture2D get_default_texture_parameter ( StringName name, int index=0 ) const

Returns the texture that is set as default for the specified parameter.

Note: name must match the name of the uniform in the code exactly.

Note: If the sampler array is used use index to access the specified texture.


Mode get_mode ( ) const

Returns the shader mode for the shader, either MODE_CANVAS_ITEM, MODE_SPATIAL or MODE_PARTICLES.


Array get_shader_uniform_list ( bool get_groups=false )

Get the list of shader uniforms that can be assigned to a ShaderMaterial, for use with ShaderMaterial.set_shader_parameter and ShaderMaterial.get_shader_parameter. The parameters returned are contained in dictionaries in a similar format to the ones returned by Object.get_property_list.

If argument get_groups is true, parameter grouping hints will be provided.


void set_default_texture_parameter ( StringName name, Texture2D texture, int index=0 )

Sets the default texture to be used with a texture uniform. The default is used if a texture is not set in the ShaderMaterial.

Note: name must match the name of the uniform in the code exactly.

Note: If the sampler array is used use index to access the specified texture.