Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Shader

Inherits: Resource < RefCounted < Object

Inherited By: VisualShader

A shader implemented in the Godot shading language.

Description

A custom shader program implemented in the Godot shading language, saved with the .gdshader extension.

This class is used by a ShaderMaterial and allows you to write your own custom behavior for rendering visual items 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.


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.