Skip to content

Commit

Permalink
Merge branch 'main' into feature/732-pass-vue-providers-down-to-custo…
Browse files Browse the repository at this point in the history
…m-renderer
  • Loading branch information
alvarosabu authored Sep 27, 2024
2 parents 03c14f0 + f944647 commit 2a4e37c
Show file tree
Hide file tree
Showing 61 changed files with 9,568 additions and 10,697 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/sponsorkit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@ jobs:
SPONSORKIT_GITHUB_LOGIN: alvarosabu

- name: Commit
uses: EndBug/add-and-commit@v5
uses: EndBug/add-and-commit@v9
with:
message: "chore: update sponsors.svg"
add: "sponsorkit/sponsors.*"
author_name: GitHub Actions
author_email: 41898282+github-actions[bot]@users.noreply.github.com
message: 'chore: update sponsors.svg '
add: "sponsors.*"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8 changes: 0 additions & 8 deletions .husky/install.mjs

This file was deleted.

25 changes: 0 additions & 25 deletions .husky/pre-push

This file was deleted.

4 changes: 2 additions & 2 deletions docs/.vitepress/theme/components/LocalOrbitControls.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<script lang="ts" setup>
import type { TresVector3 } from '@tresjs/core'
import type { Camera } from 'three'
import { extend, useRenderLoop, useTresContext } from '@tresjs/core'
import { useEventListener } from '@vueuse/core'
import { OrbitControls } from 'three-stdlib'
import { onMounted, onUnmounted, shallowRef, unref } from 'vue'
import type { TresVector3 } from '@tresjs/core'
import type { Camera } from 'three'
export interface OrbitControlsProps {
/**
Expand Down
2 changes: 1 addition & 1 deletion docs/.vitepress/theme/components/StackBlitzEmbed.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script setup lang="ts">
import type { EmbedOptions } from '@stackblitz/sdk'
import sdk from '@stackblitz/sdk'
import { ref, watch } from 'vue'
import type { EmbedOptions } from '@stackblitz/sdk'
const props = withDefaults(
defineProps<{
Expand Down
2 changes: 1 addition & 1 deletion docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import VPTheme from 'vitepress/theme'
import type { Theme } from 'vitepress'
import VPTheme from 'vitepress/theme'

import TresLayout from './TresLayout.vue'
import './custom.css'
Expand Down
31 changes: 29 additions & 2 deletions docs/api/composables.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ The `useLoader` composable allows you to load assets using the [THREE.js loaders
```ts
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader'

const { scene } = await useLoader(THREE.GLTFLoader, 'path/to/asset.gltf')
const { scene } = await useLoader(GLTFLoader, 'path/to/asset.gltf')
```

Since the `useLoader` composable returns a promise, you can use it with `async/await` or `then/catch`. If you are using it on a component make sure you wrap it with a `Suspense` component. See [Suspense](https://vuejs.org/guide/built-ins/suspense.html#suspense) for more information.
Expand All @@ -234,6 +234,33 @@ Since the `useLoader` composable returns a promise, you can use it with `async/a
</template>
```

### UseLoader as component

You can also use `UseLoader` (with uppercase) as component like so:

```vue
<script setup lang="ts">
import { UseLoader } from '@tresjs/core'
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader'
</script>
<Suspense>
<UseLoader v-slot="{ data }" :loader="GLTFLoader" url="path/to/asset.gltf">
<primitive :object="data.scene" />
</Suspense>
```

### Props

| Prop | type |
| ---- | --- |
| **loader** | `THREE.Loader` |
| **url** | `String` |

::: warning
The `UseLoader` component needs to be wrapped in a `Suspense` component in order to work
:::

## useTexture

The `useTexture` composable allows you to load textures using the [THREE.js texture loader](https://threejs.org/docs/#api/en/loaders/TextureLoader). It returns a promise with the loaded texture(s).
Expand Down Expand Up @@ -312,7 +339,7 @@ You can also use `UseTexture` (with uppercase) as component like so:
</Suspense>
```

## Props
### Props

| Prop | type |
| ---- | --- |
Expand Down
1 change: 0 additions & 1 deletion docs/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **context** | This can be used to attach the renderer to an existing [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) | |
| **depth** | Whether the drawing buffer has a [depth buffer](https://en.wikipedia.org/wiki/Z-buffering) of at least 16 bits. | `true` |
| **renderMode** | Render mode, can be `always`, `on-demand` or `manual`. See [Performance](../advanced/performance) | `always` |
| **disableRender** | Disable render on requestAnimationFrame, useful for PostProcessing | `false` |
| **failIfMajorPerformanceCaveat** | Whether the renderer creation will fail upon low performance is detected. See [WebGL spec](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2) for details. | `false` |
| **logarithmicDepthBuffer** | Whether to use a logarithmic depth buffer. It may be necessary to use this if dealing with huge differences in scale in a single scene. Note that this setting uses gl_FragDepth if available which disables the [Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test) optimization and can cause a decrease in performance. | `false` |
| **outputColorSpace** | Defines the output encoding | `LinearEncoding` |
Expand Down
1 change: 0 additions & 1 deletion docs/de/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **clearColor** | Die Farbe, die der Renderer verwendet, um die Leinwand zu löschen. | `#000000` |
| **context** | Kann verwendet werden, um den Renderer an einen vorhandenen [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) anzuhängen. | |
| **depth** | Gibt an, ob der Zeichenpuffer einen [Tiefenpuffer](https://en.wikipedia.org/wiki/Z-buffering) von mindestens 16 Bit hat. | `true` |
| **disableRender** | Deaktiviert das Rendering in requestAnimationFrame, nützlich für PostProcessing. | `false` |
| **failIfMajorPerformanceCaveat** | Gibt an, ob die Erstellung des Renderers fehlschlagen soll, wenn eine geringe Performance festgestellt wird. Siehe die [WebGL-Spezifikation](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2) für weitere Details. | `false` |
| **logarithmicDepthBuffer** | Gibt an, ob ein logarithmischer Tiefenpuffer verwendet werden soll. Dies kann notwendig sein, wenn in einer einzigen Szene enorme Skalendifferenzen gehandhabt werden müssen. Beachte, dass diese Einstellung gl_FragDepth verwendet, wenn verfügbar, was die Optimierung [Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test) deaktiviert und zu einer Performancesverminderung führen kann. | `false` |
| **outputColorSpace** | Definiert die Ausgabekodierung. | `LinearEncoding` |
Expand Down
29 changes: 28 additions & 1 deletion docs/es/api/composables.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,33 @@ Dado que el composable `useLoader` devuelve una promesa, puedes usarlo con `asyn
</template>
```

### UseLoader como componente

Puedes usar `UseLoader` como componente, de la siguiente forma:

```vue
<script setup lang="ts">
import { UseLoader } from '@tresjs/core'
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader'
</script>
<Suspense>
<UseLoader v-slot="{ data }" :loader="GLTFLoader" url="path/to/asset.gltf">
<primitive :object="data.scene" />
</Suspense>
```

### Props

| Prop | type |
| ---- | --- |
| **loader** | `THREE.Loader` |
| **url** | `String` |

::: warning
El componente `UseLoader` necesita estar envuelto por un `Suspense` para poder funcionar
:::

## useTexture

El composable `useTexture` te permite cargar texturas utilizando el [cargador de texturas de THREE.js](https://threejs.org/docs/#api/en/loaders/TextureLoader). Retorna una promesa con la(s) textura(s) cargada(s).
Expand Down Expand Up @@ -165,7 +192,7 @@ Puedes usar `UseTexture` como componente, de la siguiente forma:
</Suspense>
```

## Props
### Props

| Prop | type |
| ---- | --- |
Expand Down
1 change: 0 additions & 1 deletion docs/es/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **clearColor** | El color que el renderizador utilizará para borrar el lienzo. | `#000000` |
| **context** | Esto se puede usar para adjuntar el renderizador a un [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) existente. | |
| **depth** | Indica si el búfer de dibujo tiene un [búfer de profundidad](https://en.wikipedia.org/wiki/Z-buffering) de al menos 16 bits. | `true` |
| **disableRender** | Desactiva el renderizado en requestAnimationFrame, útil para PostProcessing. | `false` |
| **failIfMajorPerformanceCaveat** | Indica si la creación del renderizador fallará si se detecta un bajo rendimiento. Consulta la [especificación de WebGL](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2) para más detalles. | `false` |
| **logarithmicDepthBuffer** | Indica si se debe utilizar un búfer de profundidad logarítmico. Puede ser necesario utilizar esto si se manejan diferencias enormes de escala en una sola escena. Ten en cuenta que esta configuración utiliza gl_FragDepth si está disponible, lo cual deshabilita la optimización [Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test) y puede causar una disminución en el rendimiento. | `false` |
| **outputColorSpace** | Define la codificación de salida. | `LinearEncoding` |
Expand Down
1 change: 0 additions & 1 deletion docs/fr/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **clearColor** | La couleur que le moteur de rendu utilisera pour effacer le canevas. | `#000000` |
| **context** | Ceci peut être utilisé pour attacher le moteur de rendu à un [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) existente. | |
| **depth** | Indique si le tampon de dessin a une [profondeur du tampon](https://en.wikipedia.org/wiki/Z-buffering) de au moins 16 bits. | `true` |
| **disableRender** | Désactive le rendu sur requestAnimationFrame, utile pour le post-traitement. | `false` |
| **failIfMajorPerformanceCaveat** | Indique si la création du moteur de rendu échouera si de mauvaises performances sont détectées. Voir la [spécification WebGL](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2) para más detalles. | `false` |
| **logarithmicDepthBuffer** | Indique s’il faut utiliser un tampon de profondeur logarithmique. Il peut être nécessaire de l'utiliser s'il s'agit de différences d'échelle énormes dans une seule scène. Notez que ce paramètre utilise gl_FragDepth s'il est disponible, ce qui désactive l'optimisation [Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test) et peut entraîner une baisse des performances. | `false` |
| **outputColorSpace** | Définit l'encodage de sortie. | `LinearEncoding` |
Expand Down
1 change: 0 additions & 1 deletion docs/nl/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **clearColor** | De kleur die de renderer gebruikt om het canvas leeg te maken. | `#000000` |
| **context** | Dit kan worden gebruikt om de renderer aan een bestaand [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) te koppelen | |
| **depth** | Of de drawing buffer een [depth buffer](https://en.wikipedia.org/wiki/Z-buffering) heeft van tenminste 16 bits. | `true` |
| **disableRender** | Blokkeer render op requestAnimationFrame, handig voor PostProcessing | `false` |
| **failIfMajorPerformanceCaveat** | Er wordt gedetecteerd of het maken van de renderer zal mislukken bij lage prestaties. Zie [WebGL spec](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2) for details. | `false` |
| **logarithmicDepthBuffer** | Of de logarithmic depth buffer gebruikt moet worden. Het kan zijn dat dit noodzakelijk is als je te maken hebt met flinke verschillen in scale in een enkele scene. Merk op dat deze setting gebruik maakt van gl_FragDepth wanneer deze beschikbaar is en deze schakelt [Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test) uit en kan een verlies in prestaties veroorzaken. | `false` |
| **outputColorSpace** | Definieert de uitvoercodering | `LinearEncoding` |
Expand Down
1 change: 0 additions & 1 deletion docs/zh/api/tres-canvas.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ renderer.shadowMap.type = PCFSoftShadowMap
| **clearColor** | 清除画布后渲染器显示颜色。 | `#000000` |
| **context** | 将渲染器附加到现有的 [RenderingContext](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext) | |
| **depth** | 绘图缓冲区是否至少具有16位的[深度缓冲区](https://en.wikipedia.org/wiki/Z-buffering)| `true` |
| **disableRender** | 禁用 `requestAnimationFrame` 上的渲染,这对于后期处理非常有用。 | `false` |
| **failIfMajorPerformanceCaveat** | 在性能较低时,是否检测渲染器创建失败。详细信息请参阅[WebGL](https://registry.khronos.org/webgl/specs/latest/1.0/#5.2)规范。 | `false` |
| **logarithmicDepthBuffer** | 是否使用深度缓冲区。如果在单个场景中处理巨大的比例差异,可能需要使用此选项。请注意,如果使用,此设置将使用gl_FragDepth,这将禁用[Early Fragment Test](https://www.khronos.org/opengl/wiki/Early_Fragment_Test)优化,可能会导致性能下降。 | `false` |
| **outputColorSpace** | 定义输出编码 | `LinearEncoding` |
Expand Down
37 changes: 18 additions & 19 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,36 +63,35 @@
"docs:build": "vitepress build docs",
"docs:serve": "vitepress serve docs",
"docs:preview": "vitepress preview docs",
"docs:contributors": "esno scripts/update-contributors.ts",
"prepare": "node .husky/install.mjs"
"docs:contributors": "esno scripts/update-contributors.ts"
},
"peerDependencies": {
"three": ">=0.133",
"vue": ">=3.4"
},
"dependencies": {
"@alvarosabu/utils": "^3.2.0",
"@vue/devtools-api": "^6.6.3",
"@vueuse/core": "^11.0.3"
"@vue/devtools-api": "^7.4.5",
"@vueuse/core": "^11.1.0"
},
"devDependencies": {
"@release-it/conventional-changelog": "^8.0.1",
"@release-it/conventional-changelog": "^8.0.2",
"@stackblitz/sdk": "^1.11.0",
"@tresjs/cientos": "4.0.2",
"@tresjs/eslint-config": "^1.2.0",
"@tresjs/eslint-config": "^1.3.1",
"@types/three": "^0.168.0",
"@typescript-eslint/eslint-plugin": "^8.4.0",
"@typescript-eslint/parser": "^8.4.0",
"@typescript-eslint/eslint-plugin": "^8.6.0",
"@typescript-eslint/parser": "^8.6.0",
"@vitejs/plugin-vue": "^5.1.3",
"@vitest/coverage-c8": "^0.33.0",
"@vitest/coverage-v8": "^2.0.2",
"@vitest/ui": "^2.0.2",
"@vitest/coverage-v8": "^2.1.1",
"@vitest/ui": "^2.1.1",
"@vue/test-utils": "^2.4.6",
"eslint": "^9.9.1",
"eslint": "^9.10.0",
"eslint-plugin-vue": "^9.28.0",
"esno": "^4.7.0",
"gsap": "^3.12.5",
"husky": "^9.1.5",
"husky": "^9.1.6",
"jsdom": "^25.0.0",
"kolorist": "^1.8.0",
"ohmyfetch": "^0.4.21",
Expand All @@ -101,20 +100,20 @@
"rollup-plugin-analyzer": "^4.0.0",
"rollup-plugin-copy": "^3.5.0",
"rollup-plugin-visualizer": "^5.12.0",
"sponsorkit": "^0.15.4",
"sponsorkit": "^0.15.5",
"three": "^0.168.0",
"unocss": "^0.62.3",
"unplugin": "^1.13.1",
"unocss": "^0.62.4",
"unplugin": "^1.14.1",
"unplugin-vue-components": "^0.27.4",
"vite": "^5.4.3",
"vite": "^5.4.6",
"vite-plugin-banner": "^0.8.0",
"vite-plugin-dts": "4.1.0",
"vite-plugin-dts": "4.2.1",
"vite-plugin-inspect": "^0.8.7",
"vite-plugin-require-transform": "^1.0.21",
"vite-svg-loader": "^5.1.0",
"vitepress": "1.3.4",
"vitest": "^2.0.2",
"vue": "3.5.3",
"vitest": "^2.1.1",
"vue": "3.5.6",
"vue-demi": "^0.14.10"
}
}
2 changes: 1 addition & 1 deletion playground/nuxt/components/EnvironmentLocal.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script setup lang="ts">
import type { LoaderProto } from '@tresjs/core'
import { useLoader, useTresContext } from '@tresjs/core'
import { CubeReflectionMapping, type CubeTexture, CubeTextureLoader, EquirectangularReflectionMapping, type Texture } from 'three'
import { RGBELoader } from 'three-stdlib'
import type { LoaderProto } from '@tresjs/core'
/* const files = ref(['/px.jpg', '/nx.jpg', '/py.jpg', '/ny.jpg', '/pz.jpg', '/nz.jpg']) */
const files = ref('venice/venice_sunset_1k.hdr')
Expand Down
2 changes: 1 addition & 1 deletion playground/vue/src/composables/useFBX.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Object3D } from 'three'
import { useLoader } from '@tresjs/core'
import { FBXLoader } from 'three-stdlib'
import type { Object3D } from 'three'

