Skip to content

Commit

Permalink
added on demand rendering support
Browse files Browse the repository at this point in the history
  • Loading branch information
Tinoooo committed Sep 6, 2024
1 parent 25fb3e8 commit b3c0ad6
Show file tree
Hide file tree
Showing 7 changed files with 6,700 additions and 6,126 deletions.
4 changes: 2 additions & 2 deletions playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
"preview": "vite preview"
},
"dependencies": {
"@tresjs/cientos": "^3.9.0",
"@tresjs/core": "4.0.2",
"@tresjs/cientos": "^4.0.2",
"@tresjs/core": "4.2.10",
"vue-router": "^4.3.2"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions playground/src/components/BasicScene.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<script lang="ts" setup>
import { OrbitControls } from '@tresjs/cientos'
import { TresCanvas } from '@tresjs/core'
import { EffectComposerThree, PixelationThree } from '@tresjs/post-processing'
import { OrbitControls } from '@tresjs/cientos'
defineProps<{
wireframe?: boolean
}>()
</script>

<template>
<TresCanvas :disable-render="true">
<TresCanvas render-mode="on-demand">
<TresPerspectiveCamera
:position="[5, 5, 5]"
:look-at="[0, 0, 0]"
Expand Down
2 changes: 1 addition & 1 deletion playground/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { router } from './router'
import './style.css'
import 'uno.css'

const app = createApp(App)
Expand Down
12 changes: 6 additions & 6 deletions playground/src/pages/postprocessing/outline.vue
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<script setup lang="ts">
import { KernelSize } from 'postprocessing'
import { ref } from 'vue'
import { EffectComposer, Outline } from '@tresjs/post-processing'
import { TresCanvas } from '@tresjs/core'
import { OrbitControls } from '@tresjs/cientos'
import type { Intersection, Object3D } from 'three'
import { TresCanvas } from '@tresjs/core'
import { TresLeches, useControls } from '@tresjs/leches'
import { EffectComposer, Outline } from '@tresjs/post-processing'
import { KernelSize } from 'postprocessing'
import { NoToneMapping } from 'three'
import { ref } from 'vue'
import { TresLeches, useControls } from '@tresjs/leches'
import type { Intersection, Object3D } from 'three'
import '@tresjs/leches/styles'
const gl = {
Expand Down
12,769 changes: 6,672 additions & 6,097 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

18 changes: 5 additions & 13 deletions src/core/EffectComposer.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
<script lang="ts">
import { HalfFloatType } from 'three'
import type { TresObject } from '@tresjs/core'
import { useLoop, useTresContext } from '@tresjs/core'
import { DepthDownsamplingPass, EffectComposer as EffectComposerImpl, NormalPass, RenderPass } from 'postprocessing'
import { HalfFloatType } from 'three'
import { isWebGL2Available } from 'three-stdlib'
import { computed, onUnmounted, provide, shallowRef, watch } from 'vue'
import type { EffectComposer } from 'postprocessing'
Expand All @@ -14,7 +13,6 @@ export const effectComposerInjectionKey: InjectionKey<ShallowRef<EffectComposer
export interface EffectComposerProps {
enabled?: boolean
children?: TresObject[]
depthBuffer?: boolean
disableNormalPass?: boolean
stencilBuffer?: boolean
Expand Down Expand Up @@ -118,15 +116,9 @@ render(() => {
renderer.value.autoClear = currentAutoClear
}
// Reset priority
renderCtx.priority.value = 0 // TODO ask Alvaro about this
if (renderCtx.mode.value === 'always') {
renderCtx.frames.value = 1
}
else {
renderCtx.frames.value = Math.max(0, renderCtx.frames.value - 1)
}
renderCtx.frames.value = renderCtx.mode.value === 'always'
? 1
: renderCtx.frames.value = Math.max(0, renderCtx.frames.value - 1)
})
onUnmounted(() => {
Expand Down
17 changes: 12 additions & 5 deletions src/core/three/EffectComposer.vue
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
<script lang="ts">
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'
import { useDevicePixelRatio } from '@vueuse/core'
import { useLoop, useTresContext } from '@tresjs/core'
import { useDevicePixelRatio } from '@vueuse/core'
import { EffectComposer as EffectComposerThreejs } from 'three/examples/jsm/postprocessing/EffectComposer.js'
import { type InjectionKey, type ShallowRef, onUnmounted, provide, shallowRef, watchEffect } from 'vue'
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js'
import { type InjectionKey, onUnmounted, provide, type ShallowRef, shallowRef, watchEffect } from 'vue'
export const effectComposerInjectionKey: InjectionKey<ShallowRef<EffectComposerThreejs | null>> = Symbol('effectComposerThree')
</script>

<script lang="ts" setup>
const props = defineProps<{
withoutRenderPass?: boolean
// TODO add enabled prop
}>()
const effectComposer: ShallowRef<EffectComposerThreejs | null> = shallowRef(null)
provide(effectComposerInjectionKey, effectComposer)
defineExpose({ composer: effectComposer })
const { renderer, sizes, scene, camera } = useTresContext()
const { renderer, sizes, scene, camera, render: renderCtx } = useTresContext()
const initEffectComposer = () => {
effectComposer.value?.dispose()
Expand Down Expand Up @@ -50,7 +51,13 @@ if (!props.withoutRenderPass) {
const { render } = useLoop()
render(() => {
effectComposer.value?.render()
if (renderCtx.frames.value > 0 && effectComposer.value) {
effectComposer.value.render()
}
renderCtx.frames.value = renderCtx.mode.value === 'always'
? 1
: renderCtx.frames.value = Math.max(0, renderCtx.frames.value - 1)
})
onUnmounted(() => {
Expand Down

0 comments on commit b3c0ad6

Please sign in to comment.