Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 70 additions & 70 deletions apps/example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3208,88 +3208,88 @@ SPEC CHECKSUMS:
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
hermes-engine: 11b010917f5f15150b2c015abddef1573d2bb05d
RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
RCTDeprecation: a41bbdd9af30bf2e5715796b313e44ec43eefff1
RCTRequired: 7be34aabb0b77c3cefe644528df0fa0afad4e4d0
RCTSwiftUI: a6c7271c39098bf00dbdad8f8ed997a59bbfbe44
RCTSwiftUIWrapper: 5ec163e8fde163d3fba714a992b50a266e1ece37
RCTSwiftUIWrapper: ff9098ccf7727e58218f2f8ea110349863f43438
RCTTypeSafety: 27927d0ca04e419ed9467578b3e6297e37210b5c
React: 4bc1f928568ad4bcfd147260f907b4ea5873a03b
React-callinvoker: 87f8728235a0dc62e9dc19b3851c829d9347d015
React-Core: 19e0183e28d7a6613ecacebd7525fe6650efa3b6
React-CoreModules: 73cc86f2a0ff84b93d6325073ad2e4874d21ad40
React-cxxreact: 4bf734645c77c9b86e2f3e933e0411cf2f14d1ba
React-Core: 76bed73b02821e5630e7f2cb2e82432ee964695d
React-CoreModules: 752dbfdaeb096658aa0adc4a03ba6214815a08df
React-cxxreact: b6798528aa601c6db66e6adc7e2da2b059c8be74
React-debug: 8978deb306f6f38c28b5091e52b0ac9f942b157e
React-defaultsnativemodule: 724eb9ec388d494f1e2057d83355ee8fe6f1d780
React-domnativemodule: 9068f41092f725acd09950233d2847364c731947
React-Fabric: 945cc8abf08d9d0966acef605bffce7b501c49d9
React-FabricComponents: 4c4ad6f0d16c964a68f945e029505e2eeec6654b
React-FabricImage: a8b628fd98db21b9f8588e06f14a9194dda11b40
React-featureflags: 0937601c1af1cc125851ec5bbf4654285d47a3e7
React-featureflagsnativemodule: ac1a3e0353e1a6e15411b17ed6c7122adb0468a4
React-graphics: cca521e06463608be46207a4aa160f8a7f725f8b
React-hermes: ec50b9fcea2c3bfdd42f8cec845eac3f35888572
React-idlecallbacksnativemodule: effcae5b7b4473211adb154aaa321d5d9e2fbcc9
React-ImageManager: b38459e538f1840fa5c3e7612a4bcb0029a3c366
React-intersectionobservernativemodule: 8d33366661971200cf2e151727f6fe007b62ae7b
React-jserrorhandler: f94c688a0dbe2e045b91b992722b92e97d56f77f
React-jsi: 3216c876cd4c571a57909e22d77c8fd9530aa067
React-jsiexecutor: 475563c0042841a85930a455d3199f6b1483a5fe
React-jsinspector: bc484fb32bf1b9fed80afe8793e614eba4f7b39e
React-jsinspectorcdp: 5a574d1d35016968a67e78e6b8a7917473ffbb77
React-jsinspectornetwork: dce3a5a1351b527ee8c28ad4a8bdd211507e1a45
React-jsinspectortracing: 65f6b166bd67e5adc31eba027e1570bacf7a3cc7
React-jsitooling: d5463f5489a31640b0fa0ec4e31566ca8aa86c13
React-jsitracing: 3c7fc18821aba64855acb8658aa857ca6a7fddf6
React-logger: 6ac901f5c7f7321d2be1a40b203bccc2e23411e3
React-Mapbuffer: 2e0e7cc5b7064eaed9c8b8afc3a87621cb7ef5cd
React-microtasksnativemodule: dd4d33b251b57e5027c572c6d0b45cbfbcfaa386
react-native-safe-area-context: 54d812805f3c4e08a4580ad086cbde1d8780c2e4
react-native-skia: a2f66139c57b503a5a5b3647fc111b53bfc02590
React-NativeModulesApple: 7f2f2fed3f6c858889eb61d09941be965d52df58
React-networking: 43e5e6773ac2ca2a93261a1388fed269c9fce092
React-defaultsnativemodule: 682b77ef4acfb298017be15f4f93c1d998deb174
React-domnativemodule: 4c4b44f7eb68dbc3a2218db088bef318a7302017
React-Fabric: b6f82a4d8498ce4475586f71ca8397a771fe292d
React-FabricComponents: c8695f4b11918a127c4560d66f7d3fdb01a17986
React-FabricImage: d64f48830f63830e8ffaaf69fa487116856fbbf1
React-featureflags: 2a46b229903e906d33dbaf9207ce57c59306c369
React-featureflagsnativemodule: cba6c0814051a0934f8bcee4a436ee2a6bcc9754
React-graphics: 3d0435051e1ab8904d065f8ffbe981a9fc202841
React-hermes: 32fc9c231c1aa5c2fcfe851b0d19ee9269f88f4c
React-idlecallbacksnativemodule: f8ee42581795c4844d97147596bcc2d824c0f188
React-ImageManager: e8f7377ef0585fd2df05559a17e01a03e187d5cf
React-intersectionobservernativemodule: b1bea12ca29accdd2eda60c87605a6030b894eb9
React-jserrorhandler: 1a86df895b4eaf4e771abe8cf34cbb26d821f771
React-jsi: adf8527fec197ad9d0480cc5b8945eb56de627f0
React-jsiexecutor: 315fa2f879b43e3a9ca08f5f4b733472f7e4e8a4
React-jsinspector: b4fd1933666bcb2549b566b40656c1e45e9d7632
React-jsinspectorcdp: 80141710f2668e5b8f00417298d9b76b4abf90fa
React-jsinspectornetwork: 1d3ea717dbbec316cd8c21a0af53928a7bf74901
React-jsinspectortracing: 4ce745374d4b2bfbd164cce9f8de8383d3d818a0
React-jsitooling: fc4ac4c3b1f3f9f7fedf0c777c6ff3f244f568bd
React-jsitracing: bff08a6faeef4a9bd286487da191f5e5329e21a9
React-logger: b8483fa08e0d62e430c76d864309d90576ca2f68
React-Mapbuffer: 7b72a669e94662359dad4f42b5af005eb24b4e83
React-microtasksnativemodule: cdc02da075f2857803ed63f24f5f72fc40e094c0
react-native-safe-area-context: c00143b4823773bba23f2f19f85663ae89ceb460
react-native-skia: c4007b72a1ce079c5e0862d065f3bc7b48a9105c
React-NativeModulesApple: a2c3d2cbec893956a5b3e4060322db2984fff75b
React-networking: 3f98bd96893a294376e7e03730947a08d474c380
React-oscompat: 80166b66da22e7af7fad94474e9997bd52d4c8c6
React-perflogger: 63c90e0d8c24df87ffa14dad01aeafc352847dd0
React-performancecdpmetrics: 5a9b81c08f75045635127d626440d9ada01e774b
React-performancetimeline: 31cebfff69ec9174b3fb54b0606fcb12ef91cbad
React-perflogger: d6797918d2b1031e91a9d8f5e7fdd2c8728fb390
React-performancecdpmetrics: 5570be61e2f97c4741c5d432c91570e8e5a39892
React-performancetimeline: 5763499ae1991fc18dcf416e340ce7bc829bb298
React-RCTActionSheet: 3bd5f5db9f983cf38d51bb9a7a198e2ebea94821
React-RCTAnimation: 346865a809fa5132f6c594c8b376c6cf46b44e88
React-RCTAppDelegate: b2d1e0d3663c987f49f45094883b9e36fcbf0181
React-RCTBlob: 74759ebb7ff9077d19f60c301782c1f8c3eb2813
React-RCTFabric: 7b4b14dad21ca99333ebcbc0bf5c205647a315a8
React-RCTFBReactNativeSpec: 39151968adb68b8c59f29a8bd4223d4d7780a793
React-RCTImage: 60763f56e8a5e45d861d7c4777e428bb820ec52a
React-RCTLinking: 52aee78b0b3163167c7fcf58f80a42943c03a056
React-RCTNetwork: f5e1e8ae5eff6982efff6289b06ec0a76d0a6ac2
React-RCTRuntime: 0e99199322afd372e74b95ae5c58f4e074cc2855
React-RCTSettings: 298bb40d3412bf32e0b4f0797e48416b0b7278a1
React-RCTText: dfb74800e27d792d1188fa975a3b9807c3362e3e
React-RCTVibration: ffe5fd4f50a835e353a3b6869eb005dab11eea44
React-RCTAnimation: 46a9978f27dc434dbeed16afa7b82619b690a9af
React-RCTAppDelegate: 62ecd60a2b2a8cae26ce6a066bfa59cfde97af01
React-RCTBlob: 8285c859513023ee3cc8c806d9b59d4da078c4ba
React-RCTFabric: 05ed09347e938de985052f791a6a0698816d5761
React-RCTFBReactNativeSpec: 83ba579fca9a51e774ac32578ef5dd3262edd7e2
React-RCTImage: a5364d0f098692cfbf5bef1e8a63e7712ecb14b7
React-RCTLinking: 34b63b0aa0e92d30f5d7aa2c255a8f95fa75ee8f
React-RCTNetwork: 1ef88b7a5310b8f915d3556b5b247def113191ed
React-RCTRuntime: ed29cf68a46782fec891e5afe1d8d758ca6ccd9b
React-RCTSettings: 2c45623d6c0f30851a123f621eb9d32298bcbb0c
React-RCTText: 0ee70f5dc18004b4d81b2c214267c6cbec058587
React-RCTVibration: 88557e21e7cc3fe76b5b174cba28ff45c6def997
React-rendererconsistency: d280314a3e7f0097152f89e815b4de821c2be8b9
React-renderercss: 8a1a346f3665fd5ea7a7be7b3b9f95d4743e1180
React-rendererdebug: af74afdfb3d6c5382ebab35562efd8eb9e690473
React-RuntimeApple: 06e33d291e72fd0c73ac47046c3536d77d5aeedd
React-RuntimeCore: 99273d2af072062eb07f0b2d2d4a0f2de697ea14
React-runtimeexecutor: 2063c03c18810ee57939d138142e6493333360ef
React-RuntimeHermes: 2253a7f4c8d56b449230b330b0b15383ed4b3df4
React-runtimescheduler: ff37ac6720a943da91645c06274282ac46b71f23
React-timing: 831d7e081ba4c332ca5cccf389b88e363f13f2b4
React-utils: 25db6c17598c4fed22b5956d7551bb8bddf1f95b
React-webperformancenativemodule: 57e41e6193cfb815bde0b5534bef68673f1270eb
ReactAppDependencyProvider: bfb12ead469222b022a2024f32aba47ce50de512
ReactCodegen: 9ca1bd49eee1eccf6e427e406d2163f49e9c48c0
ReactCommon: 05ad684db7d88e194272ae26baddf6300e30b8b7
ReactNativeHost: e7e0a518b0120f0070b3e1f13c7006d3e0e8ee13
ReactTestApp-DevSupport: 6994b53b5b81139a8ce63e0776c726c95de079a1
React-renderercss: f8cbf83d95c2c2bbf893d37fe50c73f046584411
React-rendererdebug: 37216ddfcd38e49d1e92bf9052ea4bc9d7b932e5
React-RuntimeApple: 1c0e7cb8e1c2c5775585afcaaa666ec151629a8d
React-RuntimeCore: 925fe2ca24cf8e6ed87586dbb92827306b93b83f
React-runtimeexecutor: 962dae024f6df760d029512a7d99e3f73d570935
React-RuntimeHermes: 19a7c59ec1bc9908516f0bbc29b49425f6ec64ba
React-runtimescheduler: 62f21127cd97f4d8f164eee5150d3ce53dd36f66
React-timing: 8757bf6fb96227c264f2d1609f4ba5c68217b8ce
React-utils: 8ab26781c2f5c2f7fafb2022c8ab39d39f231b80
React-webperformancenativemodule: 7953b7fe519f76fa595111fe18ff3d5de131bfe9
ReactAppDependencyProvider: 0eb286cc274abb059ee601b862ebddac2e681d01
ReactCodegen: b8e56b780fffe6edd6405be0af4a1e3049a937f7
ReactCommon: ac934cb340aee91282ecd6f273a26d24d4c55cae
ReactNativeHost: eef98ec49b55d88ad4cabf5a4378a12b42b551ee
ReactTestApp-DevSupport: ea18f446cff64b6c9a3e28788600c82ecf51bde6
ReactTestApp-Resources: 1bd9ff10e4c24f2ad87101a32023721ae923bccf
RNGestureHandler: 77eecab5fd636666ca73a55bb61e2f1a685b7e84
RNReanimated: 31da8d5f1605f5367e2392748ba9f4ba6eaf1178
RNScreens: b2a5c76af24a02a2fd71bfce42780fdd9c79cc6d
RNSVG: ea9cbf6dcdbebdfff5822b0ad9311bbc4510a0b7
RNWorklets: 4e3230b74c2e466e608458b7f665a41825bca6c1
RNGestureHandler: cd4be101cfa17ea6bbd438710caa02e286a84381
RNReanimated: 132940c4c15ca2757f4f7d1fd7c9c3c01dbc4689
RNScreens: 714e10b6b554f7dc7ad9f78dcf36dc8e3fc73415
RNSVG: 11354d28dd6cb71a59570b68c91ba6772a2d781d
RNWorklets: f2ed333c600377955ac5ab798a14210805de846d
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
Yoga: 5bd0956bf9cb16f75101e78b5e852c7577bc5a45
Yoga: 5456bb010373068fc92221140921b09d126b116e

