Skip to content

Commit

Permalink
added unreal bloom effect
Browse files Browse the repository at this point in the history
  • Loading branch information
Tinoooo committed Sep 5, 2024
1 parent a7efcc2 commit 8f51ca2
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 2 deletions.
25 changes: 25 additions & 0 deletions playground/src/pages/three/unreal-bloom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<script lang="ts" setup>
import { OutputThree, UnrealBloomThree } from '@tresjs/post-processing'

Check failure on line 2 in playground/src/pages/three/unreal-bloom.vue

View workflow job for this annotation

GitHub Actions / Lint (20)

'OutputThree' is defined but never used
import { ref } from 'vue'
import BasicScene from '../../components/BasicScene.vue'
const enabled = ref(true)
const radius = ref(0.85)
const strength = ref(0.4)
const threshold = ref(0.1)
</script>

<template>
<div class="absolute top-0 left-0 z-10">
<input v-model="enabled" type="checkbox" /> enabled
<input v-model.number="radius" type="range" min="0" max="1" step="0.01" /> radius
<input v-model.number="strength" type="range" min="0" max="1" step="0.01" /> strength
<input v-model.number="threshold" type="range" min="0" max="1" step="0.01" /> threshold
</div>
<BasicScene>
<template #effects>
<UnrealBloomThree v-if="enabled" :radius="radius" :strength="strength" :threshold="threshold" />
</template>
</BasicScene>
</template>
1 change: 1 addition & 0 deletions playground/src/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export const threeRoutes = [
makeRoute('Glitch', '📺'),
makeRoute('SMAA', '📐'),
makeRoute('Halftone', '🎨'),
makeRoute('Unreal Bloom', '🌼'),
]

export const postProcessingRoutes = [
Expand Down
53 changes: 53 additions & 0 deletions src/core/three/UnrealBloom.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<script lang="ts">
import { Vector2 } from 'three'
import { computed, watchEffect } from 'vue'
import { useTresContext } from '@tresjs/core'
import { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js'
import { LuminosityHighPassShader } from 'three/examples/jsm/shaders/LuminosityHighPassShader.js'
import { useEffectThree } from '../composables/useEffectThree'
export interface UnrealBloomProps {
radius?: number
strength?: number
threshold?: number
}
</script>

<script lang="ts" setup>
const props = withDefaults(defineProps<UnrealBloomProps>(), {
radius: 0,
strength: 1,
threshold: 0,
})
const { sizes } = useTresContext()
const sizeVector = computed(() => new Vector2(sizes.width.value, sizes.height.value))
const { pass } = useEffectThree(() => new UnrealBloomPass(sizeVector.value, props.radius, props.strength, props.threshold))
defineExpose({ pass })
watchEffect(() => {
// should this be done for all passes? 🤔
pass.value.setSize(sizes.width.value, sizes.height.value)
})
watchEffect(() => {
pass.value.radius = props.radius
?? pass.value.getCompositeMaterial().uniforms.bloomRadius?.value
?? 0.1
})
watchEffect(() => {
pass.value.strength
= props.strength
?? pass.value.getCompositeMaterial().uniforms.bloomStrength?.value
?? 1
})
watchEffect(() => {
pass.value.threshold
= props.threshold
?? LuminosityHighPassShader.uniforms.luminosityThreshold?.value
?? 1
})
</script>
6 changes: 4 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import DepthOfField from './core/postprocessing/DepthOfField.vue'
import HalftoneThree from './core/three/Halftone.vue' // TODO seperate exports differently
import EffectComposer from './core/EffectComposer.vue'
import PixelationThree from './core/three/Pixelation.vue' // TODO seperate exports differently
import UnrealBloomThree from './core/three/UnrealBloom.vue' // TODO seperate exports differently
import EffectComposerThree from './core/three/EffectComposer.vue'

import { useEffect } from './core/composables/effect'
Expand All @@ -24,16 +25,17 @@ export {
Vignette,
Pixelation,
DepthOfField,
EffectComposer,

useEffect,
EffectComposer,

SMAAThree,
GlitchThree,
OutputThree,
HalftoneThree,
PixelationThree,
EffectComposerThree,
UnrealBloomThree,

useEffectThree,
EffectComposerThree,
}

0 comments on commit 8f51ca2

Please sign in to comment.