index.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup lang="ts">
  2. import { TresCanvas } from '@tresjs/core'
  3. import { WebGPURenderer } from 'three/webgpu'
  4. import type { TresRendererSetupContext } from '@tresjs/core'
  5. import { OrbitControls } from '@tresjs/cientos'
  6. import HologramCube from './HologramCube.vue'
  7. const createWebGPURenderer = async (ctx: TresRendererSetupContext) => {
  8. const renderer = new WebGPURenderer({
  9. canvas: toValue(ctx.canvas),
  10. // WebGPU specific configuration
  11. alpha: true,
  12. antialias: true,
  13. // Note: Tone mapping in WebGPU is handled through the render pipeline
  14. // and shader configuration, not through renderer properties
  15. })
  16. // Initialize WebGPU context
  17. await renderer.init()
  18. renderer.setClearColor('#000000')
  19. // Watch size changes
  20. watch([ctx.sizes.width, ctx.sizes.height], () => {
  21. renderer.setSize(ctx.sizes.width.value, ctx.sizes.height.value)
  22. }, {
  23. immediate: true,
  24. })
  25. return renderer
  26. }
  27. </script>
  28. <template>
  29. <TresCanvas :renderer="createWebGPURenderer" clear-color="black">
  30. <TresPerspectiveCamera
  31. :position="[3, 3, 3]"
  32. :look-at="[0, 0, 0]"
  33. />
  34. <Suspense>
  35. <HologramCube />
  36. </Suspense>
  37. <OrbitControls />
  38. <TresAmbientLight :intensity="1" />
  39. </TresCanvas>
  40. </template>