Skip to content

Commit c8df59f

Browse files
Tinooooalvarosabu
andauthored
feat: sub modules for pmndrs and native components (#123)
* added EffectComposer and some debugging files * wip * added composable * cleanup * added more props to native pixelation effect * restructured playground * added glitch Effect * added glitch effect * renamed folder * added check to prevent console warning * added smaa effect * added output pass * moved injectionKey * added prop to EffectComposer * added halftone effect * added unreal bloom effect * removed obsolete computed * added on demand rendering support * lint fixes * added enabled prop to effect composer component * removed obsolete code * eslint stuff * rebuilt pnpm lock file * moved files * type fixes and removed dependency * seperated builds * fixed playground * adjusted imports in docs * adjusted more imports * added pkg pr workflow * added repository url to package.json * omitted compact option from pkg-pr-new * renamed import * adjusted vite config * added HalftoneShape enum * added invalidation on pass changes for native three effects * added invalidation on prop change for pmndrs effects * added renderer invalidation to glitch effects * removed disableRender prop * tiny readme update * auto created files update * lint fix * lint fix * docs: fixed broken docs, added new structure * docs: three glitch guide * docs: pixelation three * docs: correct glitch demo component name * docs: halftone * docs: smaa * docs: unreal bloom * added some links to threejs examples * added output pass docs * eslint ignored a console output * dependency updates * Update docs/guide/three/glitch.md Co-authored-by: Tino Koch <[email protected]> * Update docs/guide/three/glitch.md Co-authored-by: Tino Koch <[email protected]> * docs: remove redundant info --------- Co-authored-by: Alvaro Saburido <[email protected]>
1 parent cd24a57 commit c8df59f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+2616
-2201
lines changed

.github/workflows/pkg.pr.new.yml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Publish Any Commit
2+
on:
3+
push:
4+
branches:
5+
- '**'
6+
tags:
7+
- '!**'
8+
9+
env:
10+
PNPM_CACHE_FOLDER: .pnpm-store
11+
12+
permissions: {}
13+
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.event.number }}
16+
cancel-in-progress: true
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
strategy:
22+
matrix:
23+
node-version: [20]
24+
steps:
25+
- name: Checkout code
26+
uses: actions/checkout@v4
27+
28+
- run: corepack enable
29+
- uses: actions/setup-node@v4
30+
with:
31+
node-version: ${{ matrix.node-version }}
32+
cache: "pnpm"
33+
- name: Install dependencies
34+
run: pnpm install
35+
- name: Build
36+
run: pnpm build
37+
- run: pnpm dlx pkg-pr-new publish --pnpm

README.md

