@viji-dev/core 0.3.0 → 0.3.1

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.
@@ -2132,6 +2132,8 @@ class ShaderWorkerAdapter {
2132
2132
  }
2133
2133
  static MAX_STREAMS = 8;
2134
2134
  // Maximum number of compositor input streams
2135
+ static MAX_EXTERNAL_DEVICES = 8;
2136
+ // Maximum number of external devices
2135
2137
  gl;
2136
2138
  program = null;
2137
2139
  uniformLocations = /* @__PURE__ */ new Map();
@@ -2431,6 +2433,58 @@ uniform vec2 u_rightAnklePosition; // Right ankle landmark position in pixels
2431
2433
  uniform sampler2D u_segmentationMask; // Body segmentation mask texture (0=background, 1=person)
2432
2434
  uniform vec2 u_segmentationRes; // Segmentation mask resolution in pixels
2433
2435
 
2436
+ // Device Sensors - Internal Device (viji.device)
2437
+ uniform vec3 u_deviceAcceleration; // Acceleration without gravity (m/s²) - x, y, z
2438
+ uniform vec3 u_deviceAccelerationGravity; // Acceleration with gravity (m/s²) - x, y, z
2439
+ uniform vec3 u_deviceRotationRate; // Rotation rate (deg/s) - alpha, beta, gamma
2440
+ uniform vec3 u_deviceOrientation; // Device orientation (degrees) - alpha, beta, gamma
2441
+ uniform bool u_deviceOrientationAbsolute; // True if orientation uses magnetometer (compass)
2442
+ uniform vec2 u_deviceLocation; // Geolocation (degrees) - latitude, longitude
2443
+ uniform vec4 u_deviceLocationExt; // Extended geolocation - altitude(m), accuracy(m), heading(deg), speed(m/s)
2444
+
2445
+ // Device Sensors - External Devices (viji.devices[0-7])
2446
+ uniform int u_externalDeviceCount; // Number of connected external devices (0-8)
2447
+ uniform vec3 u_device0Acceleration; // Device 0 acceleration without gravity (m/s²)
2448
+ uniform vec3 u_device0AccelerationGravity; // Device 0 acceleration with gravity (m/s²)
2449
+ uniform vec3 u_device0RotationRate; // Device 0 rotation rate (deg/s)
2450
+ uniform vec3 u_device0Orientation; // Device 0 orientation (degrees) - alpha, beta, gamma
2451
+ uniform vec2 u_device0Location; // Device 0 location - latitude, longitude
2452
+ uniform vec3 u_device1Acceleration; // Device 1 acceleration without gravity (m/s²)
2453
+ uniform vec3 u_device1AccelerationGravity; // Device 1 acceleration with gravity (m/s²)
2454
+ uniform vec3 u_device1RotationRate; // Device 1 rotation rate (deg/s)
2455
+ uniform vec3 u_device1Orientation; // Device 1 orientation (degrees) - alpha, beta, gamma
2456
+ uniform vec2 u_device1Location; // Device 1 location - latitude, longitude
2457
+ uniform vec3 u_device2Acceleration; // Device 2 acceleration without gravity (m/s²)
2458
+ uniform vec3 u_device2AccelerationGravity; // Device 2 acceleration with gravity (m/s²)
2459
+ uniform vec3 u_device2RotationRate; // Device 2 rotation rate (deg/s)
2460
+ uniform vec3 u_device2Orientation; // Device 2 orientation (degrees) - alpha, beta, gamma
2461
+ uniform vec2 u_device2Location; // Device 2 location - latitude, longitude
2462
+ uniform vec3 u_device3Acceleration; // Device 3 acceleration without gravity (m/s²)
2463
+ uniform vec3 u_device3AccelerationGravity; // Device 3 acceleration with gravity (m/s²)
2464
+ uniform vec3 u_device3RotationRate; // Device 3 rotation rate (deg/s)
2465
+ uniform vec3 u_device3Orientation; // Device 3 orientation (degrees) - alpha, beta, gamma
2466
+ uniform vec2 u_device3Location; // Device 3 location - latitude, longitude
2467
+ uniform vec3 u_device4Acceleration; // Device 4 acceleration without gravity (m/s²)
2468
+ uniform vec3 u_device4AccelerationGravity; // Device 4 acceleration with gravity (m/s²)
2469
+ uniform vec3 u_device4RotationRate; // Device 4 rotation rate (deg/s)
2470
+ uniform vec3 u_device4Orientation; // Device 4 orientation (degrees) - alpha, beta, gamma
2471
+ uniform vec2 u_device4Location; // Device 4 location - latitude, longitude
2472
+ uniform vec3 u_device5Acceleration; // Device 5 acceleration without gravity (m/s²)
2473
+ uniform vec3 u_device5AccelerationGravity; // Device 5 acceleration with gravity (m/s²)
2474
+ uniform vec3 u_device5RotationRate; // Device 5 rotation rate (deg/s)
2475
+ uniform vec3 u_device5Orientation; // Device 5 orientation (degrees) - alpha, beta, gamma
2476
+ uniform vec2 u_device5Location; // Device 5 location - latitude, longitude
2477
+ uniform vec3 u_device6Acceleration; // Device 6 acceleration without gravity (m/s²)
2478
+ uniform vec3 u_device6AccelerationGravity; // Device 6 acceleration with gravity (m/s²)
2479
+ uniform vec3 u_device6RotationRate; // Device 6 rotation rate (deg/s)
2480
+ uniform vec3 u_device6Orientation; // Device 6 orientation (degrees) - alpha, beta, gamma
2481
+ uniform vec2 u_device6Location; // Device 6 location - latitude, longitude
2482
+ uniform vec3 u_device7Acceleration; // Device 7 acceleration without gravity (m/s²)
2483
+ uniform vec3 u_device7AccelerationGravity; // Device 7 acceleration with gravity (m/s²)
2484
+ uniform vec3 u_device7RotationRate; // Device 7 rotation rate (deg/s)
2485
+ uniform vec3 u_device7Orientation; // Device 7 orientation (degrees) - alpha, beta, gamma
2486
+ uniform vec2 u_device7Location; // Device 7 location - latitude, longitude
2487
+
2434
2488
  // Backbuffer (previous frame feedback)
