Improve shader editor templates to be more descriptive

This commit is contained in:
Hugo Locurcio 2021-08-18 23:54:24 +02:00
parent 851bc640dd
commit 02bf74a954
No known key found for this signature in database
GPG Key ID: 39E8F8BE30B0A49C

View File

@ -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());