tresProcessing.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <template>
  2. <Suspense>
  3. <EffectComposerPmndrs v-if="isEffectComposerPmndrs">
  4. <BloomPmndrs v-if="isOneEffect('Bloom')" v-bind="postProcessing.configList.Bloom" />
  5. <ChromaticAberrationPmndrs
  6. v-if="isOneEffect('chromaticAberration')"
  7. :offset="new THREE.Vector2(postProcessing.configList.chromaticAberration.offsetX, postProcessing.configList.chromaticAberration.offsetY)"
  8. :radial-modulation="postProcessing.configList.chromaticAberration.radialModulation"
  9. :modulation-offset="postProcessing.configList.chromaticAberration.modulationOffset"
  10. />
  11. <GridPmndrs v-if="isOneEffect('grid')" v-bind="postProcessing.configList.grid" />
  12. </EffectComposerPmndrs>
  13. </Suspense>
  14. </template>
  15. <script setup lang="ts">
  16. import { computed } from 'vue'
  17. import * as THREE from 'three'
  18. import { EffectComposerPmndrs, BloomPmndrs, ChromaticAberrationPmndrs, GridPmndrs } from '@tresjs/post-processing'
  19. const props = withDefaults(
  20. defineProps<{
  21. postProcessing?: any
  22. }>(),
  23. {
  24. postProcessing: {}
  25. },
  26. )
  27. const isEffectComposerPmndrs = computed(() => props.postProcessing.isOpenList.Bloom || props.postProcessing.isOpenList.chromaticAberration || props.postProcessing.isOpenList.grid)
  28. const isOneEffect = (type: string) => {
  29. return props.postProcessing.isOpenList[type] && props.postProcessing.configList[type]
  30. }
  31. </script>