|
@@ -1,9 +1,9 @@
|
|
|
return {
|
|
|
summary = 'Get the format of a buffer in the Shader.',
|
|
|
description = [[
|
|
|
- Returns the format of a uniform or storage buffer in the shader. This matches the same syntax
|
|
|
- used by `lovr.graphics.newBuffer`, so it can be passed there to quickly create a Buffer that
|
|
|
- matches a variable in a Shader.
|
|
|
+ Returns the format of a uniform or storage buffer in the shader. The return type matches the
|
|
|
+ same syntax used by `lovr.graphics.newBuffer`, so it can be passed there to quickly create a
|
|
|
+ Buffer that matches a variable in a Shader.
|
|
|
]],
|
|
|
arguments = {
|
|
|
name = {
|
|
@@ -14,7 +14,7 @@ return {
|
|
|
returns = {
|
|
|
format = {
|
|
|
type = 'table',
|
|
|
- description = 'The x size of a workgroup.'
|
|
|
+ description = 'A list of fields declared in the shader code for the buffer.'
|
|
|
},
|
|
|
length = {
|
|
|
type = 'number',
|
|
@@ -31,42 +31,38 @@ return {
|
|
|
If the buffer only has a single array field, the format will be "unwrapped" to an array instead
|
|
|
of a single-field struct with an array in it. Example:
|
|
|
|
|
|
- ```
|
|
|
- shader = lovr.graphics.newShader([[
|
|
|
- layout(set = 0, binding = 0) buffer Numbers {
|
|
|
- uint numbers[64];
|
|
|
- };
|
|
|
+ shader = lovr.graphics.newShader([[
|
|
|
+ layout(set = 0, binding = 0) buffer Numbers {
|
|
|
+ uint numbers[64];
|
|
|
+ };
|
|
|
|
|
|
- void lovrmain(){}
|
|
|
- ]])
|
|
|
+ void lovrmain(){}
|
|
|
+ ]])
|
|
|
|
|
|
- shader:getBufferFormat('Numbers')
|
|
|
- -- returns {{ name = 'numbers', type = 'u32' }}, 64
|
|
|
- -- not {{ name = 'numbers', type = 'u32', length = 64 }}, 1
|
|
|
- ```
|
|
|
+ shader:getBufferFormat('Numbers')
|
|
|
+ -- returns {{ name = 'numbers', type = 'u32' }}, 64
|
|
|
+ -- not {{ name = 'numbers', type = 'u32', length = 64 }}, 1
|
|
|
|
|
|
Similarly, if the buffer only has a single struct field, the format will be "unwrapped" to the
|
|
|
inner struct. This lets you use a struct for a Buffer's data without having to wrap everything
|
|
|
in an extra namespace. Example:
|
|
|
|
|
|
- ```
|
|
|
- shader = lovr.graphics.newShader([[
|
|
|
- struct HandParams {
|
|
|
- vec3 position;
|
|
|
- float trigger;
|
|
|
- };
|
|
|
+ shader = lovr.graphics.newShader([[
|
|
|
+ struct HandParams {
|
|
|
+ vec3 position;
|
|
|
+ float trigger;
|
|
|
+ };
|
|
|
|
|
|
- layout(set = 0, binding = 0) buffer Hand {
|
|
|
- HandParams params;
|
|
|
- };
|
|
|
+ layout(set = 0, binding = 0) buffer Hand {
|
|
|
+ HandParams params;
|
|
|
+ };
|
|
|
|
|
|
- void lovrmain(){}
|
|
|
- ]])
|
|
|
+ void lovrmain(){}
|
|
|
+ ]])
|
|
|
|
|
|
- shader:getBufferFormat('Hand')
|
|
|
- -- returns {{ name = 'position', type = 'vec3' }, { name = 'trigger', type = 'float' }}, 1
|
|
|
- -- not {{ name = 'params', type = {...}}}, 1
|
|
|
- ```
|
|
|
+ shader:getBufferFormat('Hand')
|
|
|
+ -- returns {{ name = 'position', type = 'vec3' }, { name = 'trigger', type = 'float' }}, 1
|
|
|
+ -- not {{ name = 'params', type = {...}}}, 1
|
|
|
]=],
|
|
|
example = [=[
|
|
|
shader = lovr.graphics.newShader([[
|