Skip to content

Commit 520ff5e

Browse files
Release (#1670)
* feat: support ar in webxr (#1665) * feat: support ar in webxr * feat: each tick on canvas will pass webxr frame * chore: commit changeset * chore(release): bump version (#1669) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent ee938ca commit 520ff5e

File tree

107 files changed

+1055
-219
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+1055
-219
lines changed

__tests__/demos/3d/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export { sphere } from './sphere';
33
export { torus } from './torus';
44
export { cylinder } from './cylinder';
55
export { force } from './force';
6+
export { ar } from './webar';

__tests__/demos/3d/webar.ts

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { CanvasEvent } from '../../../packages/g';
2+
import {
3+
MeshBasicMaterial,
4+
CubeGeometry,
5+
Mesh,
6+
Plugin as Plugin3D,
7+
} from '../../../packages/g-plugin-3d';
8+
import { Plugin as PluginControl } from '../../../packages/g-plugin-control';
9+
import { ARButton, DeviceRenderer } from '../../../packages/g-webgl';
10+
11+
export async function ar(context) {
12+
const { canvas, renderer, container } = context;
13+
14+
// wait for canvas' initialization complete
15+
await canvas.ready;
16+
17+
// use GPU device
18+
const plugin = renderer.getPlugin('device-renderer') as DeviceRenderer.Plugin;
19+
const device = plugin.getDevice();
20+
21+
// 1. load texture with URL
22+
const map = plugin.loadTexture(
23+
'https://gw.alipayobjects.com/mdn/rms_6ae20b/afts/img/A*_aqoS73Se3sAAAAAAAAAAAAAARQnAQ',
24+
);
25+
26+
const cubeGeometry = new CubeGeometry(device, {
27+
width: 200,
28+
height: 200,
29+
depth: 200,
30+
});
31+
const basicMaterial = new MeshBasicMaterial(device, {
32+
// wireframe: true,
33+
map,
34+
});
35+
36+
const cube = new Mesh({
37+
style: {
38+
fill: '#1890FF',
39+
opacity: 1,
40+
geometry: cubeGeometry,
41+
material: basicMaterial,
42+
},
43+
});
44+
45+
cube.setPosition(300, 250, 200);
46+
47+
canvas.appendChild(cube);
48+
49+
canvas.addEventListener(CanvasEvent.AFTER_RENDER, () => {
50+
cube.rotate(1, 0, 0);
51+
});
52+
53+
canvas.getConfig().disableHitTesting = true;
54+
55+
const $button = ARButton.createButton(canvas, renderer, {});
56+
container.appendChild($button);
57+
}
58+
59+
ar.initRenderer = (renderer, type) => {
60+
if (type === 'webgl' || type === 'webgpu') {
61+
renderer.registerPlugin(new Plugin3D());
62+
renderer.registerPlugin(new PluginControl());
63+
}
64+
};

__tests__/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ function createSpecRender(object) {
189189
],
190190
// Used for WebGPU renderer
191191
shaderCompilerPath: '/glsl_wgsl_compiler_bg.wasm',
192+
// enableAutoRendering: false,
192193
// enableDirtyRectangleRendering: false,
193194
// enableDirtyRectangleRenderingDebug: true,
194195
});

packages/g-camera-api/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-camera-api
22

3+
## 2.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 2.0.1
411

512
### Patch Changes

