ソースを参照

Update compute_shaders.rst (#6468)

Jon Gonzalez 2 年 前
コミット
b603b1df3a
1 ファイル変更15 行追加14 行削除
  1. 15 14
      tutorials/shaders/compute_shaders.rst

+ 15 - 14
tutorials/shaders/compute_shaders.rst

@@ -44,7 +44,7 @@ Let's take a look at this compute shader code:
 
     // A binding to the buffer we create in our script
     layout(set = 0, binding = 0, std430) restrict buffer MyDataBuffer {
-        double data[];
+        float data[];
     }
     my_data_buffer;
 
@@ -54,7 +54,8 @@ Let's take a look at this compute shader code:
         my_data_buffer.data[gl_GlobalInvocationID.x] *= 2.0;
     }
 
-This code takes an array of doubles, multiplies each element by 2 and store the results back in the buffer array.
+This code takes an array of floats, multiplies each element by 2 and store the results back in the buffer array.
+ 
 
 To continue copy the code above into your newly created "compute_example.glsl" file.
 
@@ -99,31 +100,31 @@ Provide input data
 
 As you might remember we want to pass an input array to our shader, multiply each element by 2 and get the results.
 
-To pass values to a compute shader we need to create a buffer. We are dealing with an array of doubles, so we will use a storage buffer for this example.
+To pass values to a compute shader we need to create a buffer. We are dealing with an array of floats, so we will use a storage buffer for this example.
 A storage buffer takes an array of bytes and allows the CPU to transfer data to and from the GPU.
 
-So let's initialize an array of doubles and create a storage buffer:
+So let's initialize an array of floats and create a storage buffer:
 
 .. tabs::
  .. code-tab:: gdscript GDScript
 
-    # Prepare our data. We use doubles in the shader, so we need 64 bit.
-    var input := PackedFloat64Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
+    # Prepare our data. We use floats in the shader, so we need 32 bit.
+    var input := PackedFloat32Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
     var input_bytes := input.to_byte_array()
 
-    # Create a storage buffer that can hold our double values.
-    # Each double has 8 byte (64 bit) so 10 x 8 = 80 bytes
+    # Create a storage buffer that can hold our float values.
+    # Each float has 8 byte (32 bit) so 10 x 8 = 80 bytes
     var buffer := rd.storage_buffer_create(input_bytes.size(), input_bytes)
 
  .. code-tab:: csharp
 
-    // Prepare our data. We use doubles in the shader, so we need 64 bit.
-    var input = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
-    var inputBytes = new byte[input.Length * sizeof(double)];
+    // Prepare our data. We use floats in the shader, so we need 32 bit.
+    var input = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+    var inputBytes = new byte[input.Length * sizeof(float)];
     Buffer.BlockCopy(input, 0, inputBytes, 0, inputBytes.Length);
 
-    // Create a storage buffer that can hold our double values.
-    // Each double has 8 byte (64 bit) so 10 x 8 = 80 bytes
+    // Create a storage buffer that can hold our float values.
+    // Each float has 8 byte (32 bit) so 10 x 8 = 80 bytes
     var buffer = rd.StorageBufferCreate((uint)inputBytes.Length, inputBytes);
 
 With the buffer in place we need to tell the rendering device to use this buffer.
@@ -236,7 +237,7 @@ Let's retrieve the data and print the results to our console.
 
     // Read back the data from the buffers
     var outputBytes = rd.BufferGetData(outputBuffer);
-    var output = new double[input.Length];
+    var output = new float[input.Length];
     Buffer.BlockCopy(outputBytes, 0, output, 0, outputBytes.Length);
     GD.Print("Input: ", input)
     GD.Print("Output: ", output)