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.md $DOCS_URL/tutorials/shaders/introduction_to_shaders.md Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], [constant MODE_SPATIAL] or [constant MODE_PARTICLES]. Returns the shader's code as the user has written it, not the full generated code used internally. Returns the shader's custom defines. Custom defines can be used in Godot to add GLSL preprocessor directives (e.g: extensions) required for the shader logic. [b]Note:[/b] Custom defines are not validated by the Godot shader parser, so care should be taken when using them. 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.