File tree Expand file tree Collapse file tree 7 files changed +48
-0
lines changed Expand file tree Collapse file tree 7 files changed +48
-0
lines changed Original file line number Diff line number Diff line change @@ -1511,10 +1511,24 @@ void main() {
15111511 float alpha_antialiasing_edge = 0.0 ;
15121512 vec2 alpha_texture_coordinate = vec2 (0.0 , 0.0 );
15131513#endif // ALPHA_ANTIALIASING_EDGE_USED
1514+
1515+ #ifdef LIGHT_VERTEX_USED
1516+ vec3 light_vertex = vertex;
1517+ #endif // LIGHT_VERTEX_USED
1518+
15141519 {
15151520#CODE : FRAGMENT
15161521 }
15171522
1523+ #ifdef LIGHT_VERTEX_USED
1524+ vertex = light_vertex;
1525+ #ifdef USE_MULTIVIEW
1526+ view = - normalize (vertex - eye_offset);
1527+ #else
1528+ view = - normalize (vertex);
1529+ #endif // USE_MULTIVIEW
1530+ #endif // LIGHT_VERTEX_USED
1531+
15181532#ifndef USE_SHADOW_TO_OPACITY
15191533
15201534#if defined(ALPHA_SCISSOR_USED)
Original file line number Diff line number Diff line change @@ -1274,6 +1274,7 @@ MaterialStorage::MaterialStorage() {
12741274 actions.renames [" CUSTOM2" ] = " custom2_attrib" ;
12751275 actions.renames [" CUSTOM3" ] = " custom3_attrib" ;
12761276 actions.renames [" OUTPUT_IS_SRGB" ] = " SHADER_IS_SRGB" ;
1277+ actions.renames [" LIGHT_VERTEX" ] = " light_vertex" ;
12771278
12781279 actions.renames [" NODE_POSITION_WORLD" ] = " model_matrix[3].xyz" ;
12791280 actions.renames [" CAMERA_POSITION_WORLD" ] = " scene_data.inv_view_matrix[3].xyz" ;
@@ -1320,6 +1321,7 @@ MaterialStorage::MaterialStorage() {
13201321 actions.usage_defines [" COLOR" ] = " #define COLOR_USED\n " ;
13211322 actions.usage_defines [" INSTANCE_CUSTOM" ] = " #define ENABLE_INSTANCE_CUSTOM\n " ;
13221323 actions.usage_defines [" POSITION" ] = " #define OVERRIDE_POSITION\n " ;
1324+ actions.usage_defines [" LIGHT_VERTEX" ] = " #define LIGHT_VERTEX_USED\n " ;
13231325
13241326 actions.usage_defines [" ALPHA_SCISSOR_THRESHOLD" ] = " #define ALPHA_SCISSOR_USED\n " ;
13251327 actions.usage_defines [" ALPHA_HASH_SCALE" ] = " #define ALPHA_HASH_USED\n " ;
Original file line number Diff line number Diff line change @@ -624,6 +624,7 @@ void SceneShaderForwardClustered::init(const String p_defines) {
624624 actions.renames [" CUSTOM2" ] = " custom2_attrib" ;
625625 actions.renames [" CUSTOM3" ] = " custom3_attrib" ;
626626 actions.renames [" OUTPUT_IS_SRGB" ] = " SHADER_IS_SRGB" ;
627+ actions.renames [" LIGHT_VERTEX" ] = " light_vertex" ;
627628
628629 actions.renames [" NODE_POSITION_WORLD" ] = " read_model_matrix[3].xyz" ;
629630 actions.renames [" CAMERA_POSITION_WORLD" ] = " scene_data.inv_view_matrix[3].xyz" ;
@@ -670,6 +671,7 @@ void SceneShaderForwardClustered::init(const String p_defines) {
670671 actions.usage_defines [" COLOR" ] = " #define COLOR_USED\n " ;
671672 actions.usage_defines [" INSTANCE_CUSTOM" ] = " #define ENABLE_INSTANCE_CUSTOM\n " ;
672673 actions.usage_defines [" POSITION" ] = " #define OVERRIDE_POSITION\n " ;
674+ actions.usage_defines [" LIGHT_VERTEX" ] = " #define LIGHT_VERTEX_USED\n " ;
673675
674676 actions.usage_defines [" ALPHA_SCISSOR_THRESHOLD" ] = " #define ALPHA_SCISSOR_USED\n " ;
675677 actions.usage_defines [" ALPHA_HASH_SCALE" ] = " #define ALPHA_HASH_USED\n " ;
Original file line number Diff line number Diff line change @@ -528,6 +528,7 @@ void SceneShaderForwardMobile::init(const String p_defines) {
528528 actions.renames [" CUSTOM2" ] = " custom2_attrib" ;
529529 actions.renames [" CUSTOM3" ] = " custom3_attrib" ;
530530 actions.renames [" OUTPUT_IS_SRGB" ] = " SHADER_IS_SRGB" ;
531+ actions.renames [" LIGHT_VERTEX" ] = " light_vertex" ;
531532
532533 actions.renames [" NODE_POSITION_WORLD" ] = " read_model_matrix[3].xyz" ;
533534 actions.renames [" CAMERA_POSITION_WORLD" ] = " scene_data.inv_view_matrix[3].xyz" ;
@@ -574,6 +575,7 @@ void SceneShaderForwardMobile::init(const String p_defines) {
574575 actions.usage_defines [" COLOR" ] = " #define COLOR_USED\n " ;
575576 actions.usage_defines [" INSTANCE_CUSTOM" ] = " #define ENABLE_INSTANCE_CUSTOM\n " ;
576577 actions.usage_defines [" POSITION" ] = " #define OVERRIDE_POSITION\n " ;
578+ actions.usage_defines [" LIGHT_VERTEX" ] = " #define LIGHT_VERTEX\n " ;
577579
578580 actions.usage_defines [" ALPHA_SCISSOR_THRESHOLD" ] = " #define ALPHA_SCISSOR_USED\n " ;
579581 actions.usage_defines [" ALPHA_HASH_SCALE" ] = " #define ALPHA_HASH_USED\n " ;
Original file line number Diff line number Diff line change @@ -1022,6 +1022,11 @@ void fragment_shader(in SceneData scene_data) {
10221022 inv_view_matrix[1 ][3 ] = 0.0 ;
10231023 inv_view_matrix[2 ][3 ] = 0.0 ;
10241024#endif
1025+
1026+ #ifdef LIGHT_VERTEX_USED
1027+ vec3 light_vertex = vertex;
1028+ #endif // LIGHT_VERTEX_USED
1029+
10251030 mat4 read_view_matrix = scene_data.view_matrix;
10261031 vec2 read_viewport_size = scene_data.viewport_size;
10271032 {
@@ -1032,6 +1037,15 @@ void fragment_shader(in SceneData scene_data) {
10321037 transmittance_color.a *= sss_strength;
10331038#endif
10341039
1040+ #ifdef LIGHT_VERTEX_USED
1041+ vertex = light_vertex;
1042+ #ifdef USE_MULTIVIEW
1043+ view = - normalize (vertex - eye_offset);
1044+ #else
1045+ view = - normalize (vertex);
1046+ #endif // USE_MULTIVIEW
1047+ #endif // LIGHT_VERTEX_USED
1048+
10351049#ifndef USE_SHADOW_TO_OPACITY
10361050
10371051#ifdef ALPHA_SCISSOR_USED
Original file line number Diff line number Diff line change @@ -830,13 +830,26 @@ void main() {
830830 inv_view_matrix[2 ][3 ] = 0.0 ;
831831#endif
832832
833+ #ifdef LIGHT_VERTEX_USED
834+ vec3 light_vertex = vertex;
835+ #endif // LIGHT_VERTEX_USED
836+
833837 mat4 read_view_matrix = scene_data.view_matrix;
834838 vec2 read_viewport_size = scene_data.viewport_size;
835839
836840 {
837841#CODE : FRAGMENT
838842 }
839843
844+ #ifdef LIGHT_VERTEX_USED
845+ vertex = light_vertex;
846+ #ifdef USE_MULTIVIEW
847+ view = - normalize (vertex - eye_offset);
848+ #else
849+ view = - normalize (vertex);
850+ #endif // USE_MULTIVIEW
851+ #endif // LIGHT_VERTEX_USED
852+
840853#ifdef LIGHT_TRANSMITTANCE_USED
841854#ifdef SSS_MODE_SKIN
842855 transmittance_color.a = sss_strength;
Original file line number Diff line number Diff line change @@ -111,6 +111,7 @@ ShaderTypes::ShaderTypes() {
111111 shader_modes[RS::SHADER_SPATIAL].functions [" vertex" ].built_ins [" EYE_OFFSET" ] = constt (ShaderLanguage::TYPE_VEC3);
112112
113113 shader_modes[RS::SHADER_SPATIAL].functions [" fragment" ].built_ins [" VERTEX" ] = constt (ShaderLanguage::TYPE_VEC3);
114+ shader_modes[RS::SHADER_SPATIAL].functions [" fragment" ].built_ins [" LIGHT_VERTEX" ] = ShaderLanguage::TYPE_VEC3;
114115 shader_modes[RS::SHADER_SPATIAL].functions [" fragment" ].built_ins [" FRAGCOORD" ] = constt (ShaderLanguage::TYPE_VEC4);
115116 shader_modes[RS::SHADER_SPATIAL].functions [" fragment" ].built_ins [" FRONT_FACING" ] = constt (ShaderLanguage::TYPE_BOOL);
116117 shader_modes[RS::SHADER_SPATIAL].functions [" fragment" ].built_ins [" NORMAL" ] = ShaderLanguage::TYPE_VEC3;
You can’t perform that action at this time.
0 commit comments