Skip to content

Commit f1abfbb

Browse files
authored
Merge pull request #48837 from Soupstraw/shader-pi
Added constants PI, TAU and E to the shader language
2 parents 554382d + 1656732 commit f1abfbb

8 files changed

+33
-4
lines changed

scene/gui/color_picker.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ void ColorPicker::init_shaders() {
9191
wheel_shader.instance();
9292
wheel_shader->set_code(
9393
"shader_type canvas_item;"
94-
"const float TAU = 6.28318530718;"
9594
"void fragment() {"
9695
" float x = UV.x - 0.5;"
9796
" float y = UV.y - 0.5;"
@@ -111,7 +110,6 @@ void ColorPicker::init_shaders() {
111110
circle_shader.instance();
112111
circle_shader->set_code(
113112
"shader_type canvas_item;"
114-
"const float TAU = 6.28318530718;"
115113
"uniform float v = 1.0;"
116114
"void fragment() {"
117115
" float x = UV.x - 0.5;"

scene/resources/sky_material.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ ProceduralSkyMaterial::ProceduralSkyMaterial() {
193193
code += "uniform float ground_energy = 1.0;\n\n";
194194
code += "uniform float sun_angle_max = 1.74;\n";
195195
code += "uniform float sun_curve : hint_range(0, 1) = 0.05;\n\n";
196-
code += "const float PI = 3.1415926535897932384626433833;\n\n";
197196
code += "void sky() {\n";
198197
code += "\tfloat v_angle = acos(clamp(EYEDIR.y, -1.0, 1.0));\n";
199198
code += "\tfloat c = (1.0 - v_angle / (PI * 0.5));\n";
@@ -499,7 +498,6 @@ PhysicalSkyMaterial::PhysicalSkyMaterial() {
499498

500499
code += "uniform sampler2D night_sky : hint_black;";
501500

502-
code += "const float PI = 3.141592653589793238462643383279502884197169;\n";
503501
code += "const vec3 UP = vec3( 0.0, 1.0, 0.0 );\n\n";
504502

505503
code += "// Sun constants\n";

servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
#include "scene_shader_forward_clustered.h"
3232
#include "core/config/project_settings.h"
33+
#include "core/math/math_defs.h"
3334
#include "render_forward_clustered.h"
3435

3536
using namespace RendererSceneRenderImplementation;
@@ -608,6 +609,9 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
608609
//builtins
609610

610611
actions.renames["TIME"] = "scene_data.time";
612+
actions.renames["PI"] = _MKSTR(Math_PI);
613+
actions.renames["TAU"] = _MKSTR(Math_TAU);
614+
actions.renames["E"] = _MKSTR(Math_E);
611615
actions.renames["VIEWPORT_SIZE"] = "scene_data.viewport_size";
612616

613617
actions.renames["FRAGCOORD"] = "gl_FragCoord";

servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
#include "scene_shader_forward_mobile.h"
3232
#include "core/config/project_settings.h"
33+
#include "core/math/math_defs.h"
3334
#include "render_forward_mobile.h"
3435

3536
using namespace RendererSceneRenderImplementation;
@@ -625,6 +626,9 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p
625626
//builtins
626627

627628
actions.renames["TIME"] = "scene_data.time";
629+
actions.renames["PI"] = _MKSTR(Math_PI);
630+
actions.renames["TAU"] = _MKSTR(Math_TAU);
631+
actions.renames["E"] = _MKSTR(Math_E);
628632
actions.renames["VIEWPORT_SIZE"] = "scene_data.viewport_size";
629633

630634
actions.renames["FRAGCOORD"] = "gl_FragCoord";

servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "renderer_canvas_render_rd.h"
3232
#include "core/config/project_settings.h"
3333
#include "core/math/geometry_2d.h"
34+
#include "core/math/math_defs.h"
3435
#include "core/math/math_funcs.h"
3536
#include "renderer_compositor_rd.h"
3637
#include "servers/rendering/rendering_server_default.h"
@@ -2408,6 +2409,9 @@ RendererCanvasRenderRD::RendererCanvasRenderRD(RendererStorageRD *p_storage) {
24082409
actions.renames["CANVAS_MATRIX"] = "canvas_data.canvas_transform";
24092410
actions.renames["SCREEN_MATRIX"] = "canvas_data.screen_transform";
24102411
actions.renames["TIME"] = "canvas_data.time";
2412+
actions.renames["PI"] = _MKSTR(Math_PI);
2413+
actions.renames["TAU"] = _MKSTR(Math_TAU);
2414+
actions.renames["E"] = _MKSTR(Math_E);
24112415
actions.renames["AT_LIGHT_PASS"] = "false";
24122416
actions.renames["INSTANCE_CUSTOM"] = "instance_custom";
24132417

servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
#include "renderer_scene_sky_rd.h"
3232
#include "core/config/project_settings.h"
33+
#include "core/math/math_defs.h"
3334
#include "renderer_scene_render_rd.h"
3435
#include "servers/rendering/rendering_server_default.h"
3536

@@ -710,6 +711,9 @@ void RendererSceneSkyRD::init(RendererStorageRD *p_storage) {
710711
actions.renames["SKY_COORDS"] = "panorama_coords";
711712
actions.renames["SCREEN_UV"] = "uv";
712713
actions.renames["TIME"] = "params.time";
714+
actions.renames["PI"] = _MKSTR(Math_PI);
715+
actions.renames["TAU"] = _MKSTR(Math_TAU);
716+
actions.renames["E"] = _MKSTR(Math_E);
713717
actions.renames["HALF_RES_COLOR"] = "half_res_color";
714718
actions.renames["QUARTER_RES_COLOR"] = "quarter_res_color";
715719
actions.renames["RADIANCE"] = "radiance";

servers/rendering/renderer_rd/renderer_storage_rd.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "core/config/engine.h"
3434
#include "core/config/project_settings.h"
3535
#include "core/io/resource_loader.h"
36+
#include "core/math/math_defs.h"
3637
#include "renderer_compositor_rd.h"
3738
#include "servers/rendering/shader_language.h"
3839

@@ -9225,6 +9226,9 @@ RendererStorageRD::RendererStorageRD() {
92259226
actions.renames["CUSTOM"] = "PARTICLE.custom";
92269227
actions.renames["TRANSFORM"] = "PARTICLE.xform";
92279228
actions.renames["TIME"] = "FRAME.time";
9229+
actions.renames["PI"] = _MKSTR(Math_PI);
9230+
actions.renames["TAU"] = _MKSTR(Math_TAU);
9231+
actions.renames["E"] = _MKSTR(Math_E);
92289232
actions.renames["LIFETIME"] = "params.lifetime";
92299233
actions.renames["DELTA"] = "local_delta";
92309234
actions.renames["NUMBER"] = "particle_number";

servers/rendering/shader_types.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
/*************************************************************************/
3030

3131
#include "shader_types.h"
32+
#include "core/math/math_defs.h"
3233

3334
const Map<StringName, ShaderLanguage::FunctionInfo> &ShaderTypes::get_functions(RS::ShaderMode p_mode) {
3435
return shader_modes[p_mode].functions;
@@ -54,6 +55,9 @@ ShaderTypes::ShaderTypes() {
5455
/*************** SPATIAL ***********************/
5556

5657
shader_modes[RS::SHADER_SPATIAL].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
58+
shader_modes[RS::SHADER_SPATIAL].functions["global"].built_ins["PI"] = constt(ShaderLanguage::TYPE_FLOAT);
59+
shader_modes[RS::SHADER_SPATIAL].functions["global"].built_ins["TAU"] = constt(ShaderLanguage::TYPE_FLOAT);
60+
shader_modes[RS::SHADER_SPATIAL].functions["global"].built_ins["E"] = constt(ShaderLanguage::TYPE_FLOAT);
5761

5862
shader_modes[RS::SHADER_SPATIAL].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3;
5963
shader_modes[RS::SHADER_SPATIAL].functions["vertex"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
@@ -227,6 +231,9 @@ ShaderTypes::ShaderTypes() {
227231
/************ CANVAS ITEM **************************/
228232

229233
shader_modes[RS::SHADER_CANVAS_ITEM].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
234+
shader_modes[RS::SHADER_CANVAS_ITEM].functions["global"].built_ins["PI"] = constt(ShaderLanguage::TYPE_FLOAT);
235+
shader_modes[RS::SHADER_CANVAS_ITEM].functions["global"].built_ins["TAU"] = constt(ShaderLanguage::TYPE_FLOAT);
236+
shader_modes[RS::SHADER_CANVAS_ITEM].functions["global"].built_ins["E"] = constt(ShaderLanguage::TYPE_FLOAT);
230237

231238
shader_modes[RS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC2;
232239
shader_modes[RS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
@@ -317,6 +324,9 @@ ShaderTypes::ShaderTypes() {
317324
/************ PARTICLES **************************/
318325

319326
shader_modes[RS::SHADER_PARTICLES].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
327+
shader_modes[RS::SHADER_PARTICLES].functions["global"].built_ins["PI"] = constt(ShaderLanguage::TYPE_FLOAT);
328+
shader_modes[RS::SHADER_PARTICLES].functions["global"].built_ins["TAU"] = constt(ShaderLanguage::TYPE_FLOAT);
329+
shader_modes[RS::SHADER_PARTICLES].functions["global"].built_ins["E"] = constt(ShaderLanguage::TYPE_FLOAT);
320330

321331
shader_modes[RS::SHADER_PARTICLES].functions["start"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
322332
shader_modes[RS::SHADER_PARTICLES].functions["start"].built_ins["VELOCITY"] = ShaderLanguage::TYPE_VEC3;
@@ -381,6 +391,9 @@ ShaderTypes::ShaderTypes() {
381391
/************ SKY **************************/
382392

383393
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["TIME"] = constt(ShaderLanguage::TYPE_FLOAT);
394+
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["PI"] = constt(ShaderLanguage::TYPE_FLOAT);
395+
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["TAU"] = constt(ShaderLanguage::TYPE_FLOAT);
396+
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["E"] = constt(ShaderLanguage::TYPE_FLOAT);
384397
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["POSITION"] = constt(ShaderLanguage::TYPE_VEC3);
385398
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["RADIANCE"] = constt(ShaderLanguage::TYPE_SAMPLERCUBE);
386399
shader_modes[RS::SHADER_SKY].functions["global"].built_ins["AT_HALF_RES_PASS"] = constt(ShaderLanguage::TYPE_BOOL);

0 commit comments

Comments
 (0)