ohzi-core 12.5.2 → 12.7.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 +9 -9
- package/build/index.mjs +1 -1
- package/build/index.mjs.map +1 -1
- package/build/index.module.js +2 -0
- package/build/index.module.js.map +1 -0
- package/package.json +64 -63
- package/src/.vscode/settings.json +2 -2
- package/src/BaseApplication.js +40 -40
- package/src/Browser.js +119 -119
- package/src/CameraManager.js +37 -37
- package/src/Capabilities.js +13 -13
- package/src/CustomBezierCurve.js +58 -58
- package/src/Debug.js +359 -359
- package/src/Graphics.js +507 -507
- package/src/Initializer.js +56 -56
- package/src/KeyboardInput.js +177 -177
- package/src/OS.js +59 -59
- package/src/OScreen.js +90 -90
- package/src/OrthographicCamera.js +36 -36
- package/src/PerspectiveCamera.js +34 -34
- package/src/ReflectionPlaneContext.js +22 -22
- package/src/RenderLayers.js +30 -30
- package/src/RenderLoop.js +125 -122
- package/src/RenderOrder.js +40 -40
- package/src/ResourceContainer.js +57 -57
- package/src/SceneManager.js +55 -55
- package/src/Screen.js +71 -71
- package/src/Time.js +99 -98
- package/src/UI.js +106 -106
- package/src/action_sequencer/ActionEvent.js +22 -22
- package/src/action_sequencer/ActionInterpolator.js +39 -39
- package/src/action_sequencer/ActionSequencer.js +338 -338
- package/src/action_sequencer/NumberInterpolator.js +42 -42
- package/src/action_sequencer/VectorInterpolator.js +34 -34
- package/src/blitter_index.js +14 -14
- package/src/canvas_drawer/CanvasDrawer.js +146 -146
- package/src/canvas_drawer/MultiLineTextDrawer.js +58 -58
- package/src/canvas_drawer/SimpleTextDrawer.js +55 -55
- package/src/components/AudioClip.js +67 -67
- package/src/components/AxisHelper.js +60 -60
- package/src/components/BaseObject.js +50 -50
- package/src/components/EdgeMesh.js +172 -172
- package/src/components/GeometryEdgeVisualizer.js +57 -57
- package/src/components/Grid.js +40 -40
- package/src/components/Line.js +225 -225
- package/src/components/MultiLinePath.js +25 -25
- package/src/components/MultiLineText2D.js +75 -75
- package/src/components/ObjectAxis.js +27 -27
- package/src/components/ObjectOrientedBoundingBox.js +228 -228
- package/src/components/PlaneHelper.js +38 -38
- package/src/components/Shape2D.js +52 -52
- package/src/components/Shape3D.js +46 -46
- package/src/components/Text2D.js +49 -49
- package/src/components/UIElement.js +246 -246
- package/src/components/UpdatableMaterialMesh.js +26 -26
- package/src/components/WorldImage.js +101 -101
- package/src/components/mouse_interactors/ObjectRotator.js +64 -64
- package/src/components/sdf_text/SDFText.js +156 -156
- package/src/components/sdf_text/SDFTextBatch.js +195 -195
- package/src/components/sdf_text/TextGlyph.js +17 -17
- package/src/data_textures/CustomDataTexture.js +53 -53
- package/src/data_textures/RGBADataTexture.js +14 -14
- package/src/data_textures/RGBAFloatDataTexture.js +14 -14
- package/src/data_textures/RGBDataTexture.js +14 -14
- package/src/data_textures/RGBFloatDataTexture.js +13 -13
- package/src/editor/ManipulatorHandle.js +73 -73
- package/src/editor/ObjectEditor.js +68 -68
- package/src/editor/ObjectManipulator.js +112 -112
- package/src/editor/ObjectPicker.js +77 -77
- package/src/editor/shaders/object_picker.frag +5 -5
- package/src/editor/shaders/object_picker.vert +7 -7
- package/src/gpu_particles/GPUParticleSystem.js +111 -111
- package/src/gpu_particles/ParticleAttribute.js +89 -89
- package/src/gpu_particles/ParticlePositionAttribute.js +42 -42
- package/src/html_utilities/CSSAnimator.js +66 -66
- package/src/html_utilities/css_animator_states/Animating.js +46 -46
- package/src/html_utilities/css_animator_states/Idle.js +27 -27
- package/src/index.js +134 -134
- package/src/loaders/AsyncAbstractLoader.js +160 -160
- package/src/loaders/AsyncAudiosLoader.js +34 -34
- package/src/loaders/AsyncObjectsLoader.js +44 -44
- package/src/loaders/AsyncTexturesLoader.js +81 -70
- package/src/loaders/assets_loader/AsyncAssetsLoaderWorker.js +69 -69
- package/src/loaders/assets_loader/ResourceContainer.js +37 -37
- package/src/loaders/assets_loader/ResourceLoaderChecker.js +39 -39
- package/src/materials/AddMaterial.js +20 -20
- package/src/materials/AlphaFilterMaterial.js +23 -23
- package/src/materials/BaseShaderMaterial.js +21 -21
- package/src/materials/BlitMaterial.js +30 -30
- package/src/materials/BloomComposeMaterial.js +24 -24
- package/src/materials/BoxBlurMaterial.js +16 -16
- package/src/materials/ClearAlphaMaterial.js +15 -15
- package/src/materials/ClearColorMaterial.js +33 -33
- package/src/materials/ClearDepthNormalMaterial.js +16 -16
- package/src/materials/DeferredRendererComposeMaterial.js +35 -35
- package/src/materials/DepthNormalMaterial.js +30 -30
- package/src/materials/DisplayNormalTextureMaterial.js +18 -18
- package/src/materials/DualFilteringBlurMaterial.js +14 -14
- package/src/materials/FXAAMaterial.js +12 -12
- package/src/materials/GaussianBlurMaterial.js +40 -40
- package/src/materials/LuminosityHighPassMaterial.js +26 -26
- package/src/materials/MedianFilterMaterial.js +45 -45
- package/src/materials/NormalMaterial.js +19 -19
- package/src/materials/SDFScreenTextMaterial.js +34 -34
- package/src/materials/SDFTextMaterial.js +41 -41
- package/src/materials/SSAOComposeMaterial.js +14 -14
- package/src/materials/SSAOMaterial.js +65 -65
- package/src/materials/ScreenSpaceTextureMaterial.js +67 -67
- package/src/materials/UIElementMaterial.js +30 -30
- package/src/materials/UnrealBloomComposeMaterial.js +100 -100
- package/src/materials/UnrealBlurMaterial.js +20 -20
- package/src/materials/UnrealComposeMaterial.js +27 -27
- package/src/materials/ViewPositionMaterial.js +19 -19
- package/src/materials/deferred/DeferredPointLightMaterial.js +42 -42
- package/src/materials/gpu_particles/AttributeUpdateMaterial.js +37 -37
- package/src/materials/gpu_particles/BasicParticleMaterial.js +25 -25
- package/src/materials/gpu_particles/ParticleStorageMaterial.js +37 -37
- package/src/materials/gpu_particles/PositionStorageMaterial.js +26 -26
- package/src/object_pool/Pool.js +75 -75
- package/src/primitives/Arrow.js +62 -62
- package/src/primitives/Cube.js +24 -24
- package/src/primitives/HorizontalPlane.js +27 -27
- package/src/primitives/Sphere.js +22 -22
- package/src/primitives/VerticalPlane.js +26 -26
- package/src/raycast/GroupRaycaster.js +43 -43
- package/src/raycast/PlaneDragResolver.js +92 -92
- package/src/raycast/PlaneRaycastResolver.js +24 -24
- package/src/raycast/PlaneRaycaster.js +25 -25
- package/src/raycast/RaycastResolver.js +24 -24
- package/src/raycast/SurfaceDragResolver.js +80 -80
- package/src/raycast/states/BaseState.js +18 -18
- package/src/raycast/states/IdleState.js +19 -19
- package/src/raycast/states/OnRaycastEnter.js +17 -17
- package/src/raycast/states/OnRaycastExit.js +18 -18
- package/src/raycast/states/OnRaycastHover.js +27 -27
- package/src/render_mode/BaseRender.js +34 -34
- package/src/render_mode/BloomRender.js +63 -63
- package/src/render_mode/DebugNormalsRender.js +22 -22
- package/src/render_mode/DeferredRender.js +110 -110
- package/src/render_mode/NormalAORender.js +72 -72
- package/src/render_mode/NormalRender.js +38 -38
- package/src/render_mode/OutlineRender.js +157 -157
- package/src/render_mode/PlanarReflectionsRender.js +121 -121
- package/src/render_mode/UnrealBloomRender.js +123 -123
- package/src/render_mode/VRRender.js +71 -71
- package/src/render_utilities/Blitter.js +101 -101
- package/src/render_utilities/Blurrer.js +31 -31
- package/src/render_utilities/DepthAndNormalsRenderer.js +47 -47
- package/src/render_utilities/DualFilteringBlurrer.js +58 -58
- package/src/render_utilities/GaussianBlurrer.js +167 -167
- package/src/render_utilities/MedianFilter.js +68 -68
- package/src/render_utilities/ViewPositionRenderer.js +50 -50
- package/src/resource_loader/BasisLoader.js +51 -51
- package/src/resource_loader/FontLoader.js +48 -48
- package/src/resource_loader/JSONLoader.js +35 -35
- package/src/resource_loader/OBJLoader.js +48 -48
- package/src/resource_loader/PointArrayLoader.js +72 -72
- package/src/resource_loader/RGBETextureLoader.js +48 -48
- package/src/resource_loader/VideoLoader.js +32 -32
- package/src/scenes/AbstractScene.js +175 -175
- package/src/scenes/loading_states/CompilatorManager.js +41 -41
- package/src/scenes/loading_states/HighQualityLoadingState.js +28 -28
- package/src/scenes/loading_states/LoadingState.js +117 -117
- package/src/scenes/loading_states/RegularLoadingState.js +41 -41
- package/src/shaders/add/add.frag +27 -27
- package/src/shaders/anti_aliasing/fxaa.frag +72 -72
- package/src/shaders/basic_color/basic_color.frag +5 -5
- package/src/shaders/basic_color/basic_color.vert +9 -9
- package/src/shaders/basic_line/basic_line.frag +36 -36
- package/src/shaders/basic_line/basic_line.vert +37 -37
- package/src/shaders/basic_texture/basic_texture.frag +9 -9
- package/src/shaders/basic_texture/basic_texture.vert +16 -16
- package/src/shaders/bloom/bloom_compose_frag.glsl +22 -22
- package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -13
- package/src/shaders/box_blur/box_blur.frag +24 -24
- package/src/shaders/box_blur/compose.frag +31 -31
- package/src/shaders/clear/clear_depth_normal.frag +24 -24
- package/src/shaders/copy/copy.frag +6 -6
- package/src/shaders/copy/copy.vert +5 -5
- package/src/shaders/deferred/blit_copy.vert +11 -11
- package/src/shaders/deferred/deferred_compose.frag +59 -59
- package/src/shaders/deferred/point_light.frag +66 -66
- package/src/shaders/deferred/point_light.vert +13 -13
- package/src/shaders/depth_normals/debug_normals.frag +47 -47
- package/src/shaders/depth_normals/depth_normals.frag +30 -30
- package/src/shaders/depth_normals/depth_normals.vert +12 -12
- package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -14
- package/src/shaders/dual_filter_blur/downsample.frag +21 -21
- package/src/shaders/dual_filter_blur/upsample.frag +24 -24
- package/src/shaders/edge_visualizer/edge_visualizer.frag +17 -17
- package/src/shaders/edge_visualizer/edge_visualizer.vert +15 -15
- package/src/shaders/edges/corners.frag +10 -10
- package/src/shaders/edges/corners.vert +30 -30
- package/src/shaders/edges/edges.frag +6 -6
- package/src/shaders/edges/edges.vert +27 -27
- package/src/shaders/gaussian_blur/gaussian_blur.frag +43 -43
- package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +36 -36
- package/src/shaders/gpu_particles/common_utils.glsl +12 -12
- package/src/shaders/gpu_particles/generic_storage.frag +6 -6
- package/src/shaders/gpu_particles/store/store_position.vert +14 -14
- package/src/shaders/gpu_particles/update/basic_update.frag +20 -20
- package/src/shaders/gpu_particles/visualize/visualize.frag +10 -10
- package/src/shaders/gpu_particles/visualize/visualize.vert +12 -12
- package/src/shaders/grid/grid.frag +16 -16
- package/src/shaders/grid/grid.vert +9 -9
- package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +37 -37
- package/src/shaders/median_filter/median_filter.frag +134 -134
- package/src/shaders/normal/normal.frag +6 -6
- package/src/shaders/normal/normal.vert +6 -6
- package/src/shaders/sdf_text/sdf_screen_text.frag +51 -51
- package/src/shaders/sdf_text/sdf_screen_text.vert +41 -41
- package/src/shaders/sdf_text/sdf_text.frag +53 -53
- package/src/shaders/sdf_text/sdf_text.vert +41 -41
- package/src/shaders/ssao/hbao.frag +264 -264
- package/src/shaders/ssao/ssao.frag +95 -95
- package/src/shaders/ssao/ssao.vert +10 -10
- package/src/shaders/ssao/ssao_compose.frag +14 -14
- package/src/shaders/transparent_mix/copy.frag +6 -6
- package/src/shaders/transparent_mix/transparent_mix.frag +18 -18
- package/src/shaders/transparent_mix/transparent_mix.vert +7 -7
- package/src/shaders/ui/ss_texture.frag +10 -10
- package/src/shaders/ui/ss_texture.vert +31 -31
- package/src/shaders/ui/ws_texture.vert +38 -38
- package/src/shaders/ui_element/ui_element.frag +11 -11
- package/src/shaders/ui_element/ui_element.vert +32 -32
- package/src/shaders/unreal_blur/unreal_blur.frag +24 -24
- package/src/shaders/unreal_blur/unreal_compose.frag +23 -23
- package/src/shaders/write_view_position/write_view_position.frag +6 -6
- package/src/shaders/write_view_position/write_view_position.vert +8 -8
- package/src/static_batcher/BatchedMesh.js +56 -56
- package/src/static_batcher/GeometryBatch.js +308 -308
- package/src/static_batcher/GeometryBatcher.js +64 -64
- package/src/static_batcher/MeshBatcher.js +58 -58
- package/src/ui/ui_element_position/ScreenSpacePosition.js +16 -16
- package/src/ui/ui_element_position/WorldSpacePosition.js +23 -23
- package/src/ui/ui_element_state/OnIdle.js +24 -24
- package/src/ui/ui_element_state/OnMouseEnter.js +39 -39
- package/src/ui/ui_element_state/OnMouseExit.js +22 -22
- package/src/ui/ui_element_state/OnMouseHover.js +46 -46
- package/src/ui/ui_element_state/UIElementState.js +34 -34
- package/src/utilities/ArrayUtilities.js +57 -57
- package/src/utilities/CameraUtilities.js +283 -283
- package/src/utilities/EasingFunctions.js +231 -231
- package/src/utilities/FrustumPointFitter.js +257 -257
- package/src/utilities/GeometryUtilities.js +76 -76
- package/src/utilities/HTMLUtilities.js +76 -76
- package/src/utilities/ImageUtilities.js +28 -28
- package/src/utilities/MeshSampler.js +206 -206
- package/src/utilities/ModelUtilities.js +162 -162
- package/src/utilities/OMath.js +158 -158
- package/src/utilities/OrthographicFrustumPointFitter.js +49 -49
- package/src/utilities/PerspectiveFrustumPointFitter.js +254 -254
- package/src/utilities/StringUtilities.js +43 -43
- package/src/utilities/TimeUtilities.js +24 -24
- package/src/utilities/Validation.js +36 -36
- package/src/view_components/ApplicationView.js +73 -73
- package/src/view_components/TransitionManager.js +75 -75
- package/src/view_components/ViewComponent.js +61 -61
- package/src/view_components/ViewComponentManager.js +69 -69
- package/src/view_components/ViewManager.js +145 -145
- package/src/view_components/ViewState.js +49 -49
- package/src/view_components/transition/ActionSequencerBuilder.js +124 -124
- package/src/view_components/transition/DrawIOAnimationSheet.js +92 -92
- package/src/view_components/transition/TransitionTable.js +54 -54
- package/src/view_components/transition/ViewStateTransitionHandler.js +106 -106
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
varying vec2 vUv;
|
|
2
|
-
uniform sampler2D blurTexture1;
|
|
3
|
-
uniform sampler2D blurTexture2;
|
|
4
|
-
uniform sampler2D blurTexture3;
|
|
5
|
-
uniform sampler2D blurTexture4;
|
|
6
|
-
uniform sampler2D blurTexture5;
|
|
7
|
-
|
|
8
|
-
uniform float bloomStrength;
|
|
9
|
-
uniform float bloomRadius;
|
|
10
|
-
uniform float bloomFactors[NUM_MIPS];
|
|
11
|
-
uniform vec3 bloomTintColors[NUM_MIPS];
|
|
12
|
-
|
|
13
|
-
float lerpBloomFactor(const in float factor) {
|
|
14
|
-
float mirrorFactor = 1.2 - factor;
|
|
15
|
-
return mix(factor, mirrorFactor, bloomRadius);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
vec4 sampleTex(sampler2D tex, vec2 uv)
|
|
19
|
-
{
|
|
20
|
-
vec4 col = texture2D( tex, uv);
|
|
21
|
-
#ifndef USE_LINEAR_COLOR_SPACE
|
|
22
|
-
col.rgb = pow(col.rgb, vec3(2.2));
|
|
23
|
-
#endif
|
|
24
|
-
return col;
|
|
25
|
-
}
|
|
26
|
-
void main() {
|
|
27
|
-
gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * sampleTex(blurTexture1, vUv) +
|
|
28
|
-
lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * sampleTex(blurTexture2, vUv) +
|
|
29
|
-
lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * sampleTex(blurTexture3, vUv) +
|
|
30
|
-
lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * sampleTex(blurTexture4, vUv) +
|
|
31
|
-
lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * sampleTex(blurTexture5, vUv) );
|
|
32
|
-
|
|
33
|
-
#ifndef USE_LINEAR_COLOR_SPACE
|
|
34
|
-
gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.4545));
|
|
35
|
-
#endif
|
|
36
|
-
}
|
|
1
|
+
varying vec2 vUv;
|
|
2
|
+
uniform sampler2D blurTexture1;
|
|
3
|
+
uniform sampler2D blurTexture2;
|
|
4
|
+
uniform sampler2D blurTexture3;
|
|
5
|
+
uniform sampler2D blurTexture4;
|
|
6
|
+
uniform sampler2D blurTexture5;
|
|
7
|
+
|
|
8
|
+
uniform float bloomStrength;
|
|
9
|
+
uniform float bloomRadius;
|
|
10
|
+
uniform float bloomFactors[NUM_MIPS];
|
|
11
|
+
uniform vec3 bloomTintColors[NUM_MIPS];
|
|
12
|
+
|
|
13
|
+
float lerpBloomFactor(const in float factor) {
|
|
14
|
+
float mirrorFactor = 1.2 - factor;
|
|
15
|
+
return mix(factor, mirrorFactor, bloomRadius);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
vec4 sampleTex(sampler2D tex, vec2 uv)
|
|
19
|
+
{
|
|
20
|
+
vec4 col = texture2D( tex, uv);
|
|
21
|
+
#ifndef USE_LINEAR_COLOR_SPACE
|
|
22
|
+
col.rgb = pow(col.rgb, vec3(2.2));
|
|
23
|
+
#endif
|
|
24
|
+
return col;
|
|
25
|
+
}
|
|
26
|
+
void main() {
|
|
27
|
+
gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * sampleTex(blurTexture1, vUv) +
|
|
28
|
+
lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * sampleTex(blurTexture2, vUv) +
|
|
29
|
+
lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * sampleTex(blurTexture3, vUv) +
|
|
30
|
+
lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * sampleTex(blurTexture4, vUv) +
|
|
31
|
+
lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * sampleTex(blurTexture5, vUv) );
|
|
32
|
+
|
|
33
|
+
#ifndef USE_LINEAR_COLOR_SPACE
|
|
34
|
+
gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.4545));
|
|
35
|
+
#endif
|
|
36
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#define range 10.0
|
|
2
|
-
vec3 pack_position(vec3 position)
|
|
3
|
-
{
|
|
4
|
-
vec3 pos = (position/range) * 0.5 + vec3(0.5, 0.5,0.5);
|
|
5
|
-
pos.x = clamp(pos.x, 0.0, 1.0);
|
|
6
|
-
pos.y = clamp(pos.y, 0.0, 1.0);
|
|
7
|
-
pos.z = clamp(pos.z, 0.0, 1.0);
|
|
8
|
-
return pos;
|
|
9
|
-
}
|
|
10
|
-
vec3 unpack_position(vec3 pos)
|
|
11
|
-
{
|
|
12
|
-
return (pos * 2.0 - vec3(1.0, 1.0, 1.0)) * range;
|
|
1
|
+
#define range 10.0
|
|
2
|
+
vec3 pack_position(vec3 position)
|
|
3
|
+
{
|
|
4
|
+
vec3 pos = (position/range) * 0.5 + vec3(0.5, 0.5,0.5);
|
|
5
|
+
pos.x = clamp(pos.x, 0.0, 1.0);
|
|
6
|
+
pos.y = clamp(pos.y, 0.0, 1.0);
|
|
7
|
+
pos.z = clamp(pos.z, 0.0, 1.0);
|
|
8
|
+
return pos;
|
|
9
|
+
}
|
|
10
|
+
vec3 unpack_position(vec3 pos)
|
|
11
|
+
{
|
|
12
|
+
return (pos * 2.0 - vec3(1.0, 1.0, 1.0)) * range;
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
varying vec4 value;
|
|
2
|
-
|
|
3
|
-
void main()
|
|
4
|
-
{
|
|
5
|
-
gl_FragColor = value;
|
|
6
|
-
}
|
|
1
|
+
varying vec4 value;
|
|
2
|
+
|
|
3
|
+
void main()
|
|
4
|
+
{
|
|
5
|
+
gl_FragColor = value;
|
|
6
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
varying vec4 value;
|
|
4
|
-
|
|
5
|
-
attribute vec2 storage_uv;
|
|
6
|
-
//#include <gpu_particles_utils>
|
|
7
|
-
|
|
8
|
-
void main()
|
|
9
|
-
{
|
|
10
|
-
gl_Position = vec4(storage_uv * 2.0 - 1.0, 1.0,1.0);
|
|
11
|
-
gl_PointSize = 1.0;
|
|
12
|
-
|
|
13
|
-
value = vec4(position.xyz, 1.0);
|
|
14
|
-
}
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
varying vec4 value;
|
|
4
|
+
|
|
5
|
+
attribute vec2 storage_uv;
|
|
6
|
+
//#include <gpu_particles_utils>
|
|
7
|
+
|
|
8
|
+
void main()
|
|
9
|
+
{
|
|
10
|
+
gl_Position = vec4(storage_uv * 2.0 - 1.0, 1.0,1.0);
|
|
11
|
+
gl_PointSize = 1.0;
|
|
12
|
+
|
|
13
|
+
value = vec4(position.xyz, 1.0);
|
|
14
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
uniform sampler2D _MainTex;
|
|
2
|
-
uniform vec2 _Time;
|
|
3
|
-
uniform vec2 _Resolution;
|
|
4
|
-
|
|
5
|
-
varying vec2 vUv;
|
|
6
|
-
|
|
7
|
-
//#include <gpu_particles_utils>
|
|
8
|
-
|
|
9
|
-
void main()
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
gl_FragColor.xyz = texture2D( _MainTex, vUv).xyz;
|
|
13
|
-
gl_FragColor.y += 0.001;
|
|
14
|
-
|
|
15
|
-
gl_FragColor.xyz = gl_FragColor.xyz;
|
|
16
|
-
|
|
17
|
-
gl_FragColor.w = 1.0;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
uniform sampler2D _MainTex;
|
|
2
|
+
uniform vec2 _Time;
|
|
3
|
+
uniform vec2 _Resolution;
|
|
4
|
+
|
|
5
|
+
varying vec2 vUv;
|
|
6
|
+
|
|
7
|
+
//#include <gpu_particles_utils>
|
|
8
|
+
|
|
9
|
+
void main()
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
gl_FragColor.xyz = texture2D( _MainTex, vUv).xyz;
|
|
13
|
+
gl_FragColor.y += 0.001;
|
|
14
|
+
|
|
15
|
+
gl_FragColor.xyz = gl_FragColor.xyz;
|
|
16
|
+
|
|
17
|
+
gl_FragColor.w = 1.0;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
21
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
uniform float _Time;
|
|
2
|
-
void main()
|
|
3
|
-
{
|
|
4
|
-
vec2 uv = vec2(gl_PointCoord.x, 1.0 - gl_PointCoord.y);
|
|
5
|
-
float x = length(uv * 2.0 - 1.0);
|
|
6
|
-
|
|
7
|
-
float point = (1.0 - pow(x+0.75,10.0));
|
|
8
|
-
float halo = pow((1.0-x)*0.6, 2.0);
|
|
9
|
-
float alpha = mix(halo, point, point);
|
|
10
|
-
gl_FragColor = vec4(1.0, 0.0, 0.0, max(halo,point));
|
|
1
|
+
uniform float _Time;
|
|
2
|
+
void main()
|
|
3
|
+
{
|
|
4
|
+
vec2 uv = vec2(gl_PointCoord.x, 1.0 - gl_PointCoord.y);
|
|
5
|
+
float x = length(uv * 2.0 - 1.0);
|
|
6
|
+
|
|
7
|
+
float point = (1.0 - pow(x+0.75,10.0));
|
|
8
|
+
float halo = pow((1.0-x)*0.6, 2.0);
|
|
9
|
+
float alpha = mix(halo, point, point);
|
|
10
|
+
gl_FragColor = vec4(1.0, 0.0, 0.0, max(halo,point));
|
|
11
11
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
uniform sampler2D _Position;
|
|
3
|
-
attribute vec2 storage_uv;
|
|
4
|
-
|
|
5
|
-
void main()
|
|
6
|
-
{
|
|
7
|
-
vec3 pos = texture2DLod(_Position, storage_uv, 0.0).xyz;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(pos ,1.0);
|
|
11
|
-
gl_PointSize = 20.0;
|
|
12
|
-
}
|
|
1
|
+
|
|
2
|
+
uniform sampler2D _Position;
|
|
3
|
+
attribute vec2 storage_uv;
|
|
4
|
+
|
|
5
|
+
void main()
|
|
6
|
+
{
|
|
7
|
+
vec3 pos = texture2DLod(_Position, storage_uv, 0.0).xyz;
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(pos ,1.0);
|
|
11
|
+
gl_PointSize = 20.0;
|
|
12
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
uniform vec3 _Color;
|
|
2
|
-
|
|
3
|
-
varying vec3 vBarycentric;
|
|
4
|
-
|
|
5
|
-
float edgeFactor(vec3 baryc ){
|
|
6
|
-
vec3 d = fwidth(baryc);
|
|
7
|
-
vec3 a3 = smoothstep(vec3(0.0), d*1.5, baryc);
|
|
8
|
-
return min(min(a3.x, a3.y), a3.z);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
void main()
|
|
12
|
-
{
|
|
13
|
-
float alpha = edgeFactor(vBarycentric + vec3(1. , 1., 0.));
|
|
14
|
-
gl_FragColor.rgb = mix(_Color, vec3(0.), alpha);
|
|
15
|
-
gl_FragColor.a = 1.0 - alpha;
|
|
16
|
-
gl_FragColor.a *= 0.2;
|
|
1
|
+
uniform vec3 _Color;
|
|
2
|
+
|
|
3
|
+
varying vec3 vBarycentric;
|
|
4
|
+
|
|
5
|
+
float edgeFactor(vec3 baryc ){
|
|
6
|
+
vec3 d = fwidth(baryc);
|
|
7
|
+
vec3 a3 = smoothstep(vec3(0.0), d*1.5, baryc);
|
|
8
|
+
return min(min(a3.x, a3.y), a3.z);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
void main()
|
|
12
|
+
{
|
|
13
|
+
float alpha = edgeFactor(vBarycentric + vec3(1. , 1., 0.));
|
|
14
|
+
gl_FragColor.rgb = mix(_Color, vec3(0.), alpha);
|
|
15
|
+
gl_FragColor.a = 1.0 - alpha;
|
|
16
|
+
gl_FragColor.a *= 0.2;
|
|
17
17
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
attribute vec3 barycentric;
|
|
2
|
-
varying vec3 vBarycentric;
|
|
3
|
-
void main()
|
|
4
|
-
{
|
|
5
|
-
|
|
6
|
-
mat4 VP = projectionMatrix * viewMatrix;
|
|
7
|
-
vec3 pos = (modelMatrix * vec4(position, 1.0)).xyz;
|
|
8
|
-
gl_Position = VP * vec4(pos, 1.0);
|
|
9
|
-
vBarycentric = barycentric;
|
|
1
|
+
attribute vec3 barycentric;
|
|
2
|
+
varying vec3 vBarycentric;
|
|
3
|
+
void main()
|
|
4
|
+
{
|
|
5
|
+
|
|
6
|
+
mat4 VP = projectionMatrix * viewMatrix;
|
|
7
|
+
vec3 pos = (modelMatrix * vec4(position, 1.0)).xyz;
|
|
8
|
+
gl_Position = VP * vec4(pos, 1.0);
|
|
9
|
+
vBarycentric = barycentric;
|
|
10
10
|
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
uniform sampler2D _MainTex;
|
|
2
|
-
uniform vec3 defaultColor;
|
|
3
|
-
uniform float defaultOpacity;
|
|
4
|
-
uniform float luminosityThreshold;
|
|
5
|
-
uniform float smoothWidth;
|
|
6
|
-
|
|
7
|
-
varying vec2 vUv;
|
|
8
|
-
|
|
9
|
-
vec4 sampleTex(sampler2D tex, vec2 uv)
|
|
10
|
-
{
|
|
11
|
-
vec4 col = texture2D( tex, uv);
|
|
12
|
-
#ifndef USE_LINEAR_COLOR_SPACE
|
|
13
|
-
col.rgb = pow(col.rgb, vec3(2.2));
|
|
14
|
-
#endif
|
|
15
|
-
return col;
|
|
16
|
-
}
|
|
17
|
-
void main() {
|
|
18
|
-
|
|
19
|
-
vec4 texel = sampleTex( _MainTex, vUv );
|
|
20
|
-
|
|
21
|
-
vec3 luma = vec3( 0.299, 0.587, 0.114 );
|
|
22
|
-
|
|
23
|
-
float v = dot( texel.xyz, luma );
|
|
24
|
-
|
|
25
|
-
vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
|
|
26
|
-
|
|
27
|
-
float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );
|
|
28
|
-
|
|
29
|
-
gl_FragColor = mix( outputColor, texel, alpha );
|
|
30
|
-
|
|
31
|
-
// #include <colorspace_fragment>
|
|
32
|
-
|
|
33
|
-
#ifndef USE_LINEAR_COLOR_SPACE
|
|
34
|
-
gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.4545));
|
|
35
|
-
#endif
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
uniform sampler2D _MainTex;
|
|
2
|
+
uniform vec3 defaultColor;
|
|
3
|
+
uniform float defaultOpacity;
|
|
4
|
+
uniform float luminosityThreshold;
|
|
5
|
+
uniform float smoothWidth;
|
|
6
|
+
|
|
7
|
+
varying vec2 vUv;
|
|
8
|
+
|
|
9
|
+
vec4 sampleTex(sampler2D tex, vec2 uv)
|
|
10
|
+
{
|
|
11
|
+
vec4 col = texture2D( tex, uv);
|
|
12
|
+
#ifndef USE_LINEAR_COLOR_SPACE
|
|
13
|
+
col.rgb = pow(col.rgb, vec3(2.2));
|
|
14
|
+
#endif
|
|
15
|
+
return col;
|
|
16
|
+
}
|
|
17
|
+
void main() {
|
|
18
|
+
|
|
19
|
+
vec4 texel = sampleTex( _MainTex, vUv );
|
|
20
|
+
|
|
21
|
+
vec3 luma = vec3( 0.299, 0.587, 0.114 );
|
|
22
|
+
|
|
23
|
+
float v = dot( texel.xyz, luma );
|
|
24
|
+
|
|
25
|
+
vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
|
|
26
|
+
|
|
27
|
+
float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );
|
|
28
|
+
|
|
29
|
+
gl_FragColor = mix( outputColor, texel, alpha );
|
|
30
|
+
|
|
31
|
+
// #include <colorspace_fragment>
|
|
32
|
+
|
|
33
|
+
#ifndef USE_LINEAR_COLOR_SPACE
|
|
34
|
+
gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.4545));
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
|
|
38
38
|
}
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
/*
|
|
2
|
-
3x3 Median
|
|
3
|
-
|
|
4
|
-
GLSL 1.0
|
|
5
|
-
Morgan McGuire and Kyle Whitson, 2006
|
|
6
|
-
Williams College
|
|
7
|
-
http://graphics.cs.williams.edu
|
|
8
|
-
|
|
9
|
-
Copyright (c) Morgan McGuire and Williams College, 2006
|
|
10
|
-
All rights reserved.
|
|
11
|
-
|
|
12
|
-
Redistribution and use in source and binary forms, with or without
|
|
13
|
-
modification, are permitted provided that the following conditions are
|
|
14
|
-
met:
|
|
15
|
-
|
|
16
|
-
Redistributions of source code must retain the above copyright notice,
|
|
17
|
-
this list of conditions and the following disclaimer.
|
|
18
|
-
|
|
19
|
-
Redistributions in binary form must reproduce the above copyright
|
|
20
|
-
notice, this list of conditions and the following disclaimer in the
|
|
21
|
-
documentation and/or other materials provided with the distribution.
|
|
22
|
-
|
|
23
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
26
|
-
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
27
|
-
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
28
|
-
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
29
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
30
|
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
31
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
32
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
33
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
// Input texture
|
|
37
|
-
uniform sampler2D _SourceTex;
|
|
38
|
-
uniform vec2 _SourceTexSize;
|
|
39
|
-
varying vec2 vUv;
|
|
40
|
-
// Change these 2 defines to change precision
|
|
41
|
-
#define vec vec4
|
|
42
|
-
#define toVec(x) x.rgba
|
|
43
|
-
|
|
44
|
-
#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
|
|
45
|
-
#define t2(a, b) s2(v[a], v[b]);
|
|
46
|
-
#define t24(a, b, c, d, e, f, g, h) t2(a, b); t2(c, d); t2(e, f); t2(g, h);
|
|
47
|
-
#define t25(a, b, c, d, e, f, g, h, i, j) t24(a, b, c, d, e, f, g, h); t2(i, j);
|
|
48
|
-
|
|
49
|
-
#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
|
|
50
|
-
#define mn3(a, b, c) s2(a, b); s2(a, c);
|
|
51
|
-
#define mx3(a, b, c) s2(b, c); s2(a, c);
|
|
52
|
-
|
|
53
|
-
#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges
|
|
54
|
-
#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges
|
|
55
|
-
#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges
|
|
56
|
-
#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
void main() {
|
|
60
|
-
vec2 inv_size = vec2(1.0/_SourceTexSize.x, 1.0/_SourceTexSize.y);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
#ifdef kernel5x5
|
|
64
|
-
vec v[25];
|
|
65
|
-
|
|
66
|
-
// Add the pixels which make up our window to the pixel array.
|
|
67
|
-
for(int dX = -2; dX <= 2; ++dX) {
|
|
68
|
-
for(int dY = -2; dY <= 2; ++dY) {
|
|
69
|
-
vec2 offset = vec2(float(dX), float(dY));
|
|
70
|
-
|
|
71
|
-
// If a pixel in the window is located at (x+dX, y+dY), put it at index (dX + R)(2R + 1) + (dY + R) of the
|
|
72
|
-
// pixel array. This will fill the pixel array, with the top left pixel of the window at pixel[0] and the
|
|
73
|
-
// bottom right pixel of the window at pixel[N-1].
|
|
74
|
-
v[(dX + 2) * 5 + (dY + 2)] = toVec(texture2D(_SourceTex, vUv + offset * inv_size));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
vec temp;
|
|
79
|
-
|
|
80
|
-
t25(0, 1, 3, 4, 2, 4, 2, 3, 6, 7);
|
|
81
|
-
t25(5, 7, 5, 6, 9, 7, 1, 7, 1, 4);
|
|
82
|
-
t25(12, 13, 11, 13, 11, 12, 15, 16, 14, 16);
|
|
83
|
-
t25(14, 15, 18, 19, 17, 19, 17, 18, 21, 22);
|
|
84
|
-
t25(20, 22, 20, 21, 23, 24, 2, 5, 3, 6);
|
|
85
|
-
t25(0, 6, 0, 3, 4, 7, 1, 7, 1, 4);
|
|
86
|
-
t25(11, 14, 8, 14, 8, 11, 12, 15, 9, 15);
|
|
87
|
-
t25(9, 12, 13, 16, 10, 16, 10, 13, 20, 23);
|
|
88
|
-
t25(17, 23, 17, 20, 21, 24, 18, 24, 18, 21);
|
|
89
|
-
t25(19, 22, 8, 17, 9, 18, 0, 18, 0, 9);
|
|
90
|
-
t25(10, 19, 1, 19, 1, 10, 11, 20, 2, 20);
|
|
91
|
-
t25(2, 11, 12, 21, 3, 21, 3, 12, 13, 22);
|
|
92
|
-
t25(4, 22, 4, 13, 14, 23, 5, 23, 5, 14);
|
|
93
|
-
t25(15, 24, 6, 24, 6, 15, 7, 16, 7, 19);
|
|
94
|
-
t25(3, 11, 5, 17, 11, 17, 9, 17, 4, 10);
|
|
95
|
-
t25(6, 12, 7, 14, 4, 6, 4, 7, 12, 14);
|
|
96
|
-
t25(10, 14, 6, 7, 10, 12, 6, 10, 6, 17);
|
|
97
|
-
t25(12, 17, 7, 17, 7, 10, 12, 18, 7, 12);
|
|
98
|
-
t24(10, 18, 12, 20, 10, 20, 10, 12);
|
|
99
|
-
gl_FragColor = v[12];
|
|
100
|
-
#endif
|
|
101
|
-
|
|
102
|
-
#ifdef kernel3x3
|
|
103
|
-
vec v[9];
|
|
104
|
-
|
|
105
|
-
// Add the pixels which make up our window to the pixel array.
|
|
106
|
-
for(int dX = -1; dX <= 1; ++dX) {
|
|
107
|
-
for(int dY = -1; dY <= 1; ++dY) {
|
|
108
|
-
vec2 offset = vec2(float(dX), float(dY));
|
|
109
|
-
|
|
110
|
-
// If a pixel in the window is located at (x+dX, y+dY), put it at index (dX + R)(2R + 1) + (dY + R) of the
|
|
111
|
-
// pixel array. This will fill the pixel array, with the top left pixel of the window at pixel[0] and the
|
|
112
|
-
// bottom right pixel of the window at pixel[N-1].
|
|
113
|
-
v[(dX + 1) * 3 + (dY + 1)] = toVec(texture2D(_SourceTex, vUv + offset * inv_size));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
vec temp;
|
|
118
|
-
|
|
119
|
-
// Starting with a subset of size 6, remove the min and max each time
|
|
120
|
-
mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]);
|
|
121
|
-
mnmx5(v[1], v[2], v[3], v[4], v[6]);
|
|
122
|
-
mnmx4(v[2], v[3], v[4], v[7]);
|
|
123
|
-
mnmx3(v[3], v[4], v[8]);
|
|
124
|
-
toVec(gl_FragColor) = v[4];
|
|
125
|
-
#endif
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
// if(vUv.x > 0.5)
|
|
129
|
-
// gl_FragColor = vec4(1.0);
|
|
130
|
-
// else
|
|
131
|
-
// gl_FragColor = vec4(0.0);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
1
|
+
/*
|
|
2
|
+
3x3 Median
|
|
3
|
+
|
|
4
|
+
GLSL 1.0
|
|
5
|
+
Morgan McGuire and Kyle Whitson, 2006
|
|
6
|
+
Williams College
|
|
7
|
+
http://graphics.cs.williams.edu
|
|
8
|
+
|
|
9
|
+
Copyright (c) Morgan McGuire and Williams College, 2006
|
|
10
|
+
All rights reserved.
|
|
11
|
+
|
|
12
|
+
Redistribution and use in source and binary forms, with or without
|
|
13
|
+
modification, are permitted provided that the following conditions are
|
|
14
|
+
met:
|
|
15
|
+
|
|
16
|
+
Redistributions of source code must retain the above copyright notice,
|
|
17
|
+
this list of conditions and the following disclaimer.
|
|
18
|
+
|
|
19
|
+
Redistributions in binary form must reproduce the above copyright
|
|
20
|
+
notice, this list of conditions and the following disclaimer in the
|
|
21
|
+
documentation and/or other materials provided with the distribution.
|
|
22
|
+
|
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
26
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
27
|
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
28
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
29
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
30
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
31
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
32
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
33
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
// Input texture
|
|
37
|
+
uniform sampler2D _SourceTex;
|
|
38
|
+
uniform vec2 _SourceTexSize;
|
|
39
|
+
varying vec2 vUv;
|
|
40
|
+
// Change these 2 defines to change precision
|
|
41
|
+
#define vec vec4
|
|
42
|
+
#define toVec(x) x.rgba
|
|
43
|
+
|
|
44
|
+
#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
|
|
45
|
+
#define t2(a, b) s2(v[a], v[b]);
|
|
46
|
+
#define t24(a, b, c, d, e, f, g, h) t2(a, b); t2(c, d); t2(e, f); t2(g, h);
|
|
47
|
+
#define t25(a, b, c, d, e, f, g, h, i, j) t24(a, b, c, d, e, f, g, h); t2(i, j);
|
|
48
|
+
|
|
49
|
+
#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b);
|
|
50
|
+
#define mn3(a, b, c) s2(a, b); s2(a, c);
|
|
51
|
+
#define mx3(a, b, c) s2(b, c); s2(a, c);
|
|
52
|
+
|
|
53
|
+
#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges
|
|
54
|
+
#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges
|
|
55
|
+
#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges
|
|
56
|
+
#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
void main() {
|
|
60
|
+
vec2 inv_size = vec2(1.0/_SourceTexSize.x, 1.0/_SourceTexSize.y);
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
#ifdef kernel5x5
|
|
64
|
+
vec v[25];
|
|
65
|
+
|
|
66
|
+
// Add the pixels which make up our window to the pixel array.
|
|
67
|
+
for(int dX = -2; dX <= 2; ++dX) {
|
|
68
|
+
for(int dY = -2; dY <= 2; ++dY) {
|
|
69
|
+
vec2 offset = vec2(float(dX), float(dY));
|
|
70
|
+
|
|
71
|
+
// If a pixel in the window is located at (x+dX, y+dY), put it at index (dX + R)(2R + 1) + (dY + R) of the
|
|
72
|
+
// pixel array. This will fill the pixel array, with the top left pixel of the window at pixel[0] and the
|
|
73
|
+
// bottom right pixel of the window at pixel[N-1].
|
|
74
|
+
v[(dX + 2) * 5 + (dY + 2)] = toVec(texture2D(_SourceTex, vUv + offset * inv_size));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
vec temp;
|
|
79
|
+
|
|
80
|
+
t25(0, 1, 3, 4, 2, 4, 2, 3, 6, 7);
|
|
81
|
+
t25(5, 7, 5, 6, 9, 7, 1, 7, 1, 4);
|
|
82
|
+
t25(12, 13, 11, 13, 11, 12, 15, 16, 14, 16);
|
|
83
|
+
t25(14, 15, 18, 19, 17, 19, 17, 18, 21, 22);
|
|
84
|
+
t25(20, 22, 20, 21, 23, 24, 2, 5, 3, 6);
|
|
85
|
+
t25(0, 6, 0, 3, 4, 7, 1, 7, 1, 4);
|
|
86
|
+
t25(11, 14, 8, 14, 8, 11, 12, 15, 9, 15);
|
|
87
|
+
t25(9, 12, 13, 16, 10, 16, 10, 13, 20, 23);
|
|
88
|
+
t25(17, 23, 17, 20, 21, 24, 18, 24, 18, 21);
|
|
89
|
+
t25(19, 22, 8, 17, 9, 18, 0, 18, 0, 9);
|
|
90
|
+
t25(10, 19, 1, 19, 1, 10, 11, 20, 2, 20);
|
|
91
|
+
t25(2, 11, 12, 21, 3, 21, 3, 12, 13, 22);
|
|
92
|
+
t25(4, 22, 4, 13, 14, 23, 5, 23, 5, 14);
|
|
93
|
+
t25(15, 24, 6, 24, 6, 15, 7, 16, 7, 19);
|
|
94
|
+
t25(3, 11, 5, 17, 11, 17, 9, 17, 4, 10);
|
|
95
|
+
t25(6, 12, 7, 14, 4, 6, 4, 7, 12, 14);
|
|
96
|
+
t25(10, 14, 6, 7, 10, 12, 6, 10, 6, 17);
|
|
97
|
+
t25(12, 17, 7, 17, 7, 10, 12, 18, 7, 12);
|
|
98
|
+
t24(10, 18, 12, 20, 10, 20, 10, 12);
|
|
99
|
+
gl_FragColor = v[12];
|
|
100
|
+
#endif
|
|
101
|
+
|
|
102
|
+
#ifdef kernel3x3
|
|
103
|
+
vec v[9];
|
|
104
|
+
|
|
105
|
+
// Add the pixels which make up our window to the pixel array.
|
|
106
|
+
for(int dX = -1; dX <= 1; ++dX) {
|
|
107
|
+
for(int dY = -1; dY <= 1; ++dY) {
|
|
108
|
+
vec2 offset = vec2(float(dX), float(dY));
|
|
109
|
+
|
|
110
|
+
// If a pixel in the window is located at (x+dX, y+dY), put it at index (dX + R)(2R + 1) + (dY + R) of the
|
|
111
|
+
// pixel array. This will fill the pixel array, with the top left pixel of the window at pixel[0] and the
|
|
112
|
+
// bottom right pixel of the window at pixel[N-1].
|
|
113
|
+
v[(dX + 1) * 3 + (dY + 1)] = toVec(texture2D(_SourceTex, vUv + offset * inv_size));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
vec temp;
|
|
118
|
+
|
|
119
|
+
// Starting with a subset of size 6, remove the min and max each time
|
|
120
|
+
mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]);
|
|
121
|
+
mnmx5(v[1], v[2], v[3], v[4], v[6]);
|
|
122
|
+
mnmx4(v[2], v[3], v[4], v[7]);
|
|
123
|
+
mnmx3(v[3], v[4], v[8]);
|
|
124
|
+
toVec(gl_FragColor) = v[4];
|
|
125
|
+
#endif
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
// if(vUv.x > 0.5)
|
|
129
|
+
// gl_FragColor = vec4(1.0);
|
|
130
|
+
// else
|
|
131
|
+
// gl_FragColor = vec4(0.0);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
varying vec3 v_normal;
|
|
2
|
-
|
|
3
|
-
void main()
|
|
4
|
-
{
|
|
5
|
-
gl_FragColor = vec4(v_normal * 0.5 + vec3(0.5), 1.0);
|
|
6
|
-
}
|
|
1
|
+
varying vec3 v_normal;
|
|
2
|
+
|
|
3
|
+
void main()
|
|
4
|
+
{
|
|
5
|
+
gl_FragColor = vec4(v_normal * 0.5 + vec3(0.5), 1.0);
|
|
6
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
varying vec3 v_normal;
|
|
2
|
-
void main()
|
|
3
|
-
{
|
|
4
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
5
|
-
v_normal = (modelMatrix * vec4(normal, 0.0)).xyz;
|
|
6
|
-
}
|
|
1
|
+
varying vec3 v_normal;
|
|
2
|
+
void main()
|
|
3
|
+
{
|
|
4
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
5
|
+
v_normal = (modelMatrix * vec4(normal, 0.0)).xyz;
|
|
6
|
+
}
|