PODFILE CHECKSUM: 87506345285a0371afb28b9c3e6daaa999c214f3

COCOAPODS: 1.15.2
COCOAPODS: 1.16.2
2 changes: 1 addition & 1 deletion apps/example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ const App = () => {
screenOptions={{
headerLeft: HeaderLeft,
}}
initialRouteName={CI ? "Tests" : "Home"}
initialRouteName={CI ? "Tests" : "WebGPU"}
>
<Stack.Screen
name="Home"
Expand Down
69 changes: 69 additions & 0 deletions apps/example/src/Examples/WebGPU/List.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import * as React from "react";
import { ScrollView, StyleSheet, Text, View, Pressable } from "react-native";
import { useNavigation } from "@react-navigation/native";
import type { NativeStackNavigationProp } from "@react-navigation/native-stack";

import type { Routes } from "./Routes";

export const examples = [
{
screen: "Triangle",
title: "Triangle",
description: "Basic WebGPU Canvas rendering",
},
{
screen: "Wireframes",
title: "Wireframes",
description: "3D wireframe models with offscreen rendering",
},
{
screen: "TexturedCube",
title: "Textured Cube",
description: "Rotating 3D cube with texture mapping",
},
] as const;

const styles = StyleSheet.create({
container: {},
content: {
paddingBottom: 32,
},
thumbnail: {
backgroundColor: "white",
padding: 32,
borderBottomWidth: StyleSheet.hairlineWidth,
},
title: {
color: "black",
fontSize: 16,
fontWeight: "bold",
},
description: {
color: "#666",
fontSize: 14,
marginTop: 4,
},
});

export const List = () => {
const { navigate } =
useNavigation<NativeStackNavigationProp<Routes, "List">>();
return (
<ScrollView style={styles.container} contentContainerStyle={styles.content}>
{examples.map((example) => (
<Pressable
key={example.screen}
onPress={() => {
navigate(example.screen as keyof Routes);
}}
testID={example.screen}
>
<View style={styles.thumbnail}>
<Text style={styles.title}>{example.title}</Text>
<Text style={styles.description}>{example.description}</Text>
</View>
</Pressable>
))}
</ScrollView>
);
};
6 changes: 6 additions & 0 deletions apps/example/src/Examples/WebGPU/Routes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export type Routes = {
List: undefined;
Wireframes: undefined;
Triangle: undefined;
TexturedCube: undefined;
};
36 changes: 36 additions & 0 deletions apps/example/src/Examples/WebGPU/Shaders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,42 @@ struct VSOut {
return vec4f(uni.color.rgb * light, uni.color.a);
}`;

export const basicVertWGSL = /* wgsl */ `struct Uniforms {
modelViewProjectionMatrix : mat4x4f,
}
@binding(0) @group(0) var<uniform> uniforms : Uniforms;

struct VertexOutput {
@builtin(position) Position : vec4f,
@location(0) fragUV : vec2f,
@location(1) fragPosition: vec4f,
}

@vertex
fn main(
@location(0) position : vec4f,
@location(1) uv : vec2f
) -> VertexOutput {
var output : VertexOutput;
output.Position = uniforms.modelViewProjectionMatrix * position;
output.fragUV = uv;
output.fragPosition = 0.5 * (position + vec4(1.0, 1.0, 1.0, 1.0));
return output;
}
`;

export const sampleTextureMixColorWGSL = /* wgsl */ `@group(0) @binding(1) var mySampler: sampler;
@group(0) @binding(2) var myTexture: texture_2d<f32>;

@fragment
fn main(
@location(0) fragUV: vec2f,
@location(1) fragPosition: vec4f
) -> @location(0) vec4f {
return textureSample(myTexture, mySampler, fragUV);// * fragPosition;
}
`;

export const wireframeWGSL = /*wgsl*/ `struct Uniforms {
worldViewProjectionMatrix: mat4x4f,
worldMatrix: mat4x4f,
Expand Down
Loading