ohzi-core 6.1.2 → 6.2.1
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.module.js +1 -1
- package/build/index.module.js.map +1 -1
- package/package.json +50 -48
- package/src/.vscode/settings.json +2 -2
- package/src/BaseApplication.js +23 -23
- package/src/Browser.js +79 -79
- package/src/CameraManager.js +19 -19
- package/src/Capabilities.js +11 -11
- package/src/Configuration.js +22 -22
- package/src/CustomBezierCurve.js +44 -44
- package/src/Debug.js +260 -260
- package/src/EventManager.js +150 -150
- package/src/Graphics.js +327 -327
- package/src/Initializer.js +57 -57
- package/src/Input.js +21 -21
- package/src/KeyboardInput.js +128 -128
- package/src/OS.js +58 -58
- package/src/OrthographicCamera.js +13 -13
- package/src/PerspectiveCamera.js +13 -13
- package/src/ReflectionPlaneContext.js +17 -17
- package/src/RenderLayers.js +28 -28
- package/src/RenderLoop.js +97 -97
- package/src/RenderOrder.js +38 -38
- package/src/ResourceContainer.js +39 -39
- package/src/SceneManager.js +44 -44
- package/src/Screen.js +69 -69
- package/src/Time.js +38 -38
- package/src/UI.js +90 -90
- package/src/action_sequencer/ActionEvent.js +15 -15
- package/src/action_sequencer/ActionInterpolator.js +23 -23
- package/src/action_sequencer/ActionSequencer.js +194 -194
- package/src/action_sequencer/NumberInterpolator.js +24 -24
- package/src/action_sequencer/VectorInterpolator.js +20 -20
- package/src/blitter_index.js +13 -13
- package/src/canvas_drawer/CanvasDrawer.js +111 -111
- package/src/canvas_drawer/MultiLineTextDrawer.js +49 -49
- package/src/canvas_drawer/SimpleTextDrawer.js +47 -47
- package/src/components/AudioClip.js +55 -55
- package/src/components/AxisHelper.js +58 -58
- package/src/components/BaseObject.js +45 -45
- package/src/components/EdgeMesh.js +151 -151
- package/src/components/GeometryEdgeVisualizer.js +45 -45
- package/src/components/Grid.js +33 -33
- package/src/components/Line.js +199 -199
- package/src/components/MultiLinePath.js +19 -19
- package/src/components/MultiLineText2D.js +62 -62
- package/src/components/ObjectAxis.js +20 -20
- package/src/components/ObjectOrientedBoundingBox.js +201 -201
- package/src/components/PlaneHelper.js +36 -36
- package/src/components/Shape2D.js +42 -42
- package/src/components/Shape3D.js +38 -38
- package/src/components/Text2D.js +39 -39
- package/src/components/UIElement.js +208 -208
- package/src/components/UpdatableMaterialMesh.js +16 -16
- package/src/components/WorldImage.js +91 -91
- package/src/components/mouse_interactors/ObjectRotator.js +61 -61
- package/src/components/sdf_text/SDFText.js +154 -154
- package/src/components/sdf_text/SDFTextBatch.js +193 -193
- package/src/components/sdf_text/TextGlyph.js +15 -15
- package/src/data_textures/CustomDataTexture.js +51 -51
- package/src/data_textures/RGBADataTexture.js +12 -12
- package/src/data_textures/RGBAFloatDataTexture.js +12 -12
- package/src/data_textures/RGBDataTexture.js +12 -12
- package/src/data_textures/RGBFloatDataTexture.js +12 -12
- package/src/editor/ManipulatorHandle.js +70 -70
- package/src/editor/ObjectEditor.js +66 -66
- package/src/editor/ObjectManipulator.js +118 -118
- package/src/editor/ObjectPicker.js +75 -75
- package/src/editor/shaders/object_picker.frag +5 -5
- package/src/editor/shaders/object_picker.vert +7 -7
- package/src/gpu_particles/GPUParticleSystem.js +87 -87
- package/src/gpu_particles/ParticleAttribute.js +83 -83
- package/src/gpu_particles/ParticlePositionAttribute.js +20 -20
- package/src/html_utilities/CSSAnimator.js +64 -64
- package/src/html_utilities/css_animator_states/Animating.js +45 -45
- package/src/html_utilities/css_animator_states/Idle.js +25 -25
- package/src/index.js +211 -211
- package/src/materials/AddMaterial.js +17 -17
- package/src/materials/AlphaFilterMaterial.js +20 -20
- package/src/materials/BaseShaderMaterial.js +19 -19
- package/src/materials/BlitMaterial.js +28 -28
- package/src/materials/BloomComposeMaterial.js +22 -22
- package/src/materials/BoxBlurMaterial.js +13 -13
- package/src/materials/ClearAlphaMaterial.js +13 -13
- package/src/materials/ClearColorMaterial.js +31 -31
- package/src/materials/ClearDepthNormalMaterial.js +13 -13
- package/src/materials/DeferredRendererComposeMaterial.js +32 -32
- package/src/materials/DepthNormalMaterial.js +28 -28
- package/src/materials/DisplayNormalTextureMaterial.js +15 -15
- package/src/materials/DualFilteringBlurMaterial.js +11 -11
- package/src/materials/FXAAMaterial.js +10 -10
- package/src/materials/GaussianBlurMaterial.js +28 -28
- package/src/materials/LuminosityHighPassMaterial.js +15 -15
- package/src/materials/MedianFilterMaterial.js +42 -42
- package/src/materials/NormalMaterial.js +17 -17
- package/src/materials/SDFScreenTextMaterial.js +31 -31
- package/src/materials/SDFTextMaterial.js +37 -37
- package/src/materials/SSAOComposeMaterial.js +11 -11
- package/src/materials/SSAOMaterial.js +66 -66
- package/src/materials/ScreenSpaceTextureMaterial.js +65 -65
- package/src/materials/UIElementMaterial.js +25 -25
- package/src/materials/UnrealBloomComposeMaterial.js +95 -95
- package/src/materials/UnrealBlurMaterial.js +17 -17
- package/src/materials/UnrealComposeMaterial.js +24 -24
- package/src/materials/ViewPositionMaterial.js +17 -17
- package/src/materials/deferred/DeferredPointLightMaterial.js +39 -39
- package/src/materials/gpu_particles/AttributeUpdateMaterial.js +33 -33
- package/src/materials/gpu_particles/BasicParticleMaterial.js +23 -23
- package/src/materials/gpu_particles/ParticleStorageMaterial.js +27 -27
- package/src/materials/gpu_particles/PositionStorageMaterial.js +10 -10
- package/src/object_pool/Pool.js +73 -73
- package/src/primitives/Arrow.js +57 -57
- package/src/primitives/Cube.js +17 -17
- package/src/primitives/HorizontalPlane.js +18 -18
- package/src/primitives/Sphere.js +15 -15
- package/src/primitives/VerticalPlane.js +17 -17
- package/src/raycast/GroupRaycaster.js +41 -41
- package/src/raycast/PlaneDragResolver.js +89 -89
- package/src/raycast/PlaneRaycastResolver.js +22 -22
- package/src/raycast/PlaneRaycaster.js +23 -23
- package/src/raycast/RaycastResolver.js +22 -22
- package/src/raycast/SurfaceDragResolver.js +77 -77
- package/src/raycast/states/BaseState.js +16 -16
- package/src/raycast/states/IdleState.js +17 -17
- package/src/raycast/states/OnRaycastEnter.js +15 -15
- package/src/raycast/states/OnRaycastExit.js +16 -16
- package/src/raycast/states/OnRaycastHover.js +25 -25
- package/src/render_mode/BaseRender.js +32 -32
- package/src/render_mode/BloomRender.js +60 -60
- package/src/render_mode/DebugNormalsRender.js +20 -20
- package/src/render_mode/DeferredRender.js +112 -112
- package/src/render_mode/NormalAORender.js +71 -71
- package/src/render_mode/NormalRender.js +36 -36
- package/src/render_mode/OutlineRender.js +154 -154
- package/src/render_mode/PlanarReflectionsRender.js +118 -118
- package/src/render_mode/TransparencyMixRender.js +143 -143
- package/src/render_mode/UnrealBloomRender.js +109 -109
- package/src/render_utilities/Blitter.js +99 -99
- package/src/render_utilities/Blurrer.js +29 -29
- package/src/render_utilities/DepthAndNormalsRenderer.js +45 -45
- package/src/render_utilities/DualFilteringBlurrer.js +56 -56
- package/src/render_utilities/GaussianBlurrer.js +146 -146
- package/src/render_utilities/MedianFilter.js +66 -66
- package/src/render_utilities/ViewPositionRenderer.js +48 -48
- package/src/resource_loader/BasisLoader.js +50 -50
- package/src/resource_loader/FontLoader.js +39 -39
- package/src/resource_loader/GLTFDRACOLoader.js +2 -0
- package/src/resource_loader/JSONLoader.js +40 -40
- package/src/resource_loader/OBJLoader.js +39 -39
- package/src/resource_loader/PointArrayLoader.js +63 -63
- package/src/resource_loader/RGBETextureLoader.js +42 -42
- package/src/resource_loader/VideoLoader.js +20 -20
- package/src/shaders/add/add.frag +8 -8
- package/src/shaders/anti_aliasing/fxaa.frag +71 -71
- 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 +36 -36
- 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 +24 -24
- package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +24 -24
- package/src/shaders/gpu_particles/common_utils.glsl +12 -12
- package/src/shaders/gpu_particles/generic_storage.frag +7 -7
- 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 +22 -22
- 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 +54 -54
- package/src/static_batcher/GeometryBatch.js +312 -312
- package/src/static_batcher/GeometryBatcher.js +63 -63
- package/src/static_batcher/MeshBatcher.js +56 -56
- package/src/ui/ui_element_position/ScreenSpacePosition.js +14 -14
- package/src/ui/ui_element_position/WorldSpacePosition.js +21 -21
- package/src/ui/ui_element_state/OnIdle.js +17 -17
- package/src/ui/ui_element_state/OnMouseEnter.js +26 -26
- package/src/ui/ui_element_state/OnMouseExit.js +15 -15
- package/src/ui/ui_element_state/OnMouseHover.js +31 -31
- package/src/ui/ui_element_state/UIElementState.js +18 -18
- package/src/utilities/ArrayUtilities.js +55 -55
- package/src/utilities/CameraUtilities.js +210 -210
- package/src/utilities/EasingFunctions.js +215 -215
- package/src/utilities/FrustumPointFitter.js +255 -255
- package/src/utilities/GeometryUtilities.js +74 -74
- package/src/utilities/ImageUtilities.js +26 -26
- package/src/utilities/MeshSampler.js +152 -152
- package/src/utilities/ModelUtilities.js +161 -161
- package/src/utilities/OMath.js +155 -155
- package/src/utilities/OrthographicFrustumPointFitter.js +47 -47
- package/src/utilities/PerspectiveFrustumPointFitter.js +250 -250
- package/src/utilities/StringUtilities.js +32 -32
- package/src/utilities/TimeUtilities.js +22 -22
- package/src/utilities/Validation.js +34 -34
- package/src/view_components/ApplicationView.js +60 -60
- package/src/view_components/ViewComponent.js +37 -37
- package/src/view_components/ViewComponentManager.js +58 -58
- package/src/view_components/ViewContext.js +14 -14
- package/src/view_components/ViewManager.js +129 -129
- package/src/view_components/ViewState.js +54 -54
- package/src/view_components/transition/ActionSequencerBuilder.js +91 -91
- package/src/view_components/transition/DrawIOAnimationSheet.js +90 -90
- package/src/view_components/transition/TransitionTable.js +44 -44
- package/src/view_components/transition/ViewStateTransitionHandler.js +95 -95
- package/types/BaseApplication.d.ts +8 -8
- package/types/Browser.d.ts +12 -12
- package/types/CameraManager.d.ts +8 -8
- package/types/Capabilities.d.ts +6 -6
- package/types/Configuration.d.ts +6 -6
- package/types/Debug.d.ts +38 -38
- package/types/EventManager.d.ts +42 -42
- package/types/Graphics.d.ts +35 -35
- package/types/Initializer.d.ts +4 -4
- package/types/Input.d.ts +8 -8
- package/types/OS.d.ts +18 -18
- package/types/OrthographicCamera.d.ts +5 -5
- package/types/PerspectiveCamera.d.ts +5 -5
- package/types/ReflectionPlaneContext.d.ts +6 -6
- package/types/RenderLayers.d.ts +6 -6
- package/types/RenderLoop.d.ts +13 -13
- package/types/ResourceContainer.d.ts +8 -8
- package/types/SceneManager.d.ts +10 -10
- package/types/Screen.d.ts +17 -17
- package/types/Time.d.ts +11 -11
- package/types/UI.d.ts +15 -15
- package/types/action_sequencer/ActionEvent.d.ts +6 -6
- package/types/action_sequencer/ActionInterpolator.d.ts +5 -5
- package/types/action_sequencer/ActionSequencer.d.ts +28 -28
- package/types/action_sequencer/NumberInterpolator.d.ts +8 -8
- package/types/action_sequencer/VectorInterpolator.d.ts +7 -7
- package/types/canvas_drawer/CanvasDrawer.d.ts +13 -13
- package/types/canvas_drawer/MultiLineTextDrawer.d.ts +5 -5
- package/types/canvas_drawer/SimpleTextDrawer.d.ts +5 -5
- package/types/components/AudioClip.d.ts +12 -12
- package/types/components/AxisHelper.d.ts +6 -6
- package/types/components/BaseObject.d.ts +5 -5
- package/types/components/EdgeMesh.d.ts +13 -13
- package/types/components/GeometryEdgeVisualizer.d.ts +4 -4
- package/types/components/Grid.d.ts +2 -2
- package/types/components/Line.d.ts +16 -16
- package/types/components/MultiLinePath.d.ts +4 -4
- package/types/components/MultiLineText2D.d.ts +10 -10
- package/types/components/ObjectAxis.d.ts +3 -3
- package/types/components/ObjectOrientedBoundingBox.d.ts +18 -18
- package/types/components/PlaneHelper.d.ts +6 -6
- package/types/components/Shape2D.d.ts +4 -4
- package/types/components/Shape3D.d.ts +3 -3
- package/types/components/Text2D.d.ts +13 -13
- package/types/components/UIElement.d.ts +52 -52
- package/types/components/UpdatableMaterialMesh.d.ts +4 -4
- package/types/components/WorldImage.d.ts +13 -13
- package/types/components/sdf_text/SDFText.d.ts +30 -30
- package/types/components/sdf_text/SDFTextBatch.d.ts +12 -12
- package/types/components/sdf_text/TextGlyph.d.ts +6 -6
- package/types/editor/ManipulatorHandle.d.ts +14 -14
- package/types/editor/ObjectEditor.d.ts +16 -16
- package/types/editor/ObjectManipulator.d.ts +19 -19
- package/types/editor/ObjectPicker.d.ts +16 -16
- package/types/gpu_particles/GPUParticleSystem.d.ts +12 -12
- package/types/gpu_particles/ParticleAttribute.d.ts +15 -15
- package/types/gpu_particles/ParticlePositionAttribute.d.ts +4 -4
- package/types/html_utilities/CSSAnimator.d.ts +30 -30
- package/types/html_utilities/css_animator_states/Animating.d.ts +8 -8
- package/types/html_utilities/css_animator_states/Idle.d.ts +6 -6
- package/types/index.d.ts +89 -89
- package/types/materials/AddMaterial.d.ts +5 -5
- package/types/materials/AlphaFilterMaterial.d.ts +6 -6
- package/types/materials/BaseShaderMaterial.d.ts +3 -3
- package/types/materials/BlitMaterial.d.ts +3 -3
- package/types/materials/BloomComposeMaterial.d.ts +7 -7
- package/types/materials/BoxBlurMaterial.d.ts +4 -4
- package/types/materials/ClearAlphaMaterial.d.ts +3 -3
- package/types/materials/ClearColorMaterial.d.ts +7 -7
- package/types/materials/ClearDepthNormalMaterial.d.ts +4 -4
- package/types/materials/DeferredRendererComposeMaterial.d.ts +7 -7
- package/types/materials/DepthNormalMaterial.d.ts +4 -4
- package/types/materials/DisplayNormalTextureMaterial.d.ts +4 -4
- package/types/materials/DualFilteringBlurMaterial.d.ts +4 -4
- package/types/materials/FXAAMaterial.d.ts +3 -3
- package/types/materials/GaussianBlurMaterial.d.ts +6 -6
- package/types/materials/LuminosityHighPassMaterial.d.ts +4 -4
- package/types/materials/MedianFilterMaterial.d.ts +6 -6
- package/types/materials/NormalMaterial.d.ts +2 -2
- package/types/materials/SDFScreenTextMaterial.d.ts +11 -11
- package/types/materials/SDFTextMaterial.d.ts +12 -12
- package/types/materials/SSAOComposeMaterial.d.ts +4 -4
- package/types/materials/SSAOMaterial.d.ts +6 -6
- package/types/materials/ScreenSpaceTextureMaterial.d.ts +7 -7
- package/types/materials/UIElementMaterial.d.ts +7 -7
- package/types/materials/UnrealBloomComposeMaterial.d.ts +17 -17
- package/types/materials/UnrealBlurMaterial.d.ts +4 -4
- package/types/materials/UnrealComposeMaterial.d.ts +4 -4
- package/types/materials/ViewPositionMaterial.d.ts +3 -3
- package/types/materials/deferred/DeferredPointLightMaterial.d.ts +10 -10
- package/types/materials/gpu_particles/ParticleStorageMaterial.d.ts +3 -3
- package/types/materials/gpu_particles/PositionStorageMaterial.d.ts +4 -4
- package/types/object_pool/Pool.d.ts +10 -10
- package/types/primitives/Arrow.d.ts +8 -8
- package/types/primitives/Cube.d.ts +3 -3
- package/types/primitives/HorizontalPlane.d.ts +3 -3
- package/types/primitives/Sphere.d.ts +3 -3
- package/types/primitives/VerticalPlane.d.ts +3 -3
- package/types/raycast/GroupRaycaster.d.ts +13 -13
- package/types/raycast/PlaneDragResolver.d.ts +14 -14
- package/types/raycast/PlaneRaycastResolver.d.ts +5 -5
- package/types/raycast/PlaneRaycaster.d.ts +7 -7
- package/types/raycast/RaycastResolver.d.ts +5 -5
- package/types/raycast/SurfaceDragResolver.d.ts +13 -13
- package/types/raycast/states/BaseState.d.ts +5 -5
- package/types/raycast/states/IdleState.d.ts +5 -5
- package/types/raycast/states/OnRaycastEnter.d.ts +5 -5
- package/types/raycast/states/OnRaycastExit.d.ts +4 -4
- package/types/raycast/states/OnRaycastHover.d.ts +4 -4
- package/types/render_mode/BaseRender.d.ts +7 -7
- package/types/render_mode/BloomRender.d.ts +10 -10
- package/types/render_mode/DebugNormalsRender.d.ts +4 -4
- package/types/render_mode/DeferredRender.d.ts +9 -9
- package/types/render_mode/NormalAORender.d.ts +16 -16
- package/types/render_mode/NormalRender.d.ts +4 -4
- package/types/render_mode/OutlineRender.d.ts +20 -20
- package/types/render_mode/PlanarReflectionsRender.d.ts +13 -13
- package/types/render_mode/TransparencyMixRender.d.ts +21 -21
- package/types/render_mode/UnrealBloomRender.d.ts +19 -19
- package/types/render_utilities/Blitter.d.ts +16 -16
- package/types/render_utilities/Blurrer.d.ts +9 -9
- package/types/render_utilities/DepthAndNormalsRenderer.d.ts +12 -12
- package/types/render_utilities/DualFilteringBlurrer.d.ts +19 -19
- package/types/render_utilities/GaussianBlurrer.d.ts +27 -27
- package/types/render_utilities/MedianFilter.d.ts +10 -10
- package/types/render_utilities/ViewPositionRenderer.d.ts +9 -9
- package/types/resource_loader/AbstractLoader.d.ts +18 -18
- package/types/resource_loader/AudioLoader.d.ts +8 -8
- package/types/resource_loader/BasisLoader.d.ts +6 -6
- package/types/resource_loader/CubemapLoader.d.ts +7 -7
- package/types/resource_loader/DAELoader.d.ts +6 -6
- package/types/resource_loader/DDSLoader.d.ts +6 -6
- package/types/resource_loader/FileLoader.d.ts +6 -6
- package/types/resource_loader/FontLoader.d.ts +6 -6
- package/types/resource_loader/GLTFDRACOLoader.d.ts +7 -7
- package/types/resource_loader/GLTFLoader.d.ts +5 -5
- package/types/resource_loader/HDRCubeTextureLoader.d.ts +7 -7
- package/types/resource_loader/JSONLoader.d.ts +6 -6
- package/types/resource_loader/OBJLoader.d.ts +6 -6
- package/types/resource_loader/PointArrayLoader.d.ts +7 -7
- package/types/resource_loader/RGBETextureLoader.d.ts +6 -6
- package/types/resource_loader/ResourceBatch.d.ts +13 -13
- package/types/resource_loader/SVGLoader.d.ts +6 -6
- package/types/resource_loader/TextLoader.d.ts +6 -6
- package/types/resource_loader/TextureLoader.d.ts +6 -6
- package/types/resource_loader/VideoLoader.d.ts +6 -6
- package/types/static_batcher/GeometryBatch.d.ts +37 -37
- package/types/static_batcher/GeometryBatcher.d.ts +7 -7
- package/types/ui/ui_element_position/ScreenSpacePosition.d.ts +4 -4
- package/types/ui/ui_element_position/WorldSpacePosition.d.ts +5 -5
- package/types/ui/ui_element_state/OnIdle.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseEnter.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseExit.d.ts +5 -5
- package/types/ui/ui_element_state/OnMouseHover.d.ts +5 -5
- package/types/ui/ui_element_state/UIElementState.d.ts +5 -5
- package/types/utilities/ArrayUtilities.d.ts +7 -7
- package/types/utilities/CameraUtilities.d.ts +24 -24
- package/types/utilities/EasingFunctions.d.ts +35 -35
- package/types/utilities/FrustumPointFitter.d.ts +14 -14
- package/types/utilities/GeometryUtilities.d.ts +4 -4
- package/types/utilities/ImageUtilities.d.ts +4 -4
- package/types/utilities/MeshSampler.d.ts +14 -14
- package/types/utilities/ModelUtilities.d.ts +13 -13
- package/types/utilities/OMath.d.ts +21 -21
- package/types/utilities/ObjectUtilities.d.ts +5 -5
- package/types/utilities/OrthographicFrustumPointFitter.d.ts +7 -7
- package/types/utilities/PerspectiveFrustumPointFitter.d.ts +12 -12
- package/types/utilities/StringUtilities.d.ts +5 -5
- package/types/utilities/TimeUtilities.d.ts +3 -3
- package/types/utilities/Validation.d.ts +6 -6
- package/types/view_components/ApplicationView.d.ts +11 -11
- package/types/view_components/ViewComponent.d.ts +13 -13
- package/types/view_components/ViewComponentManager.d.ts +10 -10
- package/types/view_components/ViewContext.d.ts +6 -6
- package/types/view_components/ViewManager.d.ts +24 -24
- package/types/view_components/ViewState.d.ts +15 -15
- package/types/view_components/transition/ActionSequencerBuilder.d.ts +15 -15
- package/types/view_components/transition/DrawIOAnimationSheet.d.ts +17 -17
- package/types/view_components/transition/TransitionTable.d.ts +8 -8
- package/types/view_components/transition/ViewStateTransitionHandler.d.ts +16 -16
|
@@ -1,264 +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
|
-
|
|
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
|
+
|