-4
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ And then to run the development server on http://localhost:5173
5757
pnpm run playground
5858
```
5959

60-
### Test
61-
62-
TODO...
63-
6460
### Docs
6561

6662
To run de docs in dev mode

docs/.eslintrc.json

-3
This file was deleted.

docs/.vitepress/config.ts

+22-10
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,26 @@ export default defineConfig({
4747
items: [{ text: 'Introduction', link: '/guide/' }],
4848
},
4949
{
50-
text: 'Effects',
50+
text: 'Pmndrs',
5151
items: [
52-
{ text: 'Bloom', link: '/guide/effects/bloom' },
53-
{ text: 'Depth of Field', link: '/guide/effects/depth-of-field' },
54-
{ text: 'Glitch', link: '/guide/effects/glitch' },
55-
{ text: 'Noise', link: '/guide/effects/noise' },
56-
{ text: 'Outline', link: '/guide/effects/outline' },
57-
{ text: 'Pixelation', link: '/guide/effects/pixelation' },
58-
{ text: 'Vignette', link: '/guide/effects/vignette' },
52+
{ text: 'Bloom', link: '/guide/pmndrs/bloom' },
53+
{ text: 'Depth of Field', link: '/guide/pmndrs/depth-of-field' },
54+
{ text: 'Glitch', link: '/guide/pmndrs/glitch' },
55+
{ text: 'Noise', link: '/guide/pmndrs/noise' },
56+
{ text: 'Outline', link: '/guide/pmndrs/outline' },
57+
{ text: 'Pixelation', link: '/guide/pmndrs/pixelation' },
58+
{ text: 'Vignette', link: '/guide/pmndrs/vignette' },
59+
],
60+
},
61+
{
62+
text: 'Three',
63+
items: [
64+
{ text: 'Glitch', link: '/guide/three/glitch' },
65+
{ text: 'Halftone', link: '/guide/three/halftone' },
66+
{ text: 'Output', link: '/guide/three/output' },
67+
{ text: 'Pixelation', link: '/guide/three/pixelation' },
68+
{ text: 'SMAA', link: '/guide/three/smaa' },
69+
{ text: 'Unreal Bloom', link: '/guide/three/unreal-bloom' },
5970
],
6071
},
6172
],
@@ -78,9 +89,10 @@ export default defineConfig({
7889
},
7990
resolve: {
8091
alias: {
81-
'@tresjs/post-processing': resolve(__dirname, '../../dist/tres-postprocessing.js'),
92+
'@tresjs/post-processing/three': resolve(__dirname, '../../src/core/three'),
93+
'@tresjs/post-processing/pmndrs': resolve(__dirname, '../../src/core/pmndrs'),
8294
},
83-
dedupe: ['three'],
95+
dedupe: ['three', '@tresjs/core'],
8496
},
8597
},
8698
vue: {

docs/.vitepress/theme/components/BloomDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/BloomDemo.vue

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script setup lang="ts">
22
import { TresCanvas } from '@tresjs/core'
3-
import { Bloom, EffectComposer } from '@tresjs/post-processing'
3+
import { Bloom, EffectComposer } from '@tresjs/post-processing/pmndrs'
44
import { BlendFunction } from 'postprocessing'
55
import { Color } from 'three'
66
import { reactive } from 'vue'
77
8-
import { useRouteDisposal } from '../composables/useRouteDisposal'
8+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
99
1010
const gl = {
1111
clearColor: '#121212',
@@ -19,7 +19,6 @@ const bloomParams = reactive({
1919
mipmapBlur: true,
2020
intensity: 8,
2121
radius: 0.5,
22-
disableRender: true,
2322
blendFunction: BlendFunction.ADD,
2423
})
2524

docs/.vitepress/theme/components/DepthOfFieldDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/DepthOfFieldDemo.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<script lang="ts" setup>
22
import { TresCanvas } from '@tresjs/core'
3-
import { DepthOfField, EffectComposer } from '@tresjs/post-processing'
3+
import { DepthOfField, EffectComposer } from '@tresjs/post-processing/pmndrs'
44
import { gsap } from 'gsap'
55
import { ref } from 'vue'
66
7-
import { useRouteDisposal } from '../composables/useRouteDisposal'
7+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
88
99
const dofEffect = ref<InstanceType<typeof DepthOfField> | null>(null)
1010

docs/.vitepress/theme/components/GlitchDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/GlitchDemo.vue

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
<script setup lang="ts">
22
import { Text3D } from '@tresjs/cientos'
33
import { TresCanvas } from '@tresjs/core'
4-
import { EffectComposer, Glitch } from '@tresjs/post-processing'
4+
import { EffectComposer, Glitch } from '@tresjs/post-processing/pmndrs'
55
66
import { Color } from 'three'
77
8-
import { useRouteDisposal } from '../composables/useRouteDisposal'
8+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
99
1010
const gl = {
1111
clearColor: '#121212',
1212
shadows: true,
1313
alpha: false,
14-
disableRender: true,
1514
}
1615
1716
// Need to dispose of the effect composer when the route changes because Vitepress doesnt unmount the components
@@ -22,7 +21,7 @@ const { effectComposer } = useRouteDisposal()
2221
<TresCanvas v-bind="gl">
2322
<TresPerspectiveCamera
2423
:position="[0, 1, 5]"
25-
:look-at="[0, 0, 0]"
24+
:look-at="[0, 1, 0]"
2625
/>
2726
<Suspense>
2827
<Text3D

docs/.vitepress/theme/components/NoiseDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/NoiseDemo.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script setup lang="ts">
22
import { OrbitControls } from '@tresjs/cientos'
33
import { TresCanvas } from '@tresjs/core'
4-
import { EffectComposer, Noise } from '@tresjs/post-processing'
4+
import { EffectComposer, Noise } from '@tresjs/post-processing/pmndrs'
55
import { BlendFunction } from 'postprocessing'
66
import { BasicShadowMap, NoToneMapping, SRGBColorSpace } from 'three'
77
8-
import { useRouteDisposal } from '../composables/useRouteDisposal'
8+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
99
1010
const gl = {
1111
clearColor: '#82DBC5',

docs/.vitepress/theme/components/OutlineDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/OutlineDemo.vue

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
<script lang="ts" setup>
2-
import type { Intersection, Object3D } from 'three'
32
import { OrbitControls } from '@tresjs/cientos'
43
import { TresCanvas } from '@tresjs/core'
54
import { TresLeches, useControls } from '@tresjs/leches'
6-
import { EffectComposer, Outline } from '@tresjs/post-processing'
5+
import { EffectComposer, Outline } from '@tresjs/post-processing/pmndrs'
76
import { KernelSize } from 'postprocessing'
87
import { NoToneMapping } from 'three'
9-
108
import { ref } from 'vue'
11-
import { useRouteDisposal } from '../composables/useRouteDisposal'
9+
10+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
1211
1312
import '@tresjs/leches/styles'
1413
1514
const gl = {
1615
clearColor: '#121212',
1716
toneMapping: NoToneMapping,
18-
disableRender: true,
1917
}
2018
2119
const { effectComposer } = useRouteDisposal()

docs/.vitepress/theme/components/PixelationDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/PixelationDemo.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts" setup>
22
import { OrbitControls } from '@tresjs/cientos'
33
import { TresCanvas } from '@tresjs/core'
4-
import { EffectComposer, Pixelation } from '@tresjs/post-processing'
4+
import { EffectComposer, Pixelation } from '@tresjs/post-processing/pmndrs'
55
6-
import { useRouteDisposal } from '../composables/useRouteDisposal'
6+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
77
88
// Need to dispose of the effect composer when the route changes because Vitepress doesnt unmount the components
99
const { effectComposer } = useRouteDisposal()

docs/.vitepress/theme/components/VignetteDemo.vue renamed to docs/.vitepress/theme/components/pmdrs/VignetteDemo.vue

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<script setup lang="ts">
22
import { OrbitControls } from '@tresjs/cientos'
33
import { TresCanvas } from '@tresjs/core'
4-
import { DepthOfField, EffectComposer, Vignette } from '@tresjs/post-processing'
4+
import { DepthOfField, EffectComposer, Vignette } from '@tresjs/post-processing/pmndrs'
55
import { BasicShadowMap, NoToneMapping, SRGBColorSpace } from 'three'
66
7-
import { useRouteDisposal } from '../composables/useRouteDisposal'
7+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
88
9-
import BlenderCube from './BlenderCube.vue'
9+
import BlenderCube from '../BlenderCube.vue'
1010
1111
const gl = {
1212
clearColor: '#4f4f4f',
@@ -30,15 +30,8 @@ const { effectComposer } = useRouteDisposal()
3030
<BlenderCube />
3131
</Suspense>
3232
<EffectComposer ref="effectComposer">
33-
<DepthOfField
34-
:focus-distance="0"
35-
:focal-length="0.02"
36-
:bokeh-scale="2"
37-
/>
38-
<Vignette
39-
:darkness="0.9"
40-
:offset="0.3"
41-
/>
33+
<DepthOfField :focus-distance="0" :focal-length="0.02" :bokeh-scale="2" />
34+
<Vignette :darkness="0.9" :offset="0.3" />
4235
</EffectComposer>
4336
<TresAmbientLight :intensity="1" />
4437
</TresCanvas>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<script setup lang="ts">
2+
import { Text3D } from '@tresjs/cientos'
3+
import { TresCanvas } from '@tresjs/core'
4+
import { EffectComposer, Glitch } from '@tresjs/post-processing/three'
5+
6+
import { Color } from 'three'
7+
8+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
9+
10+
const gl = {
11+
clearColor: '#121212',
12+
shadows: true,
13+
alpha: false,
14+
}
15+
16+
// Need to dispose of the effect composer when the route changes because Vitepress doesnt unmount the components
17+
const { effectComposer } = useRouteDisposal()
18+
</script>
19+
20+
<template>
21+
<TresCanvas v-bind="gl">
22+
<TresPerspectiveCamera
23+
:position="[0, 1, 5]"
24+
:look-at="[0, 1, 0]"
25+
/>
26+
<Suspense>
27+
<Text3D
28+
:position="[0, 1, 0]"
29+
text="Three glitch"
30+
font="https://raw.githubusercontent.com/Tresjs/assets/main/fonts/FiraCodeRegular.json"
31+
>
32+
<TresMeshStandardMaterial
33+
color="hotpink"
34+
:emissive="new Color('hotpink')"
35+
:emissive-intensity="1.2"
36+
/>
37+
</Text3D>
38+
</Suspense>
39+
<TresGridHelper />
40+
41+
<TresAmbientLight :intensity="2" />
42+
<TresDirectionalLight
43+
:position="[3, 3, 3]"
44+
:intensity="1"
45+
/>
46+
<Suspense>
47+
<EffectComposer ref="effectComposer">
48+
<Glitch />
49+
</EffectComposer>
50+
</Suspense>
51+
</TresCanvas>
52+
</template>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<script lang="ts" setup>
2+
import { OrbitControls } from '@tresjs/cientos'
3+
import { TresCanvas } from '@tresjs/core'
4+
import { EffectComposer, Halftone } from '@tresjs/post-processing/three'
5+
6+
import { useRouteDisposal } from '../../composables/useRouteDisposal'
7+
8+
// Need to dispose of the effect composer when the route changes because Vitepress doesnt unmount the components
9+
const { effectComposer } = useRouteDisposal()
10+
</script>
11+
12+
<template>
13+
<TresCanvas
14+
clear-color="#121212"
15+
:alpha="false"
16+
:shadows="true"
17+
>
18+
<TresPerspectiveCamera
19+
:position="[3, 2, 4]"
20+
:look-at="[0, 0, 0]"
21+
/>
22+
<OrbitControls />
23+
<TresMesh
24+
:position="[1, 0.5, 1]"
25+
>
26+
<TresBoxGeometry />
27+
<TresMeshStandardMaterial
28+
color="hotpink"
29+
/>
30+
</TresMesh>
31+
<TresMesh
32+
:position="[-1.5, 0.75, 0]"
33+
>
34+
<TresConeGeometry :args="[1, 1.5, 4, 1, false, Math.PI * 0.25]" />
35+
<TresMeshNormalMaterial />
36+
<TresMeshStandardMaterial
37+
color="aqua"
38+
/>
39+
</TresMesh>
40+
41+
<TresGridHelper />
42+
<TresAmbientLight :intensity="0.9" />
43+
<TresDirectionalLight
44+
:position="[-10, 5, 8]"
45+
:intensity="2"
46+
/>
47+
48+
<Suspense>
49+
<EffectComposer ref="effectComposer">
50+
<Halftone :shape="1" :radius="4" :rotateR="Math.PI / 12" :rotateG="Math.PI / 3" :rotateB="Math.PI / 6" :scatter="0" :blending="1" :greyscale="false" />
51+
</EffectComposer>
52+
</Suspense>
53+
</TresCanvas>
54+
</template>

0 commit comments

Comments
 (0)