2435
2489
  ${this.backbufferEnabled ? "uniform sampler2D backbuffer; // Previous frame texture for feedback effects" : "// backbuffer not enabled"}
2436
2490
  `;
@@ -2741,6 +2795,134 @@ ${error}`);
2741
2795
  } else {
2742
2796
  this.setUniform("u_segmentationRes", "vec2", [0, 0]);
2743
2797
  }
2798
+ const internalDevice = viji.device;
2799
+ if (internalDevice) {
2800
+ const motion = internalDevice.motion;
2801
+ if (motion?.acceleration) {
2802
+ this.setUniform("u_deviceAcceleration", "vec3", [
2803
+ motion.acceleration.x ?? 0,
2804
+ motion.acceleration.y ?? 0,
2805
+ motion.acceleration.z ?? 0
2806
+ ]);
2807
+ } else {
2808
+ this.setUniform("u_deviceAcceleration", "vec3", [0, 0, 0]);
2809
+ }
2810
+ if (motion?.accelerationIncludingGravity) {
2811
+ this.setUniform("u_deviceAccelerationGravity", "vec3", [
2812
+ motion.accelerationIncludingGravity.x ?? 0,
2813
+ motion.accelerationIncludingGravity.y ?? 0,
2814
+ motion.accelerationIncludingGravity.z ?? 0
2815
+ ]);
2816
+ } else {
2817
+ this.setUniform("u_deviceAccelerationGravity", "vec3", [0, 0, 0]);
2818
+ }
2819
+ if (motion?.rotationRate) {
2820
+ this.setUniform("u_deviceRotationRate", "vec3", [
2821
+ motion.rotationRate.alpha ?? 0,
2822
+ motion.rotationRate.beta ?? 0,
2823
+ motion.rotationRate.gamma ?? 0
2824
+ ]);
2825
+ } else {
2826
+ this.setUniform("u_deviceRotationRate", "vec3", [0, 0, 0]);
2827
+ }
2828
+ const orientation = internalDevice.orientation;
2829
+ if (orientation) {
2830
+ this.setUniform("u_deviceOrientation", "vec3", [
2831
+ orientation.alpha ?? 0,
2832
+ orientation.beta ?? 0,
2833
+ orientation.gamma ?? 0
2834
+ ]);
2835
+ this.setUniform("u_deviceOrientationAbsolute", "bool", orientation.absolute);
2836
+ } else {
2837
+ this.setUniform("u_deviceOrientation", "vec3", [0, 0, 0]);
2838
+ this.setUniform("u_deviceOrientationAbsolute", "bool", false);
2839
+ }
2840
+ const geolocation = internalDevice.geolocation;
2841
+ if (geolocation) {
2842
+ this.setUniform("u_deviceLocation", "vec2", [
2843
+ geolocation.latitude ?? 0,
2844
+ geolocation.longitude ?? 0
2845
+ ]);
2846
+ this.setUniform("u_deviceLocationExt", "vec4", [
2847
+ geolocation.altitude ?? 0,
2848
+ geolocation.accuracy ?? 0,
2849
+ geolocation.heading ?? 0,
2850
+ geolocation.speed ?? 0
2851
+ ]);
2852
+ } else {
2853
+ this.setUniform("u_deviceLocation", "vec2", [0, 0]);
2854
+ this.setUniform("u_deviceLocationExt", "vec4", [0, 0, 0, 0]);
2855
+ }
2856
+ } else {
2857
+ this.setUniform("u_deviceAcceleration", "vec3", [0, 0, 0]);
2858
+ this.setUniform("u_deviceAccelerationGravity", "vec3", [0, 0, 0]);
2859
+ this.setUniform("u_deviceRotationRate", "vec3", [0, 0, 0]);
2860
+ this.setUniform("u_deviceOrientation", "vec3", [0, 0, 0]);
2861
+ this.setUniform("u_deviceOrientationAbsolute", "bool", false);
2862
+ this.setUniform("u_deviceLocation", "vec2", [0, 0]);
2863
+ this.setUniform("u_deviceLocationExt", "vec4", [0, 0, 0, 0]);
2864
+ }
2865
+ const externalDevices = viji.devices || [];
2866
+ const externalDeviceCount = Math.min(externalDevices.length, ShaderWorkerAdapter.MAX_EXTERNAL_DEVICES);
2867
+ this.setUniform("u_externalDeviceCount", "int", externalDeviceCount);
2868
+ for (let i = 0; i < ShaderWorkerAdapter.MAX_EXTERNAL_DEVICES; i++) {
2869
+ if (i < externalDeviceCount) {
2870
+ const device = externalDevices[i];
2871
+ const motion = device.motion;
2872
+ if (motion?.acceleration) {
2873
+ this.setUniform(`u_device${i}Acceleration`, "vec3", [
2874
+ motion.acceleration.x ?? 0,
2875
+ motion.acceleration.y ?? 0,
2876
+ motion.acceleration.z ?? 0
2877
+ ]);
2878
+ } else {
2879
+ this.setUniform(`u_device${i}Acceleration`, "vec3", [0, 0, 0]);
2880
+ }
2881
+ if (motion?.accelerationIncludingGravity) {
2882
+ this.setUniform(`u_device${i}AccelerationGravity`, "vec3", [
2883
+ motion.accelerationIncludingGravity.x ?? 0,
2884
+ motion.accelerationIncludingGravity.y ?? 0,
2885
+ motion.accelerationIncludingGravity.z ?? 0
2886
+ ]);
2887
+ } else {
2888
+ this.setUniform(`u_device${i}AccelerationGravity`, "vec3", [0, 0, 0]);
2889
+ }
2890
+ if (motion?.rotationRate) {
2891
+ this.setUniform(`u_device${i}RotationRate`, "vec3", [
2892
+ motion.rotationRate.alpha ?? 0,
2893
+ motion.rotationRate.beta ?? 0,
2894
+ motion.rotationRate.gamma ?? 0
2895
+ ]);
2896
+ } else {
2897
+ this.setUniform(`u_device${i}RotationRate`, "vec3", [0, 0, 0]);
2898
+ }
2899
+ const orientation = device.orientation;
2900
+ if (orientation) {
2901
+ this.setUniform(`u_device${i}Orientation`, "vec3", [
2902
+ orientation.alpha ?? 0,
2903
+ orientation.beta ?? 0,
2904
+ orientation.gamma ?? 0
2905
+ ]);
2906
+ } else {
2907
+ this.setUniform(`u_device${i}Orientation`, "vec3", [0, 0, 0]);
2908
+ }
2909
+ const geolocation = device.geolocation;
2910
+ if (geolocation) {
2911
+ this.setUniform(`u_device${i}Location`, "vec2", [
2912
+ geolocation.latitude ?? 0,
2913
+ geolocation.longitude ?? 0
2914
+ ]);
2915
+ } else {
2916
+ this.setUniform(`u_device${i}Location`, "vec2", [0, 0]);
2917
+ }
2918
+ } else {
2919
+ this.setUniform(`u_device${i}Acceleration`, "vec3", [0, 0, 0]);
2920
+ this.setUniform(`u_device${i}AccelerationGravity`, "vec3", [0, 0, 0]);
2921
+ this.setUniform(`u_device${i}RotationRate`, "vec3", [0, 0, 0]);
2922
+ this.setUniform(`u_device${i}Orientation`, "vec3", [0, 0, 0]);
2923
+ this.setUniform(`u_device${i}Location`, "vec2", [0, 0]);
2924
+ }
2925
+ }
2744
2926
  }
