threepipe
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

script.ts 1.4KB

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