threepipe
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {
  2. _testFinish,
  3. ProgressivePlugin,
  4. RenderTargetPreviewPlugin,
  5. SSAOPlugin,
  6. ThreeViewer,
  7. UnsignedByteType,
  8. } from 'threepipe'
  9. import {TweakpaneUiPlugin} from '@threepipe/plugin-tweakpane'
  10. const viewer = new ThreeViewer({
  11. canvas: document.getElementById('mcanvas') as HTMLCanvasElement,
  12. msaa: true,
  13. plugins: [ProgressivePlugin],
  14. })
  15. async function init() {
  16. const ssaoPlugin = viewer.addPluginSync(new SSAOPlugin(UnsignedByteType, 1))
  17. await viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr')
  18. await viewer.load('https://threejs.org/examples/models/gltf/kira.glb', {
  19. autoCenter: true,
  20. autoScale: true,
  21. })
  22. const ssaoTarget = ssaoPlugin.target
  23. if (!ssaoTarget) {
  24. throw new Error('ssaoPlugin.target returned undefined')
  25. }
  26. // to render ssao buffer to screen, uncomment this line:
  27. // viewer.renderManager.screenPass.overrideReadBuffer = ssaoTarget
  28. const targetPreview = await viewer.addPlugin(RenderTargetPreviewPlugin)
  29. targetPreview.addTarget(()=>ssaoTarget, 'ssao', false, true, true, (s)=>`${s} = vec4(${s}.r);`)
  30. const ui = viewer.addPluginSync(TweakpaneUiPlugin, true)
  31. ui.setupPluginUi(SSAOPlugin)
  32. }
  33. init().finally(_testFinish)