2745
2927
  /**
2746
2928
  * Update parameter uniforms from parameter objects
@@ -3822,18 +4004,12 @@ class VijiWorkerRuntime {
3822
4004
  if (!tctx) throw new Error("Failed to get 2D context");
3823
4005
  tctx.drawImage(sourceCanvas, sx, sy, sWidth, sHeight, 0, 0, targetWidth, targetHeight);
3824
4006
  const blob = await temp.convertToBlob({ type: mimeType });
3825
- const arrayBuffer = await blob.arrayBuffer();
3826
4007
  self.postMessage({
3827
4008
  type: "capture-frame-result",
3828
4009
  id: message.id,
3829
4010
  timestamp: Date.now(),
3830
- data: {
3831
- mimeType,
3832
- buffer: arrayBuffer,
3833
- width: targetWidth,
3834
- height: targetHeight
3835
- }
3836
- }, [arrayBuffer]);
4011
+ data: { blob }
4012
+ });
3837
4013
  } catch (error) {
3838
4014
  this.postMessage("error", {
3839
4015
  id: message.id,
@@ -4018,4 +4194,4 @@ async function setSceneCode(sceneCode) {
4018
4194
  }
4019
4195
  }
4020
4196
  self.setSceneCode = setSceneCode;
4021
- //# sourceMappingURL=viji.worker-b3XR7zKX.js.map
4197
+ //# sourceMappingURL=viji.worker-Be0jZvYj.js.map