/**
* Loads an FBX file and returns a THREE.Object3D.
Expand Down
4 changes: 2 additions & 2 deletions playground/vue/src/composables/useGLTF.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { type TresLoader, type TresObject3D, useLoader } from '@tresjs/core'
import { DRACOLoader, GLTFLoader } from 'three-stdlib'
import type { AnimationClip, Material, Scene } from 'three'
import type { GLTF } from 'three-stdlib'
import { type TresLoader, type TresObject3D, useLoader } from '@tresjs/core'
import { DRACOLoader, GLTFLoader } from 'three-stdlib'

export interface GLTFLoaderOptions {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script setup lang="ts">
import type { WebGLRenderer } from 'three'
import { TresCanvas } from '@tresjs/core'
import { shallowRef } from 'vue'
import type { WebGLRenderer } from 'three'
const rendererRef = shallowRef<WebGLRenderer | null>(null)
const minDpr = 1
Expand Down
4 changes: 2 additions & 2 deletions playground/vue/src/pages/advanced/fbo/useFBO.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type { Camera, WebGLRenderTargetOptions } from 'three'
import type { Ref } from 'vue'
/* eslint-disable no-console */
import { useLoop, useTresContext } from '@tresjs/core'
import { useThrottleFn } from '@vueuse/core'
import { DepthTexture, FloatType, HalfFloatType, LinearFilter, WebGLRenderTarget } from 'three'
import { isReactive, onBeforeUnmount, reactive, ref, toRefs, watchEffect } from 'vue'
import type { Camera, WebGLRenderTargetOptions } from 'three'
import type { Ref } from 'vue'

