Browse Source

Merge pull request #6022 from paddy-exe/document-new-built-ins

Document new shader built-ins (node position, camera pos/dir)
Max Hilbrunner 3 years ago
parent
commit
f8ffad0b47
1 changed files with 14 additions and 15 deletions
  1. 14 15
      tutorials/shaders/shader_reference/spatial_shader.rst

+ 14 - 15
tutorials/shaders/shader_reference/spatial_shader.rst

@@ -162,6 +162,14 @@ shader, this value can be used as desired.
 +----------------------------------------+--------------------------------------------------------+
 | in mat4 **INV_PROJECTION_MATRIX**      | Clip space to view space transform.                    |
 +----------------------------------------+--------------------------------------------------------+
+| in vec3 **NODE_POSITION_WORLD**        | Node world space position.                             |
++----------------------------------------+--------------------------------------------------------+
+| in vec3 **NODE_POSITION_VIEW**         | Node view space position.                              |
++----------------------------------------+--------------------------------------------------------+
+| in vec3 **CAMERA_POSITION_WORLD**      | Camera world space position.                           |
++----------------------------------------+--------------------------------------------------------+
+| in vec3 **CAMERA_DIRECTION_WORLD**     | Camera world space direction.                          |
++----------------------------------------+--------------------------------------------------------+
 | in bool **OUTPUT_IS_SRGB**             | ``true`` when calculations happen in sRGB color space  |
 |                                        | (``true`` in GLES2, ``false`` in GLES3).               |
 +----------------------------------------+--------------------------------------------------------+
@@ -229,21 +237,6 @@ The default use of a Godot fragment processor function is to set up the material
 and to let the built-in renderer handle the final shading. However, you are not required to use all
 these properties, and if you don't write to them, Godot will optimize away the corresponding functionality.
 
-Below are examples of common variables calculated using the built-ins:
-
-.. code-block:: glsl
-
-    vec3 model_world_space = MODEL_MATRIX[3].xyz; // Object's world space position. This is the equivalent to global_transform.origin in GDScript.
-    mat3 model_transform_basis = mat3(MODEL_MATRIX); // Object's world space transform basis. This is the equivalent to global_transform.basis in GDScript.
-    vec3 camera_world_space = INV_VIEW_MATRIX[3].xyz; // Camera's world space position. This is the equivalent to camera.global_transform.origin in GDScript.
-    vec3 camera_eye_world_space = VIEW_MATRIX[3].xyz; // Camera eye vector in world space direction of the camera.
-    vec3 camera_to_object_world_space = normalize(MODEL_MATRIX[3].xyz - INV_VIEW_MATRIX[3].xyz); // Camera's direction to the object in world space.
-
-.. note::
-
-    A commonly used alternative to ``MODEL_MATRIX[3].xyz`` is to use ``vec3 origin = (MODEL_MATRIX * vec4(0,0,0,1)).xyz``. It is more efficient to use ``MODEL_MATRIX[3].xyz`` as it avoids the matrix multiplication. 
-
-
 +----------------------------------------+--------------------------------------------------------------------------------------------------+
 | Built-in                               | Description                                                                                      |
 +========================================+==================================================================================================+
@@ -278,6 +271,12 @@ Below are examples of common variables calculated using the built-ins:
 +----------------------------------------+--------------------------------------------------------------------------------------------------+
 | in mat4 **INV_PROJECTION_MATRIX**      | Clip space to view space transform.                                                              |
 +----------------------------------------+--------------------------------------------------------------------------------------------------+
+| in vec3 **NODE_POSITION_WORLD**        | Node world space position                                                                        |
++----------------------------------------+--------------------------------------------------------------------------------------------------+
+| in vec3 **NODE_POSITION_VIEW**         | Node view space position                                                                         |
++----------------------------------------+--------------------------------------------------------------------------------------------------+
+| in vec3 **CAMERA_POSITION_WORLD**      | Camera world space position                                                                      |
++----------------------------------------+--------------------------------------------------------------------------------------------------+
 | in vec3 **VERTEX**                     | Vertex that comes from vertex function (default, in view space).                                 |
 +----------------------------------------+--------------------------------------------------------------------------------------------------+
 | in int **VIEW_INDEX**                  |                                                                                                  |