ohzi-core 5.13.2 → 5.14.2
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/{LICENSE.md → LICENSE} +1 -1
- package/build/index.module.js +1 -1
- package/build/index.module.js.map +1 -1
- package/package.json +12 -4
- package/src/.vscode/settings.json +3 -0
- package/src/BaseApplication.js +20 -0
- package/src/CameraManager.js +19 -0
- package/src/Capabilities.js +11 -0
- package/src/Configuration.js +22 -0
- package/src/CustomBezierCurve.js +44 -0
- package/src/Debug.js +260 -0
- package/src/EventManager.js +150 -0
- package/src/Graphics.js +334 -0
- package/src/Initializer.js +55 -0
- package/src/Input.js +21 -0
- package/src/KeyboardInput.js +128 -0
- package/src/OS.js +103 -0
- package/src/OrthographicCamera.js +13 -0
- package/src/PerspectiveCamera.js +13 -0
- package/src/ReflectionPlaneContext.js +17 -0
- package/src/RenderLayers.js +28 -0
- package/src/RenderLoop.js +97 -0
- package/src/RenderOrder.js +38 -0
- package/src/ResourceContainer.js +39 -0
- package/src/SceneManager.js +44 -0
- package/src/Screen.js +62 -0
- package/src/Time.js +38 -0
- package/src/UI.js +90 -0
- package/src/action_sequencer/ActionEvent.js +15 -0
- package/src/action_sequencer/ActionInterpolator.js +23 -0
- package/src/action_sequencer/ActionSequencer.js +195 -0
- package/src/action_sequencer/NumberInterpolator.js +24 -0
- package/src/action_sequencer/VectorInterpolator.js +20 -0
- package/src/blitter_index.js +13 -0
- package/src/canvas_drawer/CanvasDrawer.js +111 -0
- package/src/canvas_drawer/MultiLineTextDrawer.js +49 -0
- package/src/canvas_drawer/SimpleTextDrawer.js +47 -0
- package/src/components/AudioClip.js +41 -0
- package/src/components/AxisHelper.js +58 -0
- package/src/components/BaseObject.js +45 -0
- package/src/components/EdgeMesh.js +151 -0
- package/src/components/GeometryEdgeVisualizer.js +45 -0
- package/src/components/Grid.js +33 -0
- package/src/components/Line.js +199 -0
- package/src/components/MultiLinePath.js +19 -0
- package/src/components/MultiLineText2D.js +62 -0
- package/src/components/ObjectAxis.js +20 -0
- package/src/components/ObjectOrientedBoundingBox.js +201 -0
- package/src/components/PlaneHelper.js +36 -0
- package/src/components/Shape2D.js +42 -0
- package/src/components/Shape3D.js +38 -0
- package/src/components/Text2D.js +39 -0
- package/src/components/UIElement.js +208 -0
- package/src/components/UpdatableMaterialMesh.js +16 -0
- package/src/components/WorldImage.js +91 -0
- package/src/components/mouse_interactors/ObjectRotator.js +61 -0
- package/src/components/sdf_text/SDFText.js +154 -0
- package/src/components/sdf_text/SDFTextBatch.js +193 -0
- package/src/components/sdf_text/TextGlyph.js +15 -0
- package/src/editor/ManipulatorHandle.js +70 -0
- package/src/editor/ObjectEditor.js +66 -0
- package/src/editor/ObjectManipulator.js +118 -0
- package/src/editor/ObjectPicker.js +75 -0
- package/src/editor/shaders/object_picker.frag +6 -0
- package/src/editor/shaders/object_picker.vert +8 -0
- package/src/gpu_particles/GPUParticleSystem.js +87 -0
- package/src/gpu_particles/ParticleAttribute.js +83 -0
- package/src/gpu_particles/ParticlePositionAttribute.js +20 -0
- package/src/html_utilities/CSSAnimator.js +64 -0
- package/src/html_utilities/css_animator_states/Animating.js +45 -0
- package/src/html_utilities/css_animator_states/Idle.js +25 -0
- package/src/index.js +171 -0
- package/src/materials/AddMaterial.js +17 -0
- package/src/materials/AlphaFilterMaterial.js +20 -0
- package/src/materials/BaseShaderMaterial.js +19 -0
- package/src/materials/BlitMaterial.js +28 -0
- package/src/materials/BloomComposeMaterial.js +22 -0
- package/src/materials/BoxBlurMaterial.js +13 -0
- package/src/materials/ClearAlphaMaterial.js +13 -0
- package/src/materials/ClearColorMaterial.js +31 -0
- package/src/materials/ClearDepthNormalMaterial.js +13 -0
- package/src/materials/DeferredRendererComposeMaterial.js +32 -0
- package/src/materials/DepthNormalMaterial.js +28 -0
- package/src/materials/DisplayNormalTextureMaterial.js +15 -0
- package/src/materials/DualFilteringBlurMaterial.js +11 -0
- package/src/materials/FXAAMaterial.js +10 -0
- package/src/materials/GaussianBlurMaterial.js +28 -0
- package/src/materials/LuminosityHighPassMaterial.js +15 -0
- package/src/materials/MedianFilterMaterial.js +42 -0
- package/src/materials/NormalMaterial.js +17 -0
- package/src/materials/SDFScreenTextMaterial.js +31 -0
- package/src/materials/SDFTextMaterial.js +37 -0
- package/src/materials/SSAOComposeMaterial.js +11 -0
- package/src/materials/SSAOMaterial.js +66 -0
- package/src/materials/ScreenSpaceTextureMaterial.js +65 -0
- package/src/materials/UIElementMaterial.js +25 -0
- package/src/materials/UnrealBloomComposeMaterial.js +95 -0
- package/src/materials/UnrealBlurMaterial.js +17 -0
- package/src/materials/UnrealComposeMaterial.js +24 -0
- package/src/materials/ViewPositionMaterial.js +17 -0
- package/src/materials/deferred/DeferredPointLightMaterial.js +39 -0
- package/src/materials/gpu_particles/AttributeUpdateMaterial.js +33 -0
- package/src/materials/gpu_particles/BasicParticleMaterial.js +23 -0
- package/src/materials/gpu_particles/ParticleStorageMaterial.js +27 -0
- package/src/materials/gpu_particles/PositionStorageMaterial.js +10 -0
- package/src/object_pool/Pool.js +73 -0
- package/src/primitives/Arrow.js +57 -0
- package/src/primitives/Cube.js +17 -0
- package/src/primitives/HorizontalPlane.js +18 -0
- package/src/primitives/Sphere.js +15 -0
- package/src/primitives/VerticalPlane.js +17 -0
- package/src/raycast/GroupRaycaster.js +41 -0
- package/src/raycast/PlaneDragResolver.js +89 -0
- package/src/raycast/PlaneRaycastResolver.js +22 -0
- package/src/raycast/PlaneRaycaster.js +23 -0
- package/src/raycast/RaycastResolver.js +22 -0
- package/src/raycast/SurfaceDragResolver.js +77 -0
- package/src/raycast/states/BaseState.js +16 -0
- package/src/raycast/states/IdleState.js +17 -0
- package/src/raycast/states/OnRaycastEnter.js +15 -0
- package/src/raycast/states/OnRaycastExit.js +16 -0
- package/src/raycast/states/OnRaycastHover.js +25 -0
- package/src/render_mode/BaseRender.js +32 -0
- package/src/render_mode/BloomRender.js +60 -0
- package/src/render_mode/DebugNormalsRender.js +20 -0
- package/src/render_mode/DeferredRender.js +112 -0
- package/src/render_mode/NormalAORender.js +71 -0
- package/src/render_mode/NormalRender.js +36 -0
- package/src/render_mode/OutlineRender.js +154 -0
- package/src/render_mode/PlanarReflectionsRender.js +118 -0
- package/src/render_mode/TransparencyMixRender.js +143 -0
- package/src/render_mode/UnrealBloomRender.js +109 -0
- package/src/render_utilities/Blitter.js +99 -0
- package/src/render_utilities/Blurrer.js +29 -0
- package/src/render_utilities/DepthAndNormalsRenderer.js +45 -0
- package/src/render_utilities/DualFilteringBlurrer.js +56 -0
- package/src/render_utilities/GaussianBlurrer.js +146 -0
- package/src/render_utilities/MedianFilter.js +66 -0
- package/src/render_utilities/ViewPositionRenderer.js +48 -0
- package/src/resource_loader/AbstractLoader.js +103 -0
- package/src/resource_loader/AudioLoader.js +42 -0
- package/src/resource_loader/BasisLoader.js +50 -0
- package/src/resource_loader/CubemapLoader.js +48 -0
- package/src/resource_loader/DAELoader.js +39 -0
- package/src/resource_loader/DDSLoader.js +39 -0
- package/src/resource_loader/FileLoader.js +39 -0
- package/src/resource_loader/FontLoader.js +39 -0
- package/src/resource_loader/GLTFDRACOLoader.js +45 -0
- package/src/resource_loader/GLTFLoader.js +40 -0
- package/src/resource_loader/HDRCubeTextureLoader.js +43 -0
- package/src/resource_loader/JSONLoader.js +40 -0
- package/src/resource_loader/OBJLoader.js +39 -0
- package/src/resource_loader/PointArrayLoader.js +63 -0
- package/src/resource_loader/RGBETextureLoader.js +42 -0
- package/src/resource_loader/ResourceBatch.js +174 -0
- package/src/resource_loader/SVGLoader.js +39 -0
- package/src/resource_loader/TextLoader.js +39 -0
- package/src/resource_loader/TextureLoader.js +40 -0
- package/src/shaders/add/add.frag +9 -0
- package/src/shaders/anti_aliasing/fxaa.frag +72 -0
- package/src/shaders/basic_color/basic_color.frag +6 -0
- package/src/shaders/basic_color/basic_color.vert +10 -0
- package/src/shaders/basic_line/basic_line.frag +37 -0
- package/src/shaders/basic_line/basic_line.vert +37 -0
- package/src/shaders/basic_texture/basic_texture.frag +10 -0
- package/src/shaders/basic_texture/basic_texture.vert +17 -0
- package/src/shaders/bloom/bloom_compose_frag.glsl +22 -0
- package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -0
- package/src/shaders/box_blur/box_blur.frag +24 -0
- package/src/shaders/box_blur/compose.frag +31 -0
- package/src/shaders/clear/clear_depth_normal.frag +25 -0
- package/src/shaders/copy/copy.frag +7 -0
- package/src/shaders/copy/copy.vert +6 -0
- package/src/shaders/deferred/blit_copy.vert +11 -0
- package/src/shaders/deferred/deferred_compose.frag +59 -0
- package/src/shaders/deferred/point_light.frag +66 -0
- package/src/shaders/deferred/point_light.vert +13 -0
- package/src/shaders/depth_normals/debug_normals.frag +48 -0
- package/src/shaders/depth_normals/depth_normals.frag +30 -0
- package/src/shaders/depth_normals/depth_normals.vert +13 -0
- package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -0
- package/src/shaders/dual_filter_blur/downsample.frag +21 -0
- package/src/shaders/dual_filter_blur/upsample.frag +24 -0
- package/src/shaders/edge_visualizer/edge_visualizer.frag +18 -0
- package/src/shaders/edge_visualizer/edge_visualizer.vert +16 -0
- package/src/shaders/edges/corners.frag +11 -0
- package/src/shaders/edges/corners.vert +31 -0
- package/src/shaders/edges/edges.frag +7 -0
- package/src/shaders/edges/edges.vert +27 -0
- package/src/shaders/gaussian_blur/gaussian_blur.frag +25 -0
- package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +24 -0
- package/src/shaders/gpu_particles/common_utils.glsl +13 -0
- package/src/shaders/gpu_particles/generic_storage.frag +7 -0
- package/src/shaders/gpu_particles/store/store_position.vert +14 -0
- package/src/shaders/gpu_particles/update/basic_update.frag +21 -0
- package/src/shaders/gpu_particles/visualize/visualize.frag +11 -0
- package/src/shaders/gpu_particles/visualize/visualize.vert +12 -0
- package/src/shaders/grid/grid.frag +17 -0
- package/src/shaders/grid/grid.vert +10 -0
- package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +23 -0
- package/src/shaders/median_filter/median_filter.frag +134 -0
- package/src/shaders/normal/normal.frag +6 -0
- package/src/shaders/normal/normal.vert +6 -0
- package/src/shaders/sdf_text/sdf_screen_text.frag +51 -0
- package/src/shaders/sdf_text/sdf_screen_text.vert +42 -0
- package/src/shaders/sdf_text/sdf_text.frag +53 -0
- package/src/shaders/sdf_text/sdf_text.vert +42 -0
- package/src/shaders/ssao/hbao.frag +264 -0
- package/src/shaders/ssao/ssao.frag +95 -0
- package/src/shaders/ssao/ssao.vert +11 -0
- package/src/shaders/ssao/ssao_compose.frag +14 -0
- package/src/shaders/transparent_mix/copy.frag +7 -0
- package/src/shaders/transparent_mix/transparent_mix.frag +19 -0
- package/src/shaders/transparent_mix/transparent_mix.vert +8 -0
- package/src/shaders/ui/ss_texture.frag +11 -0
- package/src/shaders/ui/ss_texture.vert +32 -0
- package/src/shaders/ui/ws_texture.vert +39 -0
- package/src/shaders/ui_element/ui_element.frag +11 -0
- package/src/shaders/ui_element/ui_element.vert +32 -0
- package/src/shaders/unreal_blur/unreal_blur.frag +25 -0
- package/src/shaders/unreal_blur/unreal_compose.frag +24 -0
- package/src/shaders/write_view_position/write_view_position.frag +7 -0
- package/src/shaders/write_view_position/write_view_position.vert +9 -0
- package/src/static_batcher/GeometryBatch.js +312 -0
- package/src/static_batcher/GeometryBatcher.js +62 -0
- package/src/ui/ui_element_position/ScreenSpacePosition.js +14 -0
- package/src/ui/ui_element_position/WorldSpacePosition.js +21 -0
- package/src/ui/ui_element_state/OnIdle.js +17 -0
- package/src/ui/ui_element_state/OnMouseEnter.js +26 -0
- package/src/ui/ui_element_state/OnMouseExit.js +15 -0
- package/src/ui/ui_element_state/OnMouseHover.js +31 -0
- package/src/ui/ui_element_state/UIElementState.js +18 -0
- package/src/utilities/ArrayUtilities.js +55 -0
- package/src/utilities/CameraUtilities.js +197 -0
- package/src/utilities/EasingFunctions.js +215 -0
- package/src/utilities/FrustumPointFitter.js +255 -0
- package/src/utilities/GeometryUtilities.js +74 -0
- package/src/utilities/ImageUtilities.js +26 -0
- package/src/utilities/MathUtilities.js +110 -0
- package/src/utilities/MeshSampler.js +100 -0
- package/src/utilities/ModelUtilities.js +161 -0
- package/src/utilities/ObjectUtilities.js +55 -0
- package/src/utilities/OrthographicFrustumPointFitter.js +47 -0
- package/src/utilities/PerspectiveFrustumPointFitter.js +250 -0
- package/src/utilities/StringUtilities.js +32 -0
- package/src/utilities/TimeUtilities.js +22 -0
- package/src/utilities/Validation.js +34 -0
- package/src/view_components/ApplicationView.js +60 -0
- package/src/view_components/ViewComponent.js +37 -0
- package/src/view_components/ViewComponentManager.js +58 -0
- package/src/view_components/ViewContext.js +14 -0
- package/src/view_components/ViewManager.js +119 -0
- package/src/view_components/ViewState.js +54 -0
- package/src/view_components/transition/ActionSequencerBuilder.js +91 -0
- package/src/view_components/transition/DrawIOAnimationSheet.js +90 -0
- package/src/view_components/transition/TransitionTable.js +44 -0
- package/src/view_components/transition/ViewStateTransitionHandler.js +81 -0
- package/types/BaseApplication.d.ts +8 -0
- package/types/CameraManager.d.ts +8 -0
- package/types/Capabilities.d.ts +6 -0
- package/types/Configuration.d.ts +6 -0
- package/types/Debug.d.ts +37 -0
- package/types/EventManager.d.ts +42 -0
- package/types/Graphics.d.ts +36 -0
- package/types/Initializer.d.ts +4 -0
- package/types/Input.d.ts +8 -0
- package/types/OS.d.ts +19 -0
- package/types/OrthographicCamera.d.ts +5 -0
- package/types/PerspectiveCamera.d.ts +5 -0
- package/types/ReflectionPlaneContext.d.ts +6 -0
- package/types/RenderLayers.d.ts +6 -0
- package/types/RenderLoop.d.ts +13 -0
- package/types/ResourceContainer.d.ts +8 -0
- package/types/SceneManager.d.ts +10 -0
- package/types/Screen.d.ts +17 -0
- package/types/Time.d.ts +11 -0
- package/types/UI.d.ts +15 -0
- package/types/action_sequencer/ActionEvent.d.ts +6 -0
- package/types/action_sequencer/ActionInterpolator.d.ts +5 -0
- package/types/action_sequencer/ActionSequencer.d.ts +28 -0
- package/types/action_sequencer/NumberInterpolator.d.ts +8 -0
- package/types/action_sequencer/VectorInterpolator.d.ts +7 -0
- package/types/canvas_drawer/CanvasDrawer.d.ts +13 -0
- package/types/canvas_drawer/MultiLineTextDrawer.d.ts +5 -0
- package/types/canvas_drawer/SimpleTextDrawer.d.ts +5 -0
- package/types/components/AudioClip.d.ts +12 -0
- package/types/components/AxisHelper.d.ts +6 -0
- package/types/components/BaseObject.d.ts +5 -0
- package/types/components/EdgeMesh.d.ts +13 -0
- package/types/components/GeometryEdgeVisualizer.d.ts +4 -0
- package/types/components/Grid.d.ts +2 -0
- package/types/components/Line.d.ts +16 -0
- package/types/components/MultiLinePath.d.ts +4 -0
- package/types/components/MultiLineText2D.d.ts +10 -0
- package/types/components/ObjectAxis.d.ts +3 -0
- package/types/components/ObjectOrientedBoundingBox.d.ts +18 -0
- package/types/components/PlaneHelper.d.ts +6 -0
- package/types/components/Shape2D.d.ts +4 -0
- package/types/components/Shape3D.d.ts +3 -0
- package/types/components/Text2D.d.ts +13 -0
- package/types/components/UIElement.d.ts +52 -0
- package/types/components/UpdatableMaterialMesh.d.ts +4 -0
- package/types/components/WorldImage.d.ts +13 -0
- package/types/components/sdf_text/SDFText.d.ts +30 -0
- package/types/components/sdf_text/SDFTextBatch.d.ts +12 -0
- package/types/components/sdf_text/TextGlyph.d.ts +6 -0
- package/types/editor/ManipulatorHandle.d.ts +14 -0
- package/types/editor/ObjectEditor.d.ts +16 -0
- package/types/editor/ObjectManipulator.d.ts +19 -0
- package/types/editor/ObjectPicker.d.ts +16 -0
- package/types/gpu_particles/GPUParticleSystem.d.ts +12 -0
- package/types/gpu_particles/ParticleAttribute.d.ts +15 -0
- package/types/gpu_particles/ParticlePositionAttribute.d.ts +4 -0
- package/types/html_utilities/CSSAnimator.d.ts +30 -0
- package/types/html_utilities/css_animator_states/Animating.d.ts +8 -0
- package/types/html_utilities/css_animator_states/Idle.d.ts +6 -0
- package/types/index.d.ts +73 -0
- package/types/materials/AddMaterial.d.ts +5 -0
- package/types/materials/AlphaFilterMaterial.d.ts +6 -0
- package/types/materials/BaseShaderMaterial.d.ts +3 -0
- package/types/materials/BlitMaterial.d.ts +3 -0
- package/types/materials/BloomComposeMaterial.d.ts +7 -0
- package/types/materials/BoxBlurMaterial.d.ts +4 -0
- package/types/materials/ClearAlphaMaterial.d.ts +3 -0
- package/types/materials/ClearColorMaterial.d.ts +7 -0
- package/types/materials/ClearDepthNormalMaterial.d.ts +4 -0
- package/types/materials/DeferredRendererComposeMaterial.d.ts +7 -0
- package/types/materials/DepthNormalMaterial.d.ts +4 -0
- package/types/materials/DisplayNormalTextureMaterial.d.ts +4 -0
- package/types/materials/DualFilteringBlurMaterial.d.ts +4 -0
- package/types/materials/FXAAMaterial.d.ts +3 -0
- package/types/materials/GaussianBlurMaterial.d.ts +6 -0
- package/types/materials/LuminosityHighPassMaterial.d.ts +4 -0
- package/types/materials/MedianFilterMaterial.d.ts +6 -0
- package/types/materials/NormalMaterial.d.ts +2 -0
- package/types/materials/SDFScreenTextMaterial.d.ts +11 -0
- package/types/materials/SDFTextMaterial.d.ts +12 -0
- package/types/materials/SSAOComposeMaterial.d.ts +4 -0
- package/types/materials/SSAOMaterial.d.ts +6 -0
- package/types/materials/ScreenSpaceTextureMaterial.d.ts +7 -0
- package/types/materials/UIElementMaterial.d.ts +7 -0
- package/types/materials/UnrealBloomComposeMaterial.d.ts +17 -0
- package/types/materials/UnrealBlurMaterial.d.ts +4 -0
- package/types/materials/UnrealComposeMaterial.d.ts +4 -0
- package/types/materials/ViewPositionMaterial.d.ts +3 -0
- package/types/materials/deferred/DeferredPointLightMaterial.d.ts +10 -0
- package/types/materials/gpu_particles/ParticleStorageMaterial.d.ts +3 -0
- package/types/materials/gpu_particles/PositionStorageMaterial.d.ts +4 -0
- package/types/object_pool/Pool.d.ts +10 -0
- package/types/primitives/Arrow.d.ts +8 -0
- package/types/primitives/Cube.d.ts +3 -0
- package/types/primitives/HorizontalPlane.d.ts +3 -0
- package/types/primitives/Sphere.d.ts +3 -0
- package/types/primitives/VerticalPlane.d.ts +3 -0
- package/types/raycast/GroupRaycaster.d.ts +13 -0
- package/types/raycast/PlaneDragResolver.d.ts +14 -0
- package/types/raycast/PlaneRaycastResolver.d.ts +5 -0
- package/types/raycast/PlaneRaycaster.d.ts +7 -0
- package/types/raycast/RaycastResolver.d.ts +5 -0
- package/types/raycast/SurfaceDragResolver.d.ts +13 -0
- package/types/raycast/states/BaseState.d.ts +5 -0
- package/types/raycast/states/IdleState.d.ts +5 -0
- package/types/raycast/states/OnRaycastEnter.d.ts +5 -0
- package/types/raycast/states/OnRaycastExit.d.ts +4 -0
- package/types/raycast/states/OnRaycastHover.d.ts +4 -0
- package/types/render_mode/BaseRender.d.ts +7 -0
- package/types/render_mode/BloomRender.d.ts +10 -0
- package/types/render_mode/DebugNormalsRender.d.ts +4 -0
- package/types/render_mode/DeferredRender.d.ts +9 -0
- package/types/render_mode/NormalAORender.d.ts +16 -0
- package/types/render_mode/NormalRender.d.ts +4 -0
- package/types/render_mode/OutlineRender.d.ts +20 -0
- package/types/render_mode/PlanarReflectionsRender.d.ts +13 -0
- package/types/render_mode/TransparencyMixRender.d.ts +21 -0
- package/types/render_mode/UnrealBloomRender.d.ts +19 -0
- package/types/render_utilities/Blitter.d.ts +16 -0
- package/types/render_utilities/Blurrer.d.ts +9 -0
- package/types/render_utilities/DepthAndNormalsRenderer.d.ts +12 -0
- package/types/render_utilities/DualFilteringBlurrer.d.ts +19 -0
- package/types/render_utilities/GaussianBlurrer.d.ts +27 -0
- package/types/render_utilities/MedianFilter.d.ts +10 -0
- package/types/render_utilities/ViewPositionRenderer.d.ts +9 -0
- package/types/resource_loader/AbstractLoader.d.ts +18 -0
- package/types/resource_loader/AudioLoader.d.ts +8 -0
- package/types/resource_loader/BasisLoader.d.ts +6 -0
- package/types/resource_loader/CubemapLoader.d.ts +7 -0
- package/types/resource_loader/DAELoader.d.ts +6 -0
- package/types/resource_loader/DDSLoader.d.ts +6 -0
- package/types/resource_loader/FileLoader.d.ts +6 -0
- package/types/resource_loader/FontLoader.d.ts +6 -0
- package/types/resource_loader/GLTFDRACOLoader.d.ts +7 -0
- package/types/resource_loader/GLTFLoader.d.ts +5 -0
- package/types/resource_loader/HDRCubeTextureLoader.d.ts +7 -0
- package/types/resource_loader/JSONLoader.d.ts +6 -0
- package/types/resource_loader/OBJLoader.d.ts +6 -0
- package/types/resource_loader/PointArrayLoader.d.ts +7 -0
- package/types/resource_loader/RGBETextureLoader.d.ts +6 -0
- package/types/resource_loader/ResourceBatch.d.ts +28 -0
- package/types/resource_loader/SVGLoader.d.ts +6 -0
- package/types/resource_loader/TextLoader.d.ts +6 -0
- package/types/resource_loader/TextureLoader.d.ts +6 -0
- package/types/static_batcher/GeometryBatch.d.ts +37 -0
- package/types/static_batcher/GeometryBatcher.d.ts +7 -0
- package/types/ui/ui_element_position/ScreenSpacePosition.d.ts +4 -0
- package/types/ui/ui_element_position/WorldSpacePosition.d.ts +5 -0
- package/types/ui/ui_element_state/OnIdle.d.ts +5 -0
- package/types/ui/ui_element_state/OnMouseEnter.d.ts +5 -0
- package/types/ui/ui_element_state/OnMouseExit.d.ts +5 -0
- package/types/ui/ui_element_state/OnMouseHover.d.ts +5 -0
- package/types/ui/ui_element_state/UIElementState.d.ts +5 -0
- package/types/utilities/ArrayUtilities.d.ts +7 -0
- package/types/utilities/CameraUtilities.d.ts +24 -0
- package/types/utilities/EasingFunctions.d.ts +35 -0
- package/types/utilities/FrustumPointFitter.d.ts +14 -0
- package/types/utilities/GeometryUtilities.d.ts +4 -0
- package/types/utilities/ImageUtilities.d.ts +4 -0
- package/types/utilities/MathUtilities.d.ts +12 -0
- package/types/utilities/MeshSampler.d.ts +14 -0
- package/types/utilities/ModelUtilities.d.ts +13 -0
- package/types/utilities/ObjectUtilities.d.ts +5 -0
- package/types/utilities/OrthographicFrustumPointFitter.d.ts +7 -0
- package/types/utilities/PerspectiveFrustumPointFitter.d.ts +12 -0
- package/types/utilities/StringUtilities.d.ts +5 -0
- package/types/utilities/TimeUtilities.d.ts +3 -0
- package/types/utilities/Validation.d.ts +6 -0
- package/types/view_components/ApplicationView.d.ts +11 -0
- package/types/view_components/ViewComponent.d.ts +13 -0
- package/types/view_components/ViewComponentManager.d.ts +10 -0
- package/types/view_components/ViewContext.d.ts +6 -0
- package/types/view_components/ViewManager.d.ts +24 -0
- package/types/view_components/ViewState.d.ts +15 -0
- package/types/view_components/transition/ActionSequencerBuilder.d.ts +15 -0
- package/types/view_components/transition/DrawIOAnimationSheet.d.ts +17 -0
- package/types/view_components/transition/TransitionTable.d.ts +8 -0
- package/types/view_components/transition/ViewStateTransitionHandler.d.ts +16 -0
|
@@ -0,0 +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
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
uniform sampler2D _Texture;
|
|
2
|
+
varying vec2 vUv;
|
|
3
|
+
|
|
4
|
+
uniform vec2 _AtlasSize;
|
|
5
|
+
varying vec4 v_glyph_bounds;
|
|
6
|
+
varying vec4 v_color;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
float median(float r, float g, float b) {
|
|
10
|
+
return max(min(r, g), min(max(r, g), b));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
void main()
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
float left = v_glyph_bounds.x / _AtlasSize.x;
|
|
19
|
+
float right = v_glyph_bounds.y / _AtlasSize.x;
|
|
20
|
+
|
|
21
|
+
float top = v_glyph_bounds.z / _AtlasSize.y;
|
|
22
|
+
float bottom = v_glyph_bounds.w / _AtlasSize.y;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
float width = abs(right - left);
|
|
26
|
+
float height = abs(top - bottom);
|
|
27
|
+
|
|
28
|
+
vec2 coord = vec2(vUv.x * width + left, vUv.y * height + top - height);
|
|
29
|
+
|
|
30
|
+
vec4 col = texture2D(_Texture, coord);
|
|
31
|
+
|
|
32
|
+
float sig_dist = median(col.r, col.g, col.b);
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
float _Cutoff = 0.5;
|
|
36
|
+
float dist = (_Cutoff - sig_dist);
|
|
37
|
+
|
|
38
|
+
// sdf distance per pixel (gradient vector)
|
|
39
|
+
vec2 ddist = vec2(dFdx(dist), dFdy(dist));
|
|
40
|
+
|
|
41
|
+
// distance to edge in pixels (scalar)
|
|
42
|
+
float pixelDist = dist / length(ddist);
|
|
43
|
+
|
|
44
|
+
float opacity = clamp(0.5 - pixelDist, 0.0, 1.0);
|
|
45
|
+
|
|
46
|
+
// float w = fwidth(sig_dist);
|
|
47
|
+
// opacity = smoothstep(0.5 - w, 0.5 + w, sig_dist);
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
gl_FragColor = vec4(v_color.rgb, opacity * v_color.a);
|
|
51
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
attribute vec4 transformsCol0;
|
|
3
|
+
attribute vec4 transformsCol1;
|
|
4
|
+
attribute vec4 transformsCol2;
|
|
5
|
+
attribute vec4 transformsCol3;
|
|
6
|
+
|
|
7
|
+
attribute vec4 glyph_bounds;
|
|
8
|
+
attribute vec4 plane_bounds;
|
|
9
|
+
|
|
10
|
+
attribute vec4 color;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
varying vec2 vUv;
|
|
14
|
+
varying vec4 v_glyph_bounds;
|
|
15
|
+
varying vec4 v_color;
|
|
16
|
+
|
|
17
|
+
void main()
|
|
18
|
+
{
|
|
19
|
+
vec4 pos = vec4(position, 1.0);
|
|
20
|
+
pos.x *= plane_bounds.z;
|
|
21
|
+
pos.y *= plane_bounds.w;
|
|
22
|
+
|
|
23
|
+
pos.x += plane_bounds.x;
|
|
24
|
+
pos.y += plane_bounds.y;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
mat4 offset_matrix = mat4(
|
|
28
|
+
transformsCol0,
|
|
29
|
+
transformsCol1,
|
|
30
|
+
transformsCol2,
|
|
31
|
+
transformsCol3
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
gl_Position = projectionMatrix * viewMatrix * offset_matrix * pos;
|
|
39
|
+
vUv = uv;
|
|
40
|
+
v_glyph_bounds = glyph_bounds;
|
|
41
|
+
v_color = color;
|
|
42
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
uniform sampler2D _Texture;
|
|
2
|
+
uniform float _Boldness;
|
|
3
|
+
|
|
4
|
+
varying vec2 vUv;
|
|
5
|
+
|
|
6
|
+
uniform vec2 _AtlasSize;
|
|
7
|
+
varying vec4 v_glyph_bounds;
|
|
8
|
+
varying vec4 v_color;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
float median(float r, float g, float b) {
|
|
12
|
+
return max(min(r, g), min(max(r, g), b));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
void main()
|
|
16
|
+
{
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
float left = v_glyph_bounds.x / _AtlasSize.x;
|
|
21
|
+
float right = v_glyph_bounds.y / _AtlasSize.x;
|
|
22
|
+
|
|
23
|
+
float top = v_glyph_bounds.z / _AtlasSize.y;
|
|
24
|
+
float bottom = v_glyph_bounds.w / _AtlasSize.y;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
float width = abs(right - left);
|
|
28
|
+
float height = abs(top - bottom);
|
|
29
|
+
|
|
30
|
+
vec2 coord = vec2(vUv.x * width + left, vUv.y * height + top - height);
|
|
31
|
+
|
|
32
|
+
vec4 col = texture2D(_Texture, coord);
|
|
33
|
+
|
|
34
|
+
float sig_dist = median(col.r, col.g, col.b);
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
float _Cutoff = _Boldness;
|
|
38
|
+
float dist = (_Cutoff - sig_dist);
|
|
39
|
+
|
|
40
|
+
// sdf distance per pixel (gradient vector)
|
|
41
|
+
vec2 ddist = vec2(dFdx(dist), dFdy(dist));
|
|
42
|
+
|
|
43
|
+
// distance to edge in pixels (scalar)
|
|
44
|
+
float pixelDist = dist / length(ddist);
|
|
45
|
+
|
|
46
|
+
float opacity = clamp(0.5 - pixelDist, 0.0, 1.0);
|
|
47
|
+
|
|
48
|
+
// float w = fwidth(sig_dist);
|
|
49
|
+
// opacity = smoothstep(0.5 - w, 0.5 + w, sig_dist);
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
gl_FragColor = vec4(v_color.rgb, opacity * v_color.a);
|
|
53
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
attribute vec4 transformsCol0;
|
|
3
|
+
attribute vec4 transformsCol1;
|
|
4
|
+
attribute vec4 transformsCol2;
|
|
5
|
+
attribute vec4 transformsCol3;
|
|
6
|
+
|
|
7
|
+
attribute vec4 glyph_bounds;
|
|
8
|
+
attribute vec4 plane_bounds;
|
|
9
|
+
|
|
10
|
+
attribute vec4 color;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
varying vec2 vUv;
|
|
14
|
+
varying vec4 v_glyph_bounds;
|
|
15
|
+
varying vec4 v_color;
|
|
16
|
+
|
|
17
|
+
void main()
|
|
18
|
+
{
|
|
19
|
+
vec4 pos = vec4(position, 1.0);
|
|
20
|
+
pos.x *= plane_bounds.z;
|
|
21
|
+
pos.y *= plane_bounds.w;
|
|
22
|
+
|
|
23
|
+
pos.x += plane_bounds.x;
|
|
24
|
+
pos.y += plane_bounds.y;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
mat4 offset_matrix = mat4(
|
|
28
|
+
transformsCol0,
|
|
29
|
+
transformsCol1,
|
|
30
|
+
transformsCol2,
|
|
31
|
+
transformsCol3
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
gl_Position = projectionMatrix * viewMatrix * offset_matrix * pos;
|
|
39
|
+
vUv = uv;
|
|
40
|
+
v_glyph_bounds = glyph_bounds;
|
|
41
|
+
v_color = color;
|
|
42
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
uniform sampler2D _MainTex;
|
|
2
|
+
uniform mat4 _InverseProjMatrix;
|
|
3
|
+
uniform mat4 _InverseViewMatrix;
|
|
4
|
+
|
|
5
|
+
uniform float _Bias;
|
|
6
|
+
uniform float _Radius;
|
|
7
|
+
|
|
8
|
+
uniform vec2 _TargetResolution;
|
|
9
|
+
uniform float _FarPlane;
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
varying vec2 vUv;
|
|
13
|
+
varying vec4 vRay;
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
uniform vec3 _SampleKernel[64];
|
|
17
|
+
uniform sampler2D _RandomRotation;
|
|
18
|
+
uniform mat4 _ProjectionMatrix;
|
|
19
|
+
|
|
20
|
+
vec3 decode_normal (vec4 enc)
|
|
21
|
+
{
|
|
22
|
+
float scale = 1.7777;
|
|
23
|
+
vec3 nn =
|
|
24
|
+
enc.xyz*vec3(2.0*scale,2.0*scale,0.0) +
|
|
25
|
+
vec3(-scale,-scale,1.0);
|
|
26
|
+
float g = 2.0 / dot(nn.xyz,nn.xyz);
|
|
27
|
+
vec3 n;
|
|
28
|
+
n.xy = g*nn.xy;
|
|
29
|
+
n.z = g-1.0;
|
|
30
|
+
return n;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
float DecodeFloatRG( vec2 enc )
|
|
34
|
+
{
|
|
35
|
+
vec2 kDecodeDot = vec2(1.0, 1.0/255.0);
|
|
36
|
+
return dot( enc, kDecodeDot );
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
vec3 DecodeNormal(vec2 uv)
|
|
40
|
+
{
|
|
41
|
+
// vec2 encoded_normal = texture2D(_MainTex, uv).zw;
|
|
42
|
+
// vec3 normalValue = normalize(decode_normal(vec4(encoded_normal, 0., 0.)));
|
|
43
|
+
// return normalize(normalValue);
|
|
44
|
+
return normalize(texture2D(_MainTex, uv).xyz * 2.0 - vec3(1.0));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
vec3 DecodeViewPos(vec2 uv)
|
|
49
|
+
{
|
|
50
|
+
float depth = texture2D(_MainTex, uv).w;
|
|
51
|
+
|
|
52
|
+
float x = uv.x * 2.0 - 1.0;
|
|
53
|
+
float y = uv.y * 2.0 - 1.0;
|
|
54
|
+
vec4 inv_proj = _InverseProjMatrix * vec4(x,y, 1.0, 1.0);
|
|
55
|
+
|
|
56
|
+
return (inv_proj.xyz / inv_proj.w) * depth;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
float fast_length(vec3 V)
|
|
60
|
+
{
|
|
61
|
+
return dot(V,V);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
vec3 MinDiff(vec3 P, vec3 Pr, vec3 Pl)
|
|
65
|
+
{
|
|
66
|
+
vec3 V1 = Pr - P;
|
|
67
|
+
vec3 V2 = P - Pl;
|
|
68
|
+
return (fast_length(V1) < fast_length(V2)) ? V1 : V2;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
#define PI 3.14
|
|
75
|
+
#define PI_OVER_2 1.5707963
|
|
76
|
+
#define PI_OVER_4 0.785398
|
|
77
|
+
#define EPSILON 0.000001
|
|
78
|
+
|
|
79
|
+
// Maps a unit square in [-1, 1] to a unit disk in [-1, 1]. Shirley 97 "A Low Distortion Map Between Disk and Square"
|
|
80
|
+
// Inputs: cartesian coordinates
|
|
81
|
+
// Return: new circle-mapped polar coordinates (radius, angle)
|
|
82
|
+
vec2 UnitSquareToUnitDiskPolar(float a, float b) {
|
|
83
|
+
float radius, angle;
|
|
84
|
+
if (abs(a) > abs(b)) { // First region (left and right quadrants of the disk)
|
|
85
|
+
radius = a;
|
|
86
|
+
angle = b / (a + EPSILON) * PI_OVER_4;
|
|
87
|
+
} else { // Second region (top and botom quadrants of the disk)
|
|
88
|
+
radius = b;
|
|
89
|
+
angle = PI_OVER_2 - (a / (b + EPSILON) * PI_OVER_4);
|
|
90
|
+
}
|
|
91
|
+
if (radius < 0.0) { // Always keep radius positive
|
|
92
|
+
radius *= -1.0;
|
|
93
|
+
angle += PI;
|
|
94
|
+
}
|
|
95
|
+
return vec2(radius, angle);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Maps a unit square in [-1, 1] to a unit disk in [-1, 1]
|
|
99
|
+
// Inputs: cartesian coordinates
|
|
100
|
+
// Return: new circle-mapped cartesian coordinates
|
|
101
|
+
vec2 SquareToDiskMapping(float a, float b) {
|
|
102
|
+
vec2 PolarCoord = UnitSquareToUnitDiskPolar(a, b);
|
|
103
|
+
return vec2(PolarCoord.x * cos(PolarCoord.y), PolarCoord.x * sin(PolarCoord.y));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
// // Retrieves the occlusion factor for a particular sample
|
|
111
|
+
// // uv: the centre coordinate of the kernel
|
|
112
|
+
// // frustumVector: The frustum vector of the sample point
|
|
113
|
+
// // centerViewPos: The view space position of the centre point
|
|
114
|
+
// // centerNormal: The normal of the centre point
|
|
115
|
+
// // tangent: The tangent vector in the sampling direction at the centre point
|
|
116
|
+
// // topOcclusion: The maximum cos(angle) found so far, will be updated when a new occlusion segment has been found
|
|
117
|
+
// float GetSampleOcclusion(vec2 uv, vec3 centerViewPos, vec3 centerNormal, vec3 tangent, inout float topOcclusion)
|
|
118
|
+
// {
|
|
119
|
+
// // reconstruct sample's view space position based on depth buffer and interpolated frustum vector
|
|
120
|
+
// vec3 sampleViewPos = DecodeViewPos(uv);
|
|
121
|
+
|
|
122
|
+
// // get occlusion factor based on candidate horizon elevation
|
|
123
|
+
// vec3 horizonVector = sampleViewPos - centerViewPos;
|
|
124
|
+
// float horizonVectorLength = length(horizonVector);
|
|
125
|
+
|
|
126
|
+
// float occlusion;
|
|
127
|
+
|
|
128
|
+
// // If the horizon vector points away from the tangent, make an estimate
|
|
129
|
+
// if (dot(tangent, horizonVector) < 0.0)
|
|
130
|
+
// return 0.5;
|
|
131
|
+
// else
|
|
132
|
+
// occlusion = dot(centerNormal, horizonVector) / horizonVectorLength;
|
|
133
|
+
|
|
134
|
+
// // this adds occlusion only if angle of the horizon vector is higher than the previous highest one without branching
|
|
135
|
+
// float diff = max(occlusion - topOcclusion, 0.0);
|
|
136
|
+
// topOcclusion = max(occlusion, topOcclusion);
|
|
137
|
+
|
|
138
|
+
// // attenuate occlusion contribution using distance function 1 - (d/f)^2
|
|
139
|
+
// float fallOff = 2.0;
|
|
140
|
+
// float distanceFactor = saturate(horizonVectorLength / fallOff);
|
|
141
|
+
// distanceFactor = 1.0 - distanceFactor * distanceFactor;
|
|
142
|
+
// return diff * distanceFactor;
|
|
143
|
+
// }
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
#define MAX_DIRECTIONS 8
|
|
147
|
+
#define MAX_DIRECTIONS_F 8.0
|
|
148
|
+
#define MAX_STEPS 8
|
|
149
|
+
#define MAX_STEPS_F 8.0
|
|
150
|
+
#define KERNEL_SIZE 8
|
|
151
|
+
#define KERNEL_SIZE_F 8.0
|
|
152
|
+
#define MAX_TAPS (KERNEL_SIZE*KERNEL_SIZE)
|
|
153
|
+
#define MAX_TAPS_F (KERNEL_SIZE_F*KERNEL_SIZE_F)
|
|
154
|
+
|
|
155
|
+
float InvLength(vec2 V)
|
|
156
|
+
{
|
|
157
|
+
return inversesqrt(dot(V,V));
|
|
158
|
+
}
|
|
159
|
+
vec2 viewToScreen(vec3 viewPos)
|
|
160
|
+
{
|
|
161
|
+
vec4 P_screen = _ProjectionMatrix * vec4(viewPos, 1.0);
|
|
162
|
+
P_screen.xyz/= P_screen.w;
|
|
163
|
+
P_screen.xy = P_screen.xy * 0.5 + vec2(0.5, 0.5);
|
|
164
|
+
return P_screen.xy;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
float BiasedTangent(vec3 V)
|
|
168
|
+
{
|
|
169
|
+
return V.z / length(V.xy) + _Bias;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
float TanToSin(float x)
|
|
173
|
+
{
|
|
174
|
+
return x * inversesqrt(x*x + 1.0);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
float Tangent(vec3 V)
|
|
178
|
+
{
|
|
179
|
+
return V.z * InvLength(V.xy);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
float Tangent(vec3 P, vec3 S)
|
|
184
|
+
{
|
|
185
|
+
return -(P.z - S.z) * InvLength(S.xy - P.xy);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
void main()
|
|
189
|
+
{
|
|
190
|
+
vec2 half_pixel = vec2(0.5/_TargetResolution.x, 0.5/_TargetResolution.y);
|
|
191
|
+
vec2 pixel_size = vec2(1.0/_TargetResolution.x, 1.0/_TargetResolution.y);
|
|
192
|
+
|
|
193
|
+
vec2 uv = vUv;
|
|
194
|
+
|
|
195
|
+
vec3 P = DecodeViewPos(uv);
|
|
196
|
+
vec3 normal = DecodeNormal(uv);
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
vec2 P_s = viewToScreen(P);
|
|
200
|
+
|
|
201
|
+
// float radius = 0.5;
|
|
202
|
+
vec2 P1_s = viewToScreen(P + vec3(0.0, _Radius, 0.0));
|
|
203
|
+
|
|
204
|
+
float step_size_px = length(P1_s - P_s);
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
// vec3 Pt = DecodeViewPos(uv + vec2(0.0, pixel_size.y));
|
|
209
|
+
// vec3 Pb = DecodeViewPos(uv + vec2(0.0, -pixel_size.y));
|
|
210
|
+
|
|
211
|
+
// vec3 Pl = DecodeViewPos(uv + vec2(-pixel_size.x, 0.0));
|
|
212
|
+
// vec3 Pr = DecodeViewPos(uv + vec2(pixel_size.x, 0.0));
|
|
213
|
+
|
|
214
|
+
// vec3 dPv = normalize(MinDiff(P, Pt, Pb));
|
|
215
|
+
// vec3 dPh = normalize(MinDiff(P, Pr, Pl));
|
|
216
|
+
|
|
217
|
+
// gl_FragColor.rgb = normalize(cross(dPh, dPv))* 0.5 + vec3(0.5,0.5,0.5);
|
|
218
|
+
|
|
219
|
+
float alpha = (2.0 * PI) / MAX_DIRECTIONS_F;
|
|
220
|
+
float accum = 0.0;
|
|
221
|
+
for(int i=0; i< MAX_DIRECTIONS; i++)
|
|
222
|
+
{
|
|
223
|
+
float theta = alpha * float(i);
|
|
224
|
+
// Apply noise to the direction
|
|
225
|
+
vec2 dir = vec2(cos(theta), sin(theta)) * (step_size_px/MAX_DIRECTIONS_F);
|
|
226
|
+
float max_angle = 0.0;
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
for(int j=1; j< MAX_STEPS; j++)
|
|
230
|
+
{
|
|
231
|
+
vec2 uv_offset = dir * float(j);
|
|
232
|
+
|
|
233
|
+
vec3 sample = DecodeViewPos(vUv + uv_offset);
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
vec3 dir = sample - P;
|
|
237
|
+
vec3 tangent = cross(normalize(dir), normal);
|
|
238
|
+
tangent = cross(normal, tangent);
|
|
239
|
+
|
|
240
|
+
float sin_t = TanToSin(BiasedTangent(tangent)); //sin(t)
|
|
241
|
+
|
|
242
|
+
float horizon_angle = Tangent(P, sample);
|
|
243
|
+
if(length(dir) < _Radius && horizon_angle > max_angle)
|
|
244
|
+
{
|
|
245
|
+
float sin_h = TanToSin(horizon_angle);
|
|
246
|
+
accum += sin_h - sin_t;
|
|
247
|
+
max_angle = horizon_angle;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
gl_FragColor.rgb = vec3(accum/MAX_DIRECTIONS_F);
|
|
253
|
+
|
|
254
|
+
// gl_FragColor.rgb = vec3(sin(abs(max_angle)));
|
|
255
|
+
// gl_FragColor.rgb = normalize(dPv+dPh) * 0.5 + vec3(0.5);
|
|
256
|
+
// gl_FragColor.rgb = vec3(sample_length);
|
|
257
|
+
|
|
258
|
+
gl_FragColor.a = 1.0;
|
|
259
|
+
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
uniform sampler2D _MainTex;
|
|
2
|
+
uniform mat4 _InverseProjMatrix;
|
|
3
|
+
|
|
4
|
+
uniform float _Bias;
|
|
5
|
+
uniform float _Radius;
|
|
6
|
+
|
|
7
|
+
uniform vec2 _Resolution;
|
|
8
|
+
uniform float _FarPlane;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
varying vec2 vUv;
|
|
12
|
+
varying vec4 vRay;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
uniform vec3 _SampleKernel[64];
|
|
16
|
+
uniform sampler2D _RandomRotation;
|
|
17
|
+
uniform mat4 _ProjectionMatrix;
|
|
18
|
+
|
|
19
|
+
vec3 decode_normal (vec4 enc)
|
|
20
|
+
{
|
|
21
|
+
float scale = 1.7777;
|
|
22
|
+
vec3 nn =
|
|
23
|
+
enc.xyz*vec3(2.0*scale,2.0*scale,0.0) +
|
|
24
|
+
vec3(-scale,-scale,1.0);
|
|
25
|
+
float g = 2.0 / dot(nn.xyz,nn.xyz);
|
|
26
|
+
vec3 n;
|
|
27
|
+
n.xy = g*nn.xy;
|
|
28
|
+
n.z = g-1.0;
|
|
29
|
+
return n;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
float DecodeFloatRG( vec2 enc )
|
|
33
|
+
{
|
|
34
|
+
vec2 kDecodeDot = vec2(1.0, 1.0/255.0);
|
|
35
|
+
return dot( enc, kDecodeDot );
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
vec3 DecodeNormal(vec2 uv)
|
|
39
|
+
{
|
|
40
|
+
vec2 encoded_normal = texture2D(_MainTex, uv).zw;
|
|
41
|
+
vec3 normalValue = normalize(decode_normal(vec4(encoded_normal, 0., 0.)));
|
|
42
|
+
return normalize(normalValue);
|
|
43
|
+
}
|
|
44
|
+
vec3 DecodeViewPos(vec2 uv)
|
|
45
|
+
{
|
|
46
|
+
vec2 depth = texture2D(_MainTex, uv).xy;
|
|
47
|
+
vec4 inv_proj = _InverseProjMatrix * vec4(vUv * 2.0 - 1.0, 1.0, 1.0);
|
|
48
|
+
return DecodeFloatRG(depth) * (vRay.xyz/vRay.w);
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
void main()
|
|
56
|
+
{
|
|
57
|
+
|
|
58
|
+
vec2 noiseScale = vec2(_Resolution.x/4.0,_Resolution.y/4.0); // noise texture 4x4
|
|
59
|
+
|
|
60
|
+
vec3 fragPos = DecodeViewPos(vUv);
|
|
61
|
+
vec3 normal = DecodeNormal(vUv);
|
|
62
|
+
vec3 randomVec = texture2D(_RandomRotation, vUv * noiseScale).xyz;
|
|
63
|
+
randomVec = vec3(randomVec.xy * 2.0 - 1.0, 0);
|
|
64
|
+
randomVec = normalize(randomVec);
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal));
|
|
68
|
+
vec3 bitangent = normalize(cross(normal, tangent));
|
|
69
|
+
mat3 TBN = mat3(tangent, bitangent, normal);
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
float occlusion = 0.0;
|
|
73
|
+
const int kernelSize = 64;
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
for(int i = 0; i < kernelSize; ++i)
|
|
77
|
+
{
|
|
78
|
+
// get sample position
|
|
79
|
+
vec3 sample = TBN * _SampleKernel[i]; // From tangent to view-space
|
|
80
|
+
sample = fragPos + sample * _Radius;
|
|
81
|
+
vec4 projPos = _ProjectionMatrix * vec4(sample, 1.0);
|
|
82
|
+
vec2 screenPos = projPos.xy / projPos.w;
|
|
83
|
+
screenPos = screenPos * 0.5 +0.5;
|
|
84
|
+
|
|
85
|
+
float sampled_depth = DecodeViewPos(screenPos).z;
|
|
86
|
+
float rangeCheck = smoothstep(0.0, 1.0, _Radius / abs(fragPos.z - sampled_depth));
|
|
87
|
+
occlusion += step(sample.z+_Bias, sampled_depth) * rangeCheck;
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
occlusion = (occlusion / float(kernelSize));
|
|
91
|
+
gl_FragColor.rgb = vec3(occlusion,occlusion,occlusion);
|
|
92
|
+
gl_FragColor.a = 1.0;
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
}
|