export interface FboOptions {
/*
Expand Down
4 changes: 2 additions & 2 deletions playground/vue/src/pages/basic/Lights.vue
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<script setup lang="ts">
import type { TresObject } from '@tresjs/core'
import { OrbitControls } from '@tresjs/cientos'
import { TresCanvas, vDistanceTo, vLightHelper, vLog } from '@tresjs/core'
import { BasicShadowMap, NoToneMapping, SRGBColorSpace } from 'three'
import type { TresObject } from '@tresjs/core'
import { BasicShadowMap, NoToneMapping, SRGBColorSpace } from 'three'
const gl = {
clearColor: '#82DBC5',
Expand Down
4 changes: 2 additions & 2 deletions playground/vue/src/pages/basic/ready/index.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script setup lang="ts">
import { TresCanvas } from '@tresjs/core'
import { ref } from 'vue'
import type { TresContext } from '@tresjs/core'
import type { ShallowRef } from 'vue'
import { TresCanvas } from '@tresjs/core'
import { ref } from 'vue'
import LoopCallbackWatcher from './LoopCallbackWatcher.vue'
import OnTresReadyWatcher from './OnTresReadyWatcher.vue'
Expand Down
2 changes: 1 addition & 1 deletion playground/vue/src/pages/cameras/multipleCameras/index.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script setup lang="ts">
import type { Camera } from 'three'
import { OrbitControls } from '@tresjs/cientos'
import { TresCanvas } from '@tresjs/core'
import { TresLeches, useControls } from '@tresjs/leches'
import type { Camera } from 'three'
import TheCameraOperator from './TheCameraOperator.vue'
import '@tresjs/leches/styles'
Expand Down
2 changes: 1 addition & 1 deletion playground/vue/src/pages/events/index.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<!-- eslint-disable no-console -->
<script setup lang="ts">
import type { ThreeEvent } from '@tresjs/core'
import { OrbitControls, StatsGl } from '@tresjs/cientos'
import { TresCanvas } from '@tresjs/core'
import { TresLeches, useControls } from '@tresjs/leches'
import { BasicShadowMap, NoToneMapping, SRGBColorSpace } from 'three'
import type { ThreeEvent } from '@tresjs/core'
import '@tresjs/leches/styles'
const gl = {
Expand Down
Loading

0 comments on commit 2a4e37c

Please sign in to comment.