@omerrgocmen/crewctl 1.0.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +193 -193
- package/orchestrator/README.md +473 -462
- package/orchestrator/config.default.json +79 -71
- package/orchestrator/roles/executor.md +57 -57
- package/orchestrator/roles/operator.md +77 -77
- package/orchestrator/roles/planner.md +58 -58
- package/orchestrator/roles/reviewer.md +63 -63
- package/orchestrator/skills/acceptance-criteria.md +18 -18
- package/orchestrator/skills/accessibility-audit.md +16 -16
- package/orchestrator/skills/accessible-forms.md +16 -16
- package/orchestrator/skills/api-design.md +27 -27
- package/orchestrator/skills/api-documentation.md +16 -16
- package/orchestrator/skills/architecture-decision-record.md +18 -18
- package/orchestrator/skills/authentication-design.md +16 -16
- package/orchestrator/skills/authorization-review.md +16 -16
- package/orchestrator/skills/backward-compatibility.md +17 -17
- package/orchestrator/skills/changelog-writing.md +16 -16
- package/orchestrator/skills/ci-pipeline-design.md +16 -16
- package/orchestrator/skills/cli-design.md +16 -16
- package/orchestrator/skills/code-review.md +27 -27
- package/orchestrator/skills/configuration-management.md +16 -16
- package/orchestrator/skills/container-review.md +16 -16
- package/orchestrator/skills/contract-testing.md +16 -16
- package/orchestrator/skills/dashboard-design.md +16 -16
- package/orchestrator/skills/database-migration.md +16 -16
- package/orchestrator/skills/database-schema-design.md +16 -16
- package/orchestrator/skills/debugging.md +26 -26
- package/orchestrator/skills/dependency-review.md +16 -16
- package/orchestrator/skills/design-review.md +29 -29
- package/orchestrator/skills/design-system.md +16 -16
- package/orchestrator/skills/docs-api-reference.md +16 -16
- package/orchestrator/skills/docs-troubleshooting.md +16 -16
- package/orchestrator/skills/docs-tutorial.md +16 -16
- package/orchestrator/skills/docs-writing.md +25 -25
- package/orchestrator/skills/empty-error-loading-states.md +16 -16
- package/orchestrator/skills/end-to-end-testing.md +16 -16
- package/orchestrator/skills/error-handling.md +16 -16
- package/orchestrator/skills/frontend-design.md +28 -28
- package/orchestrator/skills/git-commit-writing.md +16 -16
- package/orchestrator/skills/graphql-design.md +16 -16
- package/orchestrator/skills/incident-runbook.md +18 -18
- package/orchestrator/skills/input-validation.md +16 -16
- package/orchestrator/skills/integration-testing.md +16 -16
- package/orchestrator/skills/interaction-design.md +16 -16
- package/orchestrator/skills/landing-page-design.md +16 -16
- package/orchestrator/skills/observability-design.md +16 -16
- package/orchestrator/skills/openapi-contract.md +16 -16
- package/orchestrator/skills/performance-profiling.md +16 -16
- package/orchestrator/skills/privacy-review.md +16 -16
- package/orchestrator/skills/property-based-testing.md +16 -16
- package/orchestrator/skills/pull-request-writing.md +16 -16
- package/orchestrator/skills/refactoring.md +16 -16
- package/orchestrator/skills/release-readiness.md +16 -16
- package/orchestrator/skills/responsive-design.md +16 -16
- package/orchestrator/skills/secrets-management.md +16 -16
- package/orchestrator/skills/secure-file-upload.md +16 -16
- package/orchestrator/skills/security-review.md +26 -26
- package/orchestrator/skills/semantic-versioning.md +17 -17
- package/orchestrator/skills/seo-on-page.md +16 -16
- package/orchestrator/skills/seo-structured-data.md +16 -16
- package/orchestrator/skills/seo-technical-audit.md +16 -16
- package/orchestrator/skills/sql-query-review.md +16 -16
- package/orchestrator/skills/supply-chain-security.md +16 -16
- package/orchestrator/skills/test-strategy.md +16 -16
- package/orchestrator/skills/threat-modeling.md +16 -16
- package/orchestrator/skills/unit-testing.md +16 -16
- package/orchestrator/skills/write-tests.md +28 -28
- package/orchestrator/src/cli-registry.js +740 -616
- package/orchestrator/src/cli.js +140 -135
- package/orchestrator/src/doctor.js +64 -64
- package/orchestrator/src/engine.js +1735 -1552
- package/orchestrator/src/schedule.js +126 -126
- package/orchestrator/src/server.js +818 -766
- package/orchestrator/src/skill-registry.js +272 -272
- package/orchestrator/src/store.js +470 -399
- package/orchestrator/web/OrbitControls.js +1417 -1417
- package/orchestrator/web/board.html +146 -146
- package/orchestrator/web/code.html +213 -213
- package/orchestrator/web/flow.html +741 -741
- package/orchestrator/web/index.html +602 -588
- package/orchestrator/web/jsm/postprocessing/EffectComposer.js +231 -231
- package/orchestrator/web/jsm/postprocessing/MaskPass.js +104 -104
- package/orchestrator/web/jsm/postprocessing/Pass.js +95 -95
- package/orchestrator/web/jsm/postprocessing/RenderPass.js +99 -99
- package/orchestrator/web/jsm/postprocessing/ShaderPass.js +77 -77
- package/orchestrator/web/jsm/postprocessing/UnrealBloomPass.js +415 -415
- package/orchestrator/web/jsm/shaders/CopyShader.js +45 -45
- package/orchestrator/web/jsm/shaders/LuminosityHighPassShader.js +66 -66
- package/orchestrator/web/site.webmanifest +12 -12
- package/orchestrator/web/three.module.min.js +6 -6
- package/package.json +51 -51
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BufferGeometry,
|
|
3
|
-
Float32BufferAttribute,
|
|
4
|
-
OrthographicCamera,
|
|
5
|
-
Mesh
|
|
6
|
-
} from 'three';
|
|
7
|
-
|
|
8
|
-
class Pass {
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
|
|
12
|
-
this.isPass = true;
|
|
13
|
-
|
|
14
|
-
// if set to true, the pass is processed by the composer
|
|
15
|
-
this.enabled = true;
|
|
16
|
-
|
|
17
|
-
// if set to true, the pass indicates to swap read and write buffer after rendering
|
|
18
|
-
this.needsSwap = true;
|
|
19
|
-
|
|
20
|
-
// if set to true, the pass clears its buffer before rendering
|
|
21
|
-
this.clear = false;
|
|
22
|
-
|
|
23
|
-
// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
|
|
24
|
-
this.renderToScreen = false;
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
setSize( /* width, height */ ) {}
|
|
29
|
-
|
|
30
|
-
render( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {
|
|
31
|
-
|
|
32
|
-
console.error( 'THREE.Pass: .render() must be implemented in derived pass.' );
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
dispose() {}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Helper for passes that need to fill the viewport with a single quad.
|
|
41
|
-
|
|
42
|
-
const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
43
|
-
|
|
44
|
-
// https://github.com/mrdoob/three.js/pull/21358
|
|
45
|
-
|
|
46
|
-
class FullscreenTriangleGeometry extends BufferGeometry {
|
|
47
|
-
|
|
48
|
-
constructor() {
|
|
49
|
-
|
|
50
|
-
super();
|
|
51
|
-
|
|
52
|
-
this.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
|
|
53
|
-
this.setAttribute( 'uv', new Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const _geometry = new FullscreenTriangleGeometry();
|
|
60
|
-
|
|
61
|
-
class FullScreenQuad {
|
|
62
|
-
|
|
63
|
-
constructor( material ) {
|
|
64
|
-
|
|
65
|
-
this._mesh = new Mesh( _geometry, material );
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
dispose() {
|
|
70
|
-
|
|
71
|
-
this._mesh.geometry.dispose();
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
render( renderer ) {
|
|
76
|
-
|
|
77
|
-
renderer.render( this._mesh, _camera );
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
get material() {
|
|
82
|
-
|
|
83
|
-
return this._mesh.material;
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
set material( value ) {
|
|
88
|
-
|
|
89
|
-
this._mesh.material = value;
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export { Pass, FullScreenQuad };
|
|
1
|
+
import {
|
|
2
|
+
BufferGeometry,
|
|
3
|
+
Float32BufferAttribute,
|
|
4
|
+
OrthographicCamera,
|
|
5
|
+
Mesh
|
|
6
|
+
} from 'three';
|
|
7
|
+
|
|
8
|
+
class Pass {
|
|
9
|
+
|
|
10
|
+
constructor() {
|
|
11
|
+
|
|
12
|
+
this.isPass = true;
|
|
13
|
+
|
|
14
|
+
// if set to true, the pass is processed by the composer
|
|
15
|
+
this.enabled = true;
|
|
16
|
+
|
|
17
|
+
// if set to true, the pass indicates to swap read and write buffer after rendering
|
|
18
|
+
this.needsSwap = true;
|
|
19
|
+
|
|
20
|
+
// if set to true, the pass clears its buffer before rendering
|
|
21
|
+
this.clear = false;
|
|
22
|
+
|
|
23
|
+
// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
|
|
24
|
+
this.renderToScreen = false;
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
setSize( /* width, height */ ) {}
|
|
29
|
+
|
|
30
|
+
render( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {
|
|
31
|
+
|
|
32
|
+
console.error( 'THREE.Pass: .render() must be implemented in derived pass.' );
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
dispose() {}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Helper for passes that need to fill the viewport with a single quad.
|
|
41
|
+
|
|
42
|
+
const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
43
|
+
|
|
44
|
+
// https://github.com/mrdoob/three.js/pull/21358
|
|
45
|
+
|
|
46
|
+
class FullscreenTriangleGeometry extends BufferGeometry {
|
|
47
|
+
|
|
48
|
+
constructor() {
|
|
49
|
+
|
|
50
|
+
super();
|
|
51
|
+
|
|
52
|
+
this.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
|
|
53
|
+
this.setAttribute( 'uv', new Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const _geometry = new FullscreenTriangleGeometry();
|
|
60
|
+
|
|
61
|
+
class FullScreenQuad {
|
|
62
|
+
|
|
63
|
+
constructor( material ) {
|
|
64
|
+
|
|
65
|
+
this._mesh = new Mesh( _geometry, material );
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
dispose() {
|
|
70
|
+
|
|
71
|
+
this._mesh.geometry.dispose();
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
render( renderer ) {
|
|
76
|
+
|
|
77
|
+
renderer.render( this._mesh, _camera );
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get material() {
|
|
82
|
+
|
|
83
|
+
return this._mesh.material;
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
set material( value ) {
|
|
88
|
+
|
|
89
|
+
this._mesh.material = value;
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { Pass, FullScreenQuad };
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Color
|
|
3
|
-
} from 'three';
|
|
4
|
-
import { Pass } from './Pass.js';
|
|
5
|
-
|
|
6
|
-
class RenderPass extends Pass {
|
|
7
|
-
|
|
8
|
-
constructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) {
|
|
9
|
-
|
|
10
|
-
super();
|
|
11
|
-
|
|
12
|
-
this.scene = scene;
|
|
13
|
-
this.camera = camera;
|
|
14
|
-
|
|
15
|
-
this.overrideMaterial = overrideMaterial;
|
|
16
|
-
|
|
17
|
-
this.clearColor = clearColor;
|
|
18
|
-
this.clearAlpha = clearAlpha;
|
|
19
|
-
|
|
20
|
-
this.clear = true;
|
|
21
|
-
this.clearDepth = false;
|
|
22
|
-
this.needsSwap = false;
|
|
23
|
-
this._oldClearColor = new Color();
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
|
|
28
|
-
|
|
29
|
-
const oldAutoClear = renderer.autoClear;
|
|
30
|
-
renderer.autoClear = false;
|
|
31
|
-
|
|
32
|
-
let oldClearAlpha, oldOverrideMaterial;
|
|
33
|
-
|
|
34
|
-
if ( this.overrideMaterial !== null ) {
|
|
35
|
-
|
|
36
|
-
oldOverrideMaterial = this.scene.overrideMaterial;
|
|
37
|
-
|
|
38
|
-
this.scene.overrideMaterial = this.overrideMaterial;
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if ( this.clearColor !== null ) {
|
|
43
|
-
|
|
44
|
-
renderer.getClearColor( this._oldClearColor );
|
|
45
|
-
renderer.setClearColor( this.clearColor );
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if ( this.clearAlpha !== null ) {
|
|
50
|
-
|
|
51
|
-
oldClearAlpha = renderer.getClearAlpha();
|
|
52
|
-
renderer.setClearAlpha( this.clearAlpha );
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if ( this.clearDepth == true ) {
|
|
57
|
-
|
|
58
|
-
renderer.clearDepth();
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
|
|
63
|
-
|
|
64
|
-
if ( this.clear === true ) {
|
|
65
|
-
|
|
66
|
-
// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
|
|
67
|
-
renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
renderer.render( this.scene, this.camera );
|
|
72
|
-
|
|
73
|
-
// restore
|
|
74
|
-
|
|
75
|
-
if ( this.clearColor !== null ) {
|
|
76
|
-
|
|
77
|
-
renderer.setClearColor( this._oldClearColor );
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if ( this.clearAlpha !== null ) {
|
|
82
|
-
|
|
83
|
-
renderer.setClearAlpha( oldClearAlpha );
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if ( this.overrideMaterial !== null ) {
|
|
88
|
-
|
|
89
|
-
this.scene.overrideMaterial = oldOverrideMaterial;
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
renderer.autoClear = oldAutoClear;
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export { RenderPass };
|
|
1
|
+
import {
|
|
2
|
+
Color
|
|
3
|
+
} from 'three';
|
|
4
|
+
import { Pass } from './Pass.js';
|
|
5
|
+
|
|
6
|
+
class RenderPass extends Pass {
|
|
7
|
+
|
|
8
|
+
constructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) {
|
|
9
|
+
|
|
10
|
+
super();
|
|
11
|
+
|
|
12
|
+
this.scene = scene;
|
|
13
|
+
this.camera = camera;
|
|
14
|
+
|
|
15
|
+
this.overrideMaterial = overrideMaterial;
|
|
16
|
+
|
|
17
|
+
this.clearColor = clearColor;
|
|
18
|
+
this.clearAlpha = clearAlpha;
|
|
19
|
+
|
|
20
|
+
this.clear = true;
|
|
21
|
+
this.clearDepth = false;
|
|
22
|
+
this.needsSwap = false;
|
|
23
|
+
this._oldClearColor = new Color();
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
|
|
28
|
+
|
|
29
|
+
const oldAutoClear = renderer.autoClear;
|
|
30
|
+
renderer.autoClear = false;
|
|
31
|
+
|
|
32
|
+
let oldClearAlpha, oldOverrideMaterial;
|
|
33
|
+
|
|
34
|
+
if ( this.overrideMaterial !== null ) {
|
|
35
|
+
|
|
36
|
+
oldOverrideMaterial = this.scene.overrideMaterial;
|
|
37
|
+
|
|
38
|
+
this.scene.overrideMaterial = this.overrideMaterial;
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if ( this.clearColor !== null ) {
|
|
43
|
+
|
|
44
|
+
renderer.getClearColor( this._oldClearColor );
|
|
45
|
+
renderer.setClearColor( this.clearColor );
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if ( this.clearAlpha !== null ) {
|
|
50
|
+
|
|
51
|
+
oldClearAlpha = renderer.getClearAlpha();
|
|
52
|
+
renderer.setClearAlpha( this.clearAlpha );
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if ( this.clearDepth == true ) {
|
|
57
|
+
|
|
58
|
+
renderer.clearDepth();
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
|
|
63
|
+
|
|
64
|
+
if ( this.clear === true ) {
|
|
65
|
+
|
|
66
|
+
// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
|
|
67
|
+
renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
renderer.render( this.scene, this.camera );
|
|
72
|
+
|
|
73
|
+
// restore
|
|
74
|
+
|
|
75
|
+
if ( this.clearColor !== null ) {
|
|
76
|
+
|
|
77
|
+
renderer.setClearColor( this._oldClearColor );
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if ( this.clearAlpha !== null ) {
|
|
82
|
+
|
|
83
|
+
renderer.setClearAlpha( oldClearAlpha );
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if ( this.overrideMaterial !== null ) {
|
|
88
|
+
|
|
89
|
+
this.scene.overrideMaterial = oldOverrideMaterial;
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
renderer.autoClear = oldAutoClear;
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { RenderPass };
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ShaderMaterial,
|
|
3
|
-
UniformsUtils
|
|
4
|
-
} from 'three';
|
|
5
|
-
import { Pass, FullScreenQuad } from './Pass.js';
|
|
6
|
-
|
|
7
|
-
class ShaderPass extends Pass {
|
|
8
|
-
|
|
9
|
-
constructor( shader, textureID ) {
|
|
10
|
-
|
|
11
|
-
super();
|
|
12
|
-
|
|
13
|
-
this.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';
|
|
14
|
-
|
|
15
|
-
if ( shader instanceof ShaderMaterial ) {
|
|
16
|
-
|
|
17
|
-
this.uniforms = shader.uniforms;
|
|
18
|
-
|
|
19
|
-
this.material = shader;
|
|
20
|
-
|
|
21
|
-
} else if ( shader ) {
|
|
22
|
-
|
|
23
|
-
this.uniforms = UniformsUtils.clone( shader.uniforms );
|
|
24
|
-
|
|
25
|
-
this.material = new ShaderMaterial( {
|
|
26
|
-
|
|
27
|
-
name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
|
|
28
|
-
defines: Object.assign( {}, shader.defines ),
|
|
29
|
-
uniforms: this.uniforms,
|
|
30
|
-
vertexShader: shader.vertexShader,
|
|
31
|
-
fragmentShader: shader.fragmentShader
|
|
32
|
-
|
|
33
|
-
} );
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
this.fsQuad = new FullScreenQuad( this.material );
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
|
|
42
|
-
|
|
43
|
-
if ( this.uniforms[ this.textureID ] ) {
|
|
44
|
-
|
|
45
|
-
this.uniforms[ this.textureID ].value = readBuffer.texture;
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
this.fsQuad.material = this.material;
|
|
50
|
-
|
|
51
|
-
if ( this.renderToScreen ) {
|
|
52
|
-
|
|
53
|
-
renderer.setRenderTarget( null );
|
|
54
|
-
this.fsQuad.render( renderer );
|
|
55
|
-
|
|
56
|
-
} else {
|
|
57
|
-
|
|
58
|
-
renderer.setRenderTarget( writeBuffer );
|
|
59
|
-
// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
|
|
60
|
-
if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
|
|
61
|
-
this.fsQuad.render( renderer );
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
dispose() {
|
|
68
|
-
|
|
69
|
-
this.material.dispose();
|
|
70
|
-
|
|
71
|
-
this.fsQuad.dispose();
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export { ShaderPass };
|
|
1
|
+
import {
|
|
2
|
+
ShaderMaterial,
|
|
3
|
+
UniformsUtils
|
|
4
|
+
} from 'three';
|
|
5
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
6
|
+
|
|
7
|
+
class ShaderPass extends Pass {
|
|
8
|
+
|
|
9
|
+
constructor( shader, textureID ) {
|
|
10
|
+
|
|
11
|
+
super();
|
|
12
|
+
|
|
13
|
+
this.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';
|
|
14
|
+
|
|
15
|
+
if ( shader instanceof ShaderMaterial ) {
|
|
16
|
+
|
|
17
|
+
this.uniforms = shader.uniforms;
|
|
18
|
+
|
|
19
|
+
this.material = shader;
|
|
20
|
+
|
|
21
|
+
} else if ( shader ) {
|
|
22
|
+
|
|
23
|
+
this.uniforms = UniformsUtils.clone( shader.uniforms );
|
|
24
|
+
|
|
25
|
+
this.material = new ShaderMaterial( {
|
|
26
|
+
|
|
27
|
+
name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
|
|
28
|
+
defines: Object.assign( {}, shader.defines ),
|
|
29
|
+
uniforms: this.uniforms,
|
|
30
|
+
vertexShader: shader.vertexShader,
|
|
31
|
+
fragmentShader: shader.fragmentShader
|
|
32
|
+
|
|
33
|
+
} );
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.fsQuad = new FullScreenQuad( this.material );
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
|
|
42
|
+
|
|
43
|
+
if ( this.uniforms[ this.textureID ] ) {
|
|
44
|
+
|
|
45
|
+
this.uniforms[ this.textureID ].value = readBuffer.texture;
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this.fsQuad.material = this.material;
|
|
50
|
+
|
|
51
|
+
if ( this.renderToScreen ) {
|
|
52
|
+
|
|
53
|
+
renderer.setRenderTarget( null );
|
|
54
|
+
this.fsQuad.render( renderer );
|
|
55
|
+
|
|
56
|
+
} else {
|
|
57
|
+
|
|
58
|
+
renderer.setRenderTarget( writeBuffer );
|
|
59
|
+
// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
|
|
60
|
+
if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
|
|
61
|
+
this.fsQuad.render( renderer );
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
dispose() {
|
|
68
|
+
|
|
69
|
+
this.material.dispose();
|
|
70
|
+
|
|
71
|
+
this.fsQuad.dispose();
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { ShaderPass };
|