diff --git a/editor/shader_create_dialog.cpp b/editor/shader_create_dialog.cpp index 3d8a6e368d8..607b53718bf 100644 --- a/editor/shader_create_dialog.cpp +++ b/editor/shader_create_dialog.cpp @@ -164,37 +164,64 @@ void ShaderCreateDialog::_create_new() { code += vformat("shader_type %s;\n", mode_menu->get_text().to_snake_case()); if (current_template == 0) { // Default template. - code += "\n"; switch (current_mode) { case Shader::MODE_SPATIAL: - code += "void fragment() {\n"; - code += "\t// Place fragment code here.\n"; - code += "}\n"; + code += R"( +void vertex() { + // Called for every vertex the material is visible on. +} + +void fragment() { + // Called for every pixel the material is visible on. +} + +void light() { + // Called for every pixel for every light affecting the material. +} +)"; break; case Shader::MODE_CANVAS_ITEM: - code += "void fragment() {\n"; - code += "\t// Place fragment code here.\n"; - code += "}\n"; + code += R"( +void vertex() { + // Called for every vertex the material is visible on. +} + +void fragment() { + // Called for every pixel the material is visible on. +} + +void light() { + // Called for every pixel for every light affecting the CanvasItem. +} +)"; break; case Shader::MODE_PARTICLES: - code += "void start() {\n"; - code += "\t// Place start code here.\n"; - code += "}\n"; - code += "\n"; - code += "void process() {\n"; - code += "\t// Place process code here.\n"; - code += "}\n"; + code += R"( +void start() { + // Called when a particle is spawned. +} + +void process() { + // Called every frame on existing particles (according to the Fixed FPS property). +} +)"; break; case Shader::MODE_SKY: - code += "void sky() {\n"; - code += "\t// Place sky code here.\n"; - code += "}\n"; + code += R"( +void sky() { + // Called for every visible pixel in the sky background, as well as all pixels + // in the radiance cubemap. +} +)"; break; case Shader::MODE_FOG: - code += "void fog() {\n"; - code += "\t// Place fog code here.\n"; - code += "}\n"; - break; + code += R"( +void fog() { + // Called once for every froxel that is touched by an axis-aligned bounding box + // of the associated FogVolume. This means that froxels that just barely touch + // a given FogVolume will still be used. +} +)"; } } text_shader->set_code(code.as_string());