packages/g-camera-api/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-camera-api",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "A simple implementation of Camera API.",
55
"keywords": [
66
"antv",

packages/g-canvas/CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# @antv/g-canvas
22

3+
## 2.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
- @antv/g-plugin-canvas-path-generator@2.0.2
10+
- @antv/g-plugin-canvas-picker@2.0.2
11+
- @antv/g-plugin-canvas-renderer@2.0.2
12+
- @antv/g-plugin-dom-interaction@2.0.2
13+
- @antv/g-plugin-html-renderer@2.0.2
14+
- @antv/g-plugin-image-loader@2.0.2
15+
316
## 2.0.1
417

518
### Patch Changes

packages/g-canvas/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-canvas",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "A renderer implemented by Canvas 2D API",
55
"keywords": [
66
"antv",

packages/g-canvaskit/CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# @antv/g-canvaskit
22

3+
## 1.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
- @antv/g-plugin-canvas-path-generator@2.0.2
10+
- @antv/g-plugin-canvas-picker@2.0.2
11+
- @antv/g-plugin-canvaskit-renderer@2.0.2
12+
- @antv/g-plugin-dom-interaction@2.0.2
13+
- @antv/g-plugin-html-renderer@2.0.2
14+
- @antv/g-plugin-image-loader@2.0.2
15+
316
## 1.0.1
417

518
### Patch Changes

packages/g-canvaskit/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-canvaskit",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "A renderer implemented by CanvasKit",
55
"keywords": [
66
"antv",

packages/g-components/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-components
22

3+
## 2.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 2.0.1
411

512
### Patch Changes

packages/g-components/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-components",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "Components for g",
55
"keywords": [
66
"antv",

packages/g-dom-mutation-observer-api/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-dom-mutation-observer-api
22

3+
## 2.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 2.0.1
411

512
### Patch Changes

packages/g-dom-mutation-observer-api/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-dom-mutation-observer-api",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "A simple implementation of DOM MutationObserver API.",
55
"keywords": [
66
"antv",

packages/g-gesture/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-gesture
22

3+
## 3.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 3.0.1
411

512
### Patch Changes

packages/g-gesture/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-gesture",
3-
"version": "3.0.1",
3+
"version": "3.0.2",
44
"description": "G Gesture",
55
"keywords": [
66
"antv",

packages/g-image-exporter/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-image-exporter
22

3+
## 1.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 1.0.1
411

512
### Patch Changes

packages/g-image-exporter/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-image-exporter",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "A image exporter for G using DOM API",
55
"keywords": [
66
"antv",

packages/g-lite/CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @antv/g-lite
22

3+
## 2.0.2
4+
5+
### Patch Changes
6+
7+
- 2948b0f8: Pass webxr frame on each tick when rendering.
8+
39
## 2.0.1
410

511
### Patch Changes

packages/g-lite/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-lite",
3-
"version": "2.0.1",
3+
"version": "2.0.2",
44
"description": "A core module for rendering engine implements DOM API.",
55
"keywords": [
66
"antv",
@@ -53,7 +53,8 @@
5353
"@types/d3-color": "^3.0.2",
5454
"@types/gl-matrix": "^2.4.5",
5555
"@types/offscreencanvas": "^2019.6.4",
56-
"@types/rbush": "^3.0.0"
56+
"@types/rbush": "^3.0.0",
57+
"@types/webxr": "0.5.5"
5758
},
5859
"publishConfig": {
5960
"access": "public"

packages/g-lite/src/Canvas.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -481,11 +481,11 @@ export class Canvas extends EventTarget implements ICanvas {
481481
this.document.documentElement.destroyChildren();
482482
}
483483

484-
render() {
484+
render(frame?: XRFrame) {
485485
this.dispatchEvent(beforeRenderEvent);
486486

487487
const renderingService = this.getRenderingService();
488-
renderingService.render(this.getConfig(), () => {
488+
renderingService.render(this.getConfig(), frame, () => {
489489
// trigger actual rerender event
490490
// @see https://github.com/antvis/G/issues/1268
491491
this.dispatchEvent(rerenderEvent);
@@ -495,11 +495,11 @@ export class Canvas extends EventTarget implements ICanvas {
495495
}
496496

497497
private run() {
498-
const tick = () => {
499-
this.render();
498+
const tick = (time: number, frame?: XRFrame) => {
499+
this.render(frame);
500500
this.frameId = this.requestAnimationFrame(tick);
501501
};
502-
tick();
502+
tick(0);
503503
}
504504

505505
private initRenderer(renderer: IRenderer, firstContentfullPaint = false) {

packages/g-lite/src/camera/Camera.ts

+7
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,13 @@ export class Camera implements ICamera {
305305
return this;
306306
}
307307

308+
/**
309+
* Set projection matrix manually.
310+
*/
311+
setProjectionMatrix(matrix: mat4) {
312+
this.projectionMatrix = matrix;
313+
}
314+
308315
setFov(fov: number) {
309316
this.setPerspective(this.near, this.far, fov, this.aspect);
310317
return this;

packages/g-lite/src/services/RenderingService.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export class RenderingService {
8484
/**
8585
* called at beginning of each frame, won't get called if nothing to re-render
8686
*/
87-
beginFrame: new SyncHook<[]>(),
87+
beginFrame: new SyncHook<[XRFrame]>(),
8888
/**
8989
* called before every dirty object get rendered
9090
*/
@@ -97,7 +97,7 @@ export class RenderingService {
9797
* called after every dirty object get rendered
9898
*/
9999
afterRender: new SyncHook<[DisplayObject]>(),
100-
endFrame: new SyncHook<[]>(),
100+
endFrame: new SyncHook<[XRFrame]>(),
101101
destroy: new SyncHook<[]>(),
102102
/**
103103
* use async but faster method such as GPU-based picking in `g-plugin-device-renderer`
@@ -161,7 +161,11 @@ export class RenderingService {
161161
);
162162
}
163163

164-
render(canvasConfig: Partial<CanvasConfig>, rerenderCallback: () => void) {
164+
render(
165+
canvasConfig: Partial<CanvasConfig>,
166+
frame: XRFrame,
167+
rerenderCallback: () => void,
168+
) {
165169
this.stats.total = 0;
166170
this.stats.rendered = 0;
167171
this.zIndexCounter = 0;
@@ -191,7 +195,7 @@ export class RenderingService {
191195
);
192196
}
193197

194-
this.hooks.beginFrame.call();
198+
this.hooks.beginFrame.call(frame);
195199

196200
if (shouldTriggerRenderHooks) {
197201
renderingContext.renderListCurrentFrame.forEach((object) => {
@@ -201,7 +205,7 @@ export class RenderingService {
201205
});
202206
}
203207

204-
this.hooks.endFrame.call();
208+
this.hooks.endFrame.call(frame);
205209
renderingContext.renderListCurrentFrame = [];
206210
renderingContext.renderReasons.clear();
207211

packages/g-lottie-player/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-lottie-player
22

3+
## 1.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 1.0.1
411

512
### Patch Changes

packages/g-lottie-player/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@antv/g-lottie-player",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "A lottie player for G",
55
"keywords": [
66
"antv",

packages/g-mobile-canvas-element/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @antv/g-mobile-canvas-element
22

3+
## 1.0.2
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [2948b0f8]
8+
- @antv/g-lite@2.0.2
9+
310
## 1.0.1
411

512
### Patch Changes

0 commit comments

Comments
 (0)