react-native-shine 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,35 +1,159 @@
1
1
  # react-native-shine
2
2
 
3
- Fast and efficient way of adding interactive effects that are run entirely on shaders using typeGPU.
3
+ Fast and efficient way to add interactive GPU-based shader effects to your React Native apps using [TypeGPU](https://github.com/type-gpu/type-gpu) and [WebGPU](https://github.com/wojtus7/react-native-wgpu).
4
4
 
5
- ## Installation
5
+ `react-native-shine` leverages powerful GPU execution via native bindings, delivering lovely, fancy and **shiny** effects—ideal for UIs or creative interactions.
6
6
 
7
+ ---
8
+
9
+ ## ⚙️ Installation
10
+
11
+ Install the library:
7
12
 
8
13
  ```sh
14
+ yarn add react-native-shine
15
+ # or
9
16
  npm install react-native-shine
10
17
  ```
11
18
 
19
+ ---
20
+
21
+ ### 📦 Install Required Peer Dependencies
22
+
23
+ This library depends on several native modules that must be installed in your host app.
24
+
25
+ Install required peer dependencies with:
26
+
27
+ ```sh
28
+ yarn add react-native-reanimated react-native-worklets react-native-wgpu typegpu
29
+ # or
30
+ npm install react-native-reanimated react-native-worklets react-native-wgpu typegpu
31
+ ```
32
+
33
+ These are not bundled with the library and must match compatible versions used by your app.
34
+
35
+ ---
36
+
37
+ ### 🛠️ Optional: Auto-install Peer Dependencies
38
+
39
+ You can also use our helper script to install all peer deps automatically:
40
+
41
+ ```sh
42
+ yarn run install-peers
43
+ ```
44
+
45
+ Or use `install-peerdeps`:
46
+
47
+ ```sh
48
+ npx install-peerdeps react-native-shine
49
+ ```
50
+
51
+ > Note: `install-peerdeps` reads the `peerDependencies` section of the package and installs them at the root level of your project.
52
+
53
+ ---
12
54
 
13
- ## Usage
55
+ ### Update Your `babel.config.js`
14
56
 
57
+ For this library to work, you need to add the `unplugin-typegpu/babel` plugin. It comes bundled as a dependency, so you just need to add it in your Babel config.
15
58
 
16
59
  ```js
17
- import { multiply } from 'react-native-shine';
60
+ plugins: ['unplugin-typegpu/babel'];
61
+ ```
62
+
63
+ For additional instructions, please follow the [TypeGPU Unplugin docs](https://docs.swmansion.com/TypeGPU/tooling/unplugin-typegpu/).
64
+
65
+ ---
18
66
 
19
- // ...
67
+ ## 📋 Requirements
20
68
 
21
- const result = await multiply(3, 7);
69
+ - React Native 0.71
70
+ - `react-native-reanimated` ≥ 4.0.0
71
+ - `react-native-webgpu` ≥ 0.2.0
72
+ - WebGPU-compatible device/emulator
73
+
74
+ > [!NOTE]
75
+ > If you’re using Expo, you’ll need to use the bare workflow (custom dev client or prebuild) to support native modules.
76
+
77
+ ---
78
+
79
+ ## 🚀 Usage
80
+
81
+ Basic example:
82
+
83
+ ```tsx
84
+ import { View } from 'react-native';
85
+ import { Shine } from 'react-native-shine';
86
+
87
+ export default function Index() {
88
+ return (
89
+ <View
90
+ style={{
91
+ flex: 1,
92
+ justifyContent: 'center',
93
+ alignItems: 'center',
94
+ }}
95
+ >
96
+ <Shine
97
+ imageURI="https://assets.pkmn.gg/fit-in/600x836/filters:format(webp)/images/cards/dp7/dp7-101.png?signature=1354344def4514e05080d064310884cdd6a27ef93692d9656eda9ae84ae1b2e1"
98
+ width={300}
99
+ height={400}
100
+ />
101
+ </View>
102
+ );
103
+ }
22
104
  ```
23
105
 
106
+ Coming soon: docs and examples.
107
+
108
+ ---
109
+
110
+ ## 🧪 Troubleshooting
111
+
112
+ If you encounter runtime or build issues:
113
+
114
+ - Make sure all peer dependencies are installed.
115
+ - Rebuild your app after installing native modules:
24
116
 
25
- ## Contributing
117
+ ```sh
118
+ # iOS
119
+ cd ios && xcodebuild clean && cd ..
120
+ npx react-native run-ios
26
121
 
27
- See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
122
+ # Android
123
+ cd android && ./gradlew clean && cd ..
124
+ npx react-native run-android
125
+ ```
126
+
127
+ ```sh
128
+ # Expo
129
+
130
+ # iOS
131
+ npx expo prebuild
132
+ npx expo run:ios
133
+
134
+ # Android
135
+ npx expo prebuild
136
+ npx expo run:android
137
+ ```
138
+
139
+ - Clear bundler cache (helps with Metro native linking issues).
140
+
141
+ ---
142
+
143
+ ## 🧑‍💻 Contributing
144
+
145
+ Want to help improve `react-native-shine`?
146
+
147
+ Check out the [`CONTRIBUTING.md`](CONTRIBUTING.md) guide for instructions on how to build, test, and submit PRs.
148
+
149
+ We welcome shaders, GPU visual effects, demos, and bug fixes!
150
+
151
+ ---
28
152
 
29
- ## License
153
+ ## 📜 License
30
154
 
31
- MIT
155
+ MIT © [VoidFrog](https://github.com/VoidFrog)
32
156
 
33
157
  ---
34
158
 
35
- Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
159
+ Made with ❤️ and [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -45,6 +45,7 @@ export function Shine({
45
45
  const gravitySensor = useAnimatedSensor(SensorType.GRAVITY, {
46
46
  interval: 20
47
47
  });
48
+ console.log('render');
48
49
 
49
50
  // Subscribe to orientation changes and reset calibration on change
50
51
  useEffect(() => {
@@ -144,22 +145,61 @@ export function Shine({
144
145
  const maskBGP = createBindGroupPairs([textureBindGroupLayout, colorMaskBindGroupLayout], [textureBindGroup, colorMaskBindGroup]);
145
146
  let bloomPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(bloomFragment, getDefaultTarget(presentationFormat)).createPipeline();
146
147
  bloomPipeline = attachBindGroups(bloomPipeline, bloomBGP);
147
- let maskPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(colorMaskFragment, getDefaultTarget(presentationFormat)).createPipeline();
148
- maskPipeline = attachBindGroups(maskPipeline, maskBGP);
148
+ let colorMaskPipeline = root['~unstable'].withVertex(mainVertex, {}).withFragment(colorMaskFragment, getDefaultTarget(presentationFormat)).createPipeline();
149
+ colorMaskPipeline = attachBindGroups(colorMaskPipeline, maskBGP);
150
+ const rot = d.vec3f(0.0);
151
+ let view;
152
+ let bloomAttachment;
153
+ let colorMaskAttachment;
149
154
  const render = () => {
150
- const rot = rotationShared.value;
151
- rotationBuffer.write(d.vec3f(rot[0], rot[1], rot[2]));
152
- bloomPipeline.withColorAttachment({
153
- view: context.getCurrentTexture().createView(),
155
+ rot[0] = rotationShared.value[0];
156
+ rot[1] = rotationShared.value[1];
157
+ rot[2] = rotationShared.value[2];
158
+ rotationBuffer.write(rot);
159
+ view = context.getCurrentTexture().createView();
160
+ bloomAttachment = {
161
+ view: view,
154
162
  clearValue: [0, 0, 0, 0],
155
163
  loadOp: 'clear',
156
164
  storeOp: 'store'
157
- }).draw(6);
158
- maskPipeline.withColorAttachment({
159
- view: context.getCurrentTexture().createView(),
165
+ };
166
+ colorMaskAttachment = {
167
+ view: view,
160
168
  loadOp: 'load',
161
169
  storeOp: 'store'
162
- }).draw(6);
170
+ };
171
+
172
+ // root['~unstable'].beginRenderPass(
173
+ // {
174
+ // colorAttachments: [
175
+ // {
176
+ // view,
177
+ // clearValue: [0, 0, 0, 0],
178
+ // loadOp: 'clear',
179
+ // storeOp: 'store',
180
+ // },
181
+ // ],
182
+ // },
183
+ // (pass) => {
184
+ // pass.setPipeline(bloomPipeline);
185
+ // // pass = attachBindGroupsToPass(pass, bloomBGP);
186
+ // pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
187
+ // pass.setBindGroup(rotationValuesBindGroupLayout, rotationBindGroup);
188
+ // pass.setBindGroup(bloomOptionsBindGroupLayout, bloomOptionsBindGroup);
189
+ // pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
190
+ // pass.draw(6);
191
+
192
+ // // Mask draw
193
+ // pass.setPipeline(colorMaskPipeline);
194
+ // pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
195
+ // pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
196
+ // pass.draw(6);
197
+ // }
198
+ // );
199
+ // root['~unstable'].flush();
200
+
201
+ bloomPipeline.withColorAttachment(bloomAttachment).draw(6);
202
+ colorMaskPipeline.withColorAttachment(colorMaskAttachment).draw(6);
163
203
  context.present();
164
204
  frameRef.current = requestAnimationFrame(render);
165
205
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","Canvas","useDevice","useGPUContext","getOrInitRoot","mainVertex","getBitmapFromURI","createTexture","loadTexture","clamp","rotate2D","subscribeToOrientationChange","getAngleFromDimensions","bloomOptionsBindGroupLayout","colorMaskBindGroupLayout","rotationValuesBindGroupLayout","textureBindGroupLayout","SensorType","useAnimatedSensor","useDerivedValue","useSharedValue","d","Platform","bloomFragment","createBloomOptionsBindGroup","createBloomOptionsBuffer","createColorMaskBindGroup","createColorMaskBuffer","createRotationBuffer","createRotationValuesBindGroup","createBindGroupPairs","createBloomOptions","createColorMask","attachBindGroups","getDefaultTarget","colorMaskFragment","jsx","_jsx","Shine","width","height","imageURI","bloomOptions","colorMaskOptions","device","root","ref","context","presentationFormat","navigator","gpu","getPreferredCanvasFormat","frameRef","imageTexture","setImageTexture","orientationAngle","rotationShared","initialGravity","calibSum","calibCount","calibrated","gravitySensor","GRAVITY","interval","value","unsubscribe","angleDeg","v","sensor","x","y","z","gx","gy","gz","CALIBRATION_SAMPLES","alpha","scale","s","c","avg","init","dx","dy","dz","mx","my","screenX","screenY","prev","smoothX","smoothY","smoothZ","bitmap","texture","configure","format","alphaMode","sampler","createSampler","magFilter","minFilter","textureBindGroup","createBindGroup","unwrap","createView","rotationBuffer","rotationBindGroup","bloomOptionsBuffer","bloomOptionsBindGroup","colorMaskBuffer","baseColor","colorMaskBindGroup","bloomBGP","maskBGP","bloomPipeline","withVertex","withFragment","createPipeline","maskPipeline","render","rot","write","vec3f","withColorAttachment","view","getCurrentTexture","clearValue","loadOp","storeOp","draw","present","current","requestAnimationFrame","cancelAnimationFrame","style","aspectRatio","transparent","OS"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","Canvas","useDevice","useGPUContext","getOrInitRoot","mainVertex","getBitmapFromURI","createTexture","loadTexture","clamp","rotate2D","subscribeToOrientationChange","getAngleFromDimensions","bloomOptionsBindGroupLayout","colorMaskBindGroupLayout","rotationValuesBindGroupLayout","textureBindGroupLayout","SensorType","useAnimatedSensor","useDerivedValue","useSharedValue","d","Platform","bloomFragment","createBloomOptionsBindGroup","createBloomOptionsBuffer","createColorMaskBindGroup","createColorMaskBuffer","createRotationBuffer","createRotationValuesBindGroup","createBindGroupPairs","createBloomOptions","createColorMask","attachBindGroups","getDefaultTarget","colorMaskFragment","jsx","_jsx","Shine","width","height","imageURI","bloomOptions","colorMaskOptions","device","root","ref","context","presentationFormat","navigator","gpu","getPreferredCanvasFormat","frameRef","imageTexture","setImageTexture","orientationAngle","rotationShared","initialGravity","calibSum","calibCount","calibrated","gravitySensor","GRAVITY","interval","console","log","value","unsubscribe","angleDeg","v","sensor","x","y","z","gx","gy","gz","CALIBRATION_SAMPLES","alpha","scale","s","c","avg","init","dx","dy","dz","mx","my","screenX","screenY","prev","smoothX","smoothY","smoothZ","bitmap","texture","configure","format","alphaMode","sampler","createSampler","magFilter","minFilter","textureBindGroup","createBindGroup","unwrap","createView","rotationBuffer","rotationBindGroup","bloomOptionsBuffer","bloomOptionsBindGroup","colorMaskBuffer","baseColor","colorMaskBindGroup","bloomBGP","maskBGP","bloomPipeline","withVertex","withFragment","createPipeline","colorMaskPipeline","rot","vec3f","view","bloomAttachment","colorMaskAttachment","render","write","getCurrentTexture","clearValue","loadOp","storeOp","withColorAttachment","draw","present","current","requestAnimationFrame","cancelAnimationFrame","style","aspectRatio","transparent","OS"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -23,4 +23,10 @@ export const getDefaultTarget = presentationFormat => {
23
23
  }
24
24
  };
25
25
  };
26
+ export const attachBindGroupsToPass = (pass, bindGroupPairs) => {
27
+ for (const pair of bindGroupPairs) {
28
+ pass.setBindGroup(pair.layout, pair.group);
29
+ }
30
+ return pass;
31
+ };
26
32
  //# sourceMappingURL=pipelineSetups.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["attachBindGroups","pipeline","bindGroupPairs","pair","with","layout","group","getDefaultTarget","presentationFormat","format","blend","color","srcFactor","dstFactor","operation","alpha"],"sourceRoot":"../../../src","sources":["shaders/pipelineSetups.ts"],"mappings":";;AAGA,OAAO,MAAMA,gBAAgB,GAAGA,CAC9BC,QAA4B,EAC5BC,cAA+B,KAC5B;EACH,KAAK,MAAMC,IAAI,IAAID,cAAc,EAAE;IACjCD,QAAQ,GAAGA,QAAQ,CAACG,IAAI,CAACD,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,KAAK,CAAC;EACnD;EAEA,OAAOL,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMM,gBAAgB,GAC3BC,kBAAoC,IACZ;EACxB,OAAO;IACLC,MAAM,EAAED,kBAAkB;IAC1BE,KAAK,EAAE;MACLC,KAAK,EAAE;QACLC,SAAS,EAAE,WAAW;QACtBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb,CAAC;MACDC,KAAK,EAAE;QACLH,SAAS,EAAE,KAAK;QAChBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb;IACF;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["attachBindGroups","pipeline","bindGroupPairs","pair","with","layout","group","getDefaultTarget","presentationFormat","format","blend","color","srcFactor","dstFactor","operation","alpha","attachBindGroupsToPass","pass","setBindGroup"],"sourceRoot":"../../../src","sources":["shaders/pipelineSetups.ts"],"mappings":";;AAGA,OAAO,MAAMA,gBAAgB,GAAGA,CAC9BC,QAA4B,EAC5BC,cAA+B,KAC5B;EACH,KAAK,MAAMC,IAAI,IAAID,cAAc,EAAE;IACjCD,QAAQ,GAAGA,QAAQ,CAACG,IAAI,CAACD,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,KAAK,CAAC;EACnD;EAEA,OAAOL,QAAQ;AACjB,CAAC;AAED,OAAO,MAAMM,gBAAgB,GAC3BC,kBAAoC,IACZ;EACxB,OAAO;IACLC,MAAM,EAAED,kBAAkB;IAC1BE,KAAK,EAAE;MACLC,KAAK,EAAE;QACLC,SAAS,EAAE,WAAW;QACtBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb,CAAC;MACDC,KAAK,EAAE;QACLH,SAAS,EAAE,KAAK;QAChBC,SAAS,EAAE,qBAAqB;QAChCC,SAAS,EAAE;MACb;IACF;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAME,sBAAsB,GAAGA,CACpCC,IAAS,EACTf,cAA+B,KAC5B;EACH,KAAK,MAAMC,IAAI,IAAID,cAAc,EAAE;IACjCe,IAAI,CAACC,YAAY,CAACf,IAAI,CAACE,MAAM,EAAEF,IAAI,CAACG,KAAK,CAAC;EAC5C;EAEA,OAAOW,IAAI;AACb,CAAC","ignoreList":[]}
@@ -57,7 +57,7 @@ export const colorMaskToTyped = colorMask => {
57
57
  };
58
58
  return result;
59
59
  };
60
- const numberArrToTyped = vec => {
60
+ export const numberArrToTyped = vec => {
61
61
  let convFn = null;
62
62
  switch (vec.length) {
63
63
  case 2:
@@ -1 +1 @@
1
- {"version":3,"names":["f32","vec2f","vec3f","vec4f","div","createBloomOptions","options","glowPower","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","bloomIntensity","bloomOp","mapToF32","obj","result","key","createColorMask","colorMask","baseColor","rgbToleranceRange","baseTolerance","upper","lower","tolerance","mask","colorMaskToTyped","numberArrToTyped","vec","convFn","length","Error","typed","createBindGroupPair","bindGroupLayout","bindGroup","layout","group","createBindGroupPairs","bindGroupLayouts","bindGroups","pairs","i","push"],"sourceRoot":"../../../src","sources":["types/typeUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["f32","vec2f","vec3f","vec4f","div","createBloomOptions","options","glowPower","hueShiftAngleMax","hueShiftAngleMin","hueBlendPower","lightIntensity","bloomIntensity","bloomOp","mapToF32","obj","result","key","createColorMask","colorMask","baseColor","rgbToleranceRange","baseTolerance","upper","lower","tolerance","mask","colorMaskToTyped","numberArrToTyped","vec","convFn","length","Error","typed","createBindGroupPair","bindGroupLayout","bindGroup","layout","group","createBindGroupPairs","bindGroupLayouts","bindGroups","pairs","i","push"],"sourceRoot":"../../../src","sources":["types/typeUtils.ts"],"mappings":";;AAAA,SAASA,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,cAAc;AAQvD,SAASC,GAAG,QAAQ,aAAa;AAGjC,OAAO,MAAMC,kBAAkB,GAC7BC,OAA8B,IACb;EACjB,MAAM;IACJC,SAAS;IACTC,gBAAgB;IAChBC,gBAAgB;IAChBC,aAAa;IACbC,cAAc;IACdC;EACF,CAAC,GAAGN,OAAO;EAEX,MAAMO,OAAO,GAAG;IACdN,SAAS,EAAEA,SAAS,IAAI,GAAG;IAC3BC,gBAAgB,EAAEA,gBAAgB,IAAI,GAAG;IACzCC,gBAAgB,EAAEA,gBAAgB,IAAI,GAAG;IACzCC,aAAa,EAAEA,aAAa,IAAI,GAAG;IACnCC,cAAc,EAAEA,cAAc,IAAI,GAAG;IACrCC,cAAc,EAAEA,cAAc,IAAI;EACpC,CAAC;EAED,OAAOC,OAAO;AAChB,CAAC;AAED,OAAO,MAAMC,QAAQ,GACnBC,GAAM,IAGH;EACH,MAAMC,MAAM,GAAG,CAAC,CAAQ;EACxB,KAAK,MAAMC,GAAG,IAAIF,GAAG,EAAE;IACrBC,MAAM,CAACC,GAAG,CAAC,GAAGjB,GAAG,CAACe,GAAG,CAACE,GAAG,CAAC,CAAC;EAC7B;EAEA,OAAOD,MAAM;AACf,CAAC;AAED,OAAO,MAAME,eAAe,GAC1BC,SAAwD,IAC1C;EACd,MAAM;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGF,SAAS;EAClD,MAAMG,aAAa,GAAG;IACpBC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAS;IAC3BC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;EACpB,CAAC;EACD,MAAMC,SAAS,GAAG;IAAE,GAAGH,aAAa;IAAE,GAAGD;EAAkB,CAAC;EAE5D,MAAMK,IAAe,GAAG;IACtBN,SAAS,EAAEA,SAAS;IACpBC,iBAAiB,EAAEI;EACrB,CAAC;EAED,OAAOC,IAAI;AACb,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIR,SAAoB,IAAK;EACxD,MAAMH,MAAM,GAAG;IACbI,SAAS,EAAEhB,GAAG,CAACwB,gBAAgB,CAACT,SAAS,CAACC,SAAS,CAAC,EAAE,GAAG,CAAC;IAC1DC,iBAAiB,EAAE;MACjBE,KAAK,EAAEnB,GAAG,CAACwB,gBAAgB,CAACT,SAAS,CAACE,iBAAiB,CAACE,KAAK,CAAC,EAAE,GAAG,CAAC;MACpEC,KAAK,EAAEpB,GAAG,CAACwB,gBAAgB,CAACT,SAAS,CAACE,iBAAiB,CAACG,KAAK,CAAC,EAAE,GAAG;IACrE;EACF,CAAC;EACD,OAAOR,MAAM;AACf,CAAC;AAED,OAAO,MAAMY,gBAAgB,GAAIC,GAAa,IAAK;EACjD,IAAIC,MAA2C,GAAG,IAAI;EACtD,QAAQD,GAAG,CAACE,MAAM;IAChB,KAAK,CAAC;MACJD,MAAM,GAAG7B,KAAK;MACd;IACF,KAAK,CAAC;MACJ6B,MAAM,GAAG5B,KAAK;MACd;IACF,KAAK,CAAC;MACJ4B,MAAM,GAAG3B,KAAK;MACd;IACF;MACE,MAAM,IAAI6B,KAAK,CAAC,kDAAkD,CAAC;EACvE;EAEA,MAAMC,KAAK,GAAGH,MAAM,CAAC,GAAGD,GAAG,CAAC;EAC5B,OAAOI,KAAK;AACd,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,eAAoC,EACpCC,SAAwB,KACN;EAClB,OAAO;IAAEC,MAAM,EAAEF,eAAe;IAAEG,KAAK,EAAEF;EAAU,CAAC;AACtD,CAAC;AAED,OAAO,MAAMG,oBAAoB,GAAGA,CAClCC,gBAAuC,EACvCC,UAA2B,KACP;EACpB,IACED,gBAAgB,CAACT,MAAM,GAAG,CAAC,IAC3BS,gBAAgB,CAACT,MAAM,KAAKU,UAAU,CAACV,MAAM,EAE7C,MAAM,IAAIC,KAAK,CACb,oFACF,CAAC;EACH,MAAMU,KAAsB,GAAG,EAAE;EACjC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,gBAAgB,CAACT,MAAM,EAAEY,CAAC,EAAE,EAAE;IAChDD,KAAK,CAACE,IAAI,CAACV,mBAAmB,CAACM,gBAAgB,CAACG,CAAC,CAAC,EAAGF,UAAU,CAACE,CAAC,CAAE,CAAC,CAAC;EACvE;EAEA,OAAOD,KAAK;AACd,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAKL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AA8BzB,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACT,qBAAqB,EACtB,MAAM,eAAe,CAAC;AAGvB,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CAClE;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,gBAAgB,GACjB,EAAE,UAAU,2CA8NZ;AAED,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAKL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AA8BzB,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACT,qBAAqB,EACtB,MAAM,eAAe,CAAC;AAGvB,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CAClE;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,gBAAgB,GACjB,EAAE,UAAU,2CAmQZ;AAED,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,CAAC"}
@@ -4,4 +4,5 @@ export declare const attachBindGroups: (pipeline: TgpuRenderPipeline, bindGroupP
4
4
  [x: string]: (import("typegpu/data").U32 | import("typegpu/data").Bool | import("typegpu/data").F32 | import("typegpu/data").F16 | import("typegpu/data").I32 | import("typegpu/data").Vec2f | import("typegpu/data").Vec3f | import("typegpu/data").Vec4f | import("typegpu/data").Vec2h | import("typegpu/data").Vec3h | import("typegpu/data").Vec4h | import("typegpu/data").Vec2i | import("typegpu/data").Vec3i | import("typegpu/data").Vec4i | import("typegpu/data").Vec2u | import("typegpu/data").Vec3u | import("typegpu/data").Vec4u) | import("typegpu/data").BuiltinClipDistances | import("typegpu/data").Decorated<import("typegpu/data").U32 | import("typegpu/data").Bool | import("typegpu/data").F32 | import("typegpu/data").F16 | import("typegpu/data").I32 | import("typegpu/data").Vec2f | import("typegpu/data").Vec3f | import("typegpu/data").Vec4f | import("typegpu/data").Vec2h | import("typegpu/data").Vec3h | import("typegpu/data").Vec4h | import("typegpu/data").Vec2i | import("typegpu/data").Vec3i | import("typegpu/data").Vec4i | import("typegpu/data").Vec2u | import("typegpu/data").Vec3u | import("typegpu/data").Vec4u, import("typegpu/data").AnyAttribute<import("typegpu/data").Builtin<"vertex_index" | "position" | "clip_distances" | "instance_index" | "front_facing" | "frag_depth" | "sample_index" | "sample_mask" | "local_invocation_id" | "local_invocation_index" | "global_invocation_id" | "workgroup_id" | "num_workgroups" | "subgroup_invocation_id" | "subgroup_size" | "fragment">>[]>;
5
5
  }>;
6
6
  export declare const getDefaultTarget: (presentationFormat: GPUTextureFormat) => GPUColorTargetState;
7
+ export declare const attachBindGroupsToPass: (pass: any, bindGroupPairs: BindGroupPair[]) => any;
7
8
  //# sourceMappingURL=pipelineSetups.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineSetups.d.ts","sourceRoot":"","sources":["../../../../src/shaders/pipelineSetups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,gBAAgB,GAC3B,UAAU,kBAAkB,EAC5B,gBAAgB,aAAa,EAAE;;EAOhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,gBAAgB,KACnC,mBAgBF,CAAC"}
1
+ {"version":3,"file":"pipelineSetups.d.ts","sourceRoot":"","sources":["../../../../src/shaders/pipelineSetups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,gBAAgB,GAC3B,UAAU,kBAAkB,EAC5B,gBAAgB,aAAa,EAAE;;EAOhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,gBAAgB,KACnC,mBAgBF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,GAAG,EACT,gBAAgB,aAAa,EAAE,QAOhC,CAAC"}
@@ -11,6 +11,7 @@ export declare const colorMaskToTyped: (colorMask: ColorMask) => {
11
11
  lower: any;
12
12
  };
13
13
  };
14
+ export declare const numberArrToTyped: (vec: number[]) => any;
14
15
  export declare const createBindGroupPair: (bindGroupLayout: TgpuBindGroupLayout, bindGroup: TgpuBindGroup) => BindGroupPair;
15
16
  export declare const createBindGroupPairs: (bindGroupLayouts: TgpuBindGroupLayout[], bindGroups: TgpuBindGroup[]) => BindGroupPair[];
16
17
  //# sourceMappingURL=typeUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../../../src/types/typeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,YAoBF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvD,KAAK,CAAC,KACL,GACA,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,GAQvC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACvD,SAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS;;;;;;CASpD,CAAC;AAsBF,eAAO,MAAM,mBAAmB,GAC9B,iBAAiB,mBAAmB,EACpC,WAAW,aAAa,KACvB,aAEF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,mBAAmB,EAAE,EACvC,YAAY,aAAa,EAAE,KAC1B,aAAa,EAcf,CAAC"}
1
+ {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../../../src/types/typeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,YAoBF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvD,KAAK,CAAC,KACL,GACA,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,GAQvC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACvD,SAcF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS;;;;;;CASpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,QAkB7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,iBAAiB,mBAAmB,EACpC,WAAW,aAAa,KACvB,aAEF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,mBAAmB,EAAE,EACvC,YAAY,aAAa,EAAE,KAC1B,aAAa,EAcf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-shine",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Fast and efficient way of adding interactive effects that are run entirely on shaders using typeGPU.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -20,6 +20,7 @@
20
20
  "cpp",
21
21
  "*.podspec",
22
22
  "react-native.config.js",
23
+ "scripts",
23
24
  "!ios/build",
24
25
  "!android/build",
25
26
  "!android/gradle",
@@ -38,7 +39,9 @@
38
39
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
39
40
  "clean": "del-cli lib",
40
41
  "prepare": "bob build",
41
- "release": "release-it --only-version"
42
+ "release": "release-it --only-version",
43
+ "postinstall": "node ./scripts/postinstall.js",
44
+ "install-peers": "node ./scripts/install-peers.js"
42
45
  },
43
46
  "keywords": [
44
47
  "react-native",
@@ -91,7 +94,10 @@
91
94
  "peerDependencies": {
92
95
  "react": "*",
93
96
  "react-native": "*",
94
- "react-native-web": "^0.21.0"
97
+ "react-native-reanimated": "^4.0.1",
98
+ "react-native-wgpu": "^0.2.0",
99
+ "react-native-worklets": "^0.4.1",
100
+ "typegpu": "^0.7.0"
95
101
  },
96
102
  "workspaces": [
97
103
  "example"
@@ -161,9 +167,6 @@
161
167
  "dependencies": {
162
168
  "expo-asset": "^11.1.7",
163
169
  "react-native-orientation-locker": "^1.7.0",
164
- "react-native-reanimated": "^4.0.1",
165
- "react-native-wgpu": "^0.2.0",
166
- "react-native-worklets": "^0.4.1",
167
- "typegpu": "^0.7.0"
170
+ "unplugin-typegpu": "^0.2.2"
168
171
  }
169
172
  }
@@ -0,0 +1,21 @@
1
+ const { execSync } = require('child_process');
2
+
3
+ const PEERS = [
4
+ 'react-native-reanimated',
5
+ 'react-native-worklets',
6
+ 'react-native-wgpu',
7
+ 'typegpu',
8
+ ];
9
+
10
+ const installer = process.env.npm_config_user_agent?.includes('yarn')
11
+ ? 'yarn add'
12
+ : 'npm install';
13
+
14
+ console.log(`\n📦 Installing peer dependencies:\n${PEERS.join('\n')}\n`);
15
+
16
+ try {
17
+ execSync(`${installer} ${PEERS.join(' ')}`, { stdio: 'inherit' });
18
+ console.log('\n✅ Peer dependencies installed!\n');
19
+ } catch (err) {
20
+ console.error('\n❌ Failed to install peer dependencies:', err.message);
21
+ }
@@ -0,0 +1,19 @@
1
+ console.log(`
2
+ 🔆 react-native-shine installed.
3
+
4
+ ⚠️ Please make sure you have the required peer dependencies installed in your app:
5
+
6
+ 📦 react-native-reanimated
7
+ 📦 react-native-worklets
8
+ 📦 react-native-wgpu
9
+ 📦 typegpu
10
+
11
+ If you haven’t already, you can install them using:
12
+
13
+ yarn add react-native-reanimated react-native-worklets react-native-wgpu typegpu
14
+ or
15
+ npm install react-native-reanimated react-native-worklets react-native-wgpu typegpu
16
+
17
+ 👉 For more details, visit:
18
+ https://github.com/wojtus7/react-native-shine
19
+ `);
package/src/index.tsx CHANGED
@@ -82,6 +82,8 @@ export function Shine({
82
82
 
83
83
  const gravitySensor = useAnimatedSensor(SensorType.GRAVITY, { interval: 20 });
84
84
 
85
+ console.log('render');
86
+
85
87
  // Subscribe to orientation changes and reset calibration on change
86
88
  useEffect(() => {
87
89
  orientationAngle.value = getAngleFromDimensions();
@@ -231,32 +233,67 @@ export function Shine({
231
233
  .createPipeline();
232
234
  bloomPipeline = attachBindGroups(bloomPipeline, bloomBGP);
233
235
 
234
- let maskPipeline = root['~unstable']
236
+ let colorMaskPipeline = root['~unstable']
235
237
  .withVertex(mainVertex, {})
236
238
  .withFragment(colorMaskFragment, getDefaultTarget(presentationFormat))
237
239
  .createPipeline();
238
- maskPipeline = attachBindGroups(maskPipeline, maskBGP);
240
+ colorMaskPipeline = attachBindGroups(colorMaskPipeline, maskBGP);
239
241
 
242
+ const rot = d.vec3f(0.0);
243
+ let view: GPUTextureView;
244
+ let bloomAttachment;
245
+ let colorMaskAttachment;
240
246
  const render = () => {
241
- const rot = rotationShared.value;
242
- rotationBuffer.write(d.vec3f(rot[0]!, rot[1]!, rot[2]!));
243
-
244
- bloomPipeline
245
- .withColorAttachment({
246
- view: context.getCurrentTexture().createView(),
247
- clearValue: [0, 0, 0, 0],
248
- loadOp: 'clear',
249
- storeOp: 'store',
250
- })
251
- .draw(6);
252
-
253
- maskPipeline
254
- .withColorAttachment({
255
- view: context.getCurrentTexture().createView(),
256
- loadOp: 'load',
257
- storeOp: 'store',
258
- })
259
- .draw(6);
247
+ rot[0] = rotationShared.value[0];
248
+ rot[1] = rotationShared.value[1];
249
+ rot[2] = rotationShared.value[2];
250
+ rotationBuffer.write(rot);
251
+
252
+ view = context.getCurrentTexture().createView();
253
+ bloomAttachment = {
254
+ view: view,
255
+ clearValue: [0, 0, 0, 0],
256
+ loadOp: 'clear' as GPULoadOp,
257
+ storeOp: 'store' as GPUStoreOp,
258
+ };
259
+
260
+ colorMaskAttachment = {
261
+ view: view,
262
+ loadOp: 'load' as GPULoadOp,
263
+ storeOp: 'store' as GPUStoreOp,
264
+ };
265
+
266
+ // root['~unstable'].beginRenderPass(
267
+ // {
268
+ // colorAttachments: [
269
+ // {
270
+ // view,
271
+ // clearValue: [0, 0, 0, 0],
272
+ // loadOp: 'clear',
273
+ // storeOp: 'store',
274
+ // },
275
+ // ],
276
+ // },
277
+ // (pass) => {
278
+ // pass.setPipeline(bloomPipeline);
279
+ // // pass = attachBindGroupsToPass(pass, bloomBGP);
280
+ // pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
281
+ // pass.setBindGroup(rotationValuesBindGroupLayout, rotationBindGroup);
282
+ // pass.setBindGroup(bloomOptionsBindGroupLayout, bloomOptionsBindGroup);
283
+ // pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
284
+ // pass.draw(6);
285
+
286
+ // // Mask draw
287
+ // pass.setPipeline(colorMaskPipeline);
288
+ // pass.setBindGroup(textureBindGroupLayout, textureBindGroup);
289
+ // pass.setBindGroup(colorMaskBindGroupLayout, colorMaskBindGroup);
290
+ // pass.draw(6);
291
+ // }
292
+ // );
293
+ // root['~unstable'].flush();
294
+
295
+ bloomPipeline.withColorAttachment(bloomAttachment).draw(6);
296
+ colorMaskPipeline.withColorAttachment(colorMaskAttachment).draw(6);
260
297
 
261
298
  context.present();
262
299
  frameRef.current = requestAnimationFrame(render);
@@ -31,3 +31,14 @@ export const getDefaultTarget = (
31
31
  },
32
32
  };
33
33
  };
34
+
35
+ export const attachBindGroupsToPass = (
36
+ pass: any,
37
+ bindGroupPairs: BindGroupPair[]
38
+ ) => {
39
+ for (const pair of bindGroupPairs) {
40
+ pass.setBindGroup(pair.layout, pair.group);
41
+ }
42
+
43
+ return pass;
44
+ };
@@ -75,7 +75,7 @@ export const colorMaskToTyped = (colorMask: ColorMask) => {
75
75
  return result;
76
76
  };
77
77
 
78
- const numberArrToTyped = (vec: number[]) => {
78
+ export const numberArrToTyped = (vec: number[]) => {
79
79
  let convFn: ((...args: number[]) => any) | null = null;
80
80
  switch (vec.length) {
81
81
  case 2: