@@ -30,11 +30,11 @@ if (!source) {
30
30
Creates a shader from source.
31
31
Shaders can be nested with one another.
32
32
33
- | Name | Type | Description |
34
- | :---------| :----------------| :------------------------------|
35
- | source | ` RuntimeEffect ` | Compiled shaders |
36
- | uniforms | ` number ` | uniform values |
37
- | children | ` Shader ` | Shaders to be used as uniform |
33
+ | Name | Type | Description |
34
+ | :---------| :--------------------------------------------------------------------- | :------------------------------|
35
+ | source | ` RuntimeEffect ` | Compiled shaders |
36
+ | uniforms | < code >{ [ name: string ] : number &# 124 ; Vector &# 124 ; number [ ] }</ code > | uniform values |
37
+ | children | ` Shader ` | Shaders to be used as uniform |
38
38
39
39
### Simple Shader
40
40
@@ -63,25 +63,30 @@ const SimpleShader = () => {
63
63
64
64
### Using Uniforms
65
65
66
+ Uniforms are variables used to parametrize shaders.
67
+ The following uniform types are supported: ` float ` , ` float2 ` , ` float3 ` , ` float4 ` , ` float2x2 ` , ` float3x3 ` , ` float4x4 ` , ` int ` , ` int2 ` , ` int3 ` and, ` int4 ` .
68
+
66
69
``` tsx twoslash
67
- import {Canvas , Skia , Paint , Shader , Fill } from " @shopify/react-native-skia" ;
70
+ import {Canvas , Skia , Paint , Shader , Fill , vec } from " @shopify/react-native-skia" ;
68
71
69
72
const source = Skia .RuntimeEffect .Make (`
70
- uniform float blue ;
73
+ uniform vec2 c ;
71
74
uniform float r;
75
+ uniform float blue;
72
76
73
77
vec4 main(vec2 pos) {
74
78
vec2 normalized = pos/vec2(2 * r);
75
- return distance(pos, vec2(r)) > r ? vec4(1) : vec4(normalized.x, normalized.y , blue, 1);
79
+ return distance(pos, c) > r ? vec4(1) : vec4(normalized, blue, 1);
76
80
} ` )! ;
77
81
78
82
const UniformShader = () => {
79
- const blue = 1.0 ;
80
83
const r = 128 ;
84
+ const c = vec (2 * r , r );
85
+ const blue = 1.0 ;
81
86
return (
82
87
<Canvas style = { { flex: 1 }} >
83
88
<Paint >
84
- <Shader source = { source } uniforms = { [ blue , r ] } />
89
+ <Shader source = { source } uniforms = { { c , r , blue } } />
85
90
</Paint >
86
91
<Fill />
87
92
</Canvas >
@@ -122,4 +127,4 @@ const NestedShader = () => {
122
127
};
123
128
```
124
129
125
- ![ Simple Shader] ( assets/nested.png )
130
+ ![ Simple Shader] ( assets/nested.png )
0 commit comments