@kurot/core 1.0.12
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 +21 -0
- package/README.md +154 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/kurot/benchmark/BenchmarkRunner.d.ts +60 -0
- package/dist/kurot/benchmark/BenchmarkRunner.d.ts.map +1 -0
- package/dist/kurot/benchmark/BenchmarkRunner.js +112 -0
- package/dist/kurot/benchmark/BenchmarkRunner.js.map +1 -0
- package/dist/kurot/benchmark/MetricsCollector.d.ts +34 -0
- package/dist/kurot/benchmark/MetricsCollector.d.ts.map +1 -0
- package/dist/kurot/benchmark/MetricsCollector.js +123 -0
- package/dist/kurot/benchmark/MetricsCollector.js.map +1 -0
- package/dist/kurot/benchmark/PerfPanel.d.ts +24 -0
- package/dist/kurot/benchmark/PerfPanel.d.ts.map +1 -0
- package/dist/kurot/benchmark/PerfPanel.js +131 -0
- package/dist/kurot/benchmark/PerfPanel.js.map +1 -0
- package/dist/kurot/benchmark/ReportExporter.d.ts +8 -0
- package/dist/kurot/benchmark/ReportExporter.d.ts.map +1 -0
- package/dist/kurot/benchmark/ReportExporter.js +54 -0
- package/dist/kurot/benchmark/ReportExporter.js.map +1 -0
- package/dist/kurot/benchmark/SceneRegistry.d.ts +16 -0
- package/dist/kurot/benchmark/SceneRegistry.d.ts.map +1 -0
- package/dist/kurot/benchmark/SceneRegistry.js +233 -0
- package/dist/kurot/benchmark/SceneRegistry.js.map +1 -0
- package/dist/kurot/benchmark/types.d.ts +47 -0
- package/dist/kurot/benchmark/types.d.ts.map +1 -0
- package/dist/kurot/benchmark/types.js +2 -0
- package/dist/kurot/benchmark/types.js.map +1 -0
- package/dist/kurot/display/Bitmap.d.ts +53 -0
- package/dist/kurot/display/Bitmap.d.ts.map +1 -0
- package/dist/kurot/display/Bitmap.js +185 -0
- package/dist/kurot/display/Bitmap.js.map +1 -0
- package/dist/kurot/display/DisplayObject.d.ts +253 -0
- package/dist/kurot/display/DisplayObject.d.ts.map +1 -0
- package/dist/kurot/display/DisplayObject.js +833 -0
- package/dist/kurot/display/DisplayObject.js.map +1 -0
- package/dist/kurot/display/DisplayObjectContainer.d.ts +57 -0
- package/dist/kurot/display/DisplayObjectContainer.d.ts.map +1 -0
- package/dist/kurot/display/DisplayObjectContainer.js +330 -0
- package/dist/kurot/display/DisplayObjectContainer.js.map +1 -0
- package/dist/kurot/display/Graphics.d.ts +48 -0
- package/dist/kurot/display/Graphics.d.ts.map +1 -0
- package/dist/kurot/display/Graphics.js +315 -0
- package/dist/kurot/display/Graphics.js.map +1 -0
- package/dist/kurot/display/GraphicsPath.d.ts +112 -0
- package/dist/kurot/display/GraphicsPath.d.ts.map +1 -0
- package/dist/kurot/display/GraphicsPath.js +2 -0
- package/dist/kurot/display/GraphicsPath.js.map +1 -0
- package/dist/kurot/display/Mesh.d.ts +21 -0
- package/dist/kurot/display/Mesh.d.ts.map +1 -0
- package/dist/kurot/display/Mesh.js +56 -0
- package/dist/kurot/display/Mesh.js.map +1 -0
- package/dist/kurot/display/Shape.d.ts +12 -0
- package/dist/kurot/display/Shape.d.ts.map +1 -0
- package/dist/kurot/display/Shape.js +35 -0
- package/dist/kurot/display/Shape.js.map +1 -0
- package/dist/kurot/display/Sprite.d.ts +13 -0
- package/dist/kurot/display/Sprite.d.ts.map +1 -0
- package/dist/kurot/display/Sprite.js +38 -0
- package/dist/kurot/display/Sprite.js.map +1 -0
- package/dist/kurot/display/Stage.d.ts +45 -0
- package/dist/kurot/display/Stage.d.ts.map +1 -0
- package/dist/kurot/display/Stage.js +107 -0
- package/dist/kurot/display/Stage.js.map +1 -0
- package/dist/kurot/display/enums/BitmapFillMode.d.ts +7 -0
- package/dist/kurot/display/enums/BitmapFillMode.d.ts.map +1 -0
- package/dist/kurot/display/enums/BitmapFillMode.js +6 -0
- package/dist/kurot/display/enums/BitmapFillMode.js.map +1 -0
- package/dist/kurot/display/enums/BlendMode.d.ts +24 -0
- package/dist/kurot/display/enums/BlendMode.d.ts.map +1 -0
- package/dist/kurot/display/enums/BlendMode.js +31 -0
- package/dist/kurot/display/enums/BlendMode.js.map +1 -0
- package/dist/kurot/display/enums/CapsStyle.d.ts +7 -0
- package/dist/kurot/display/enums/CapsStyle.d.ts.map +1 -0
- package/dist/kurot/display/enums/CapsStyle.js +6 -0
- package/dist/kurot/display/enums/CapsStyle.js.map +1 -0
- package/dist/kurot/display/enums/GradientType.d.ts +6 -0
- package/dist/kurot/display/enums/GradientType.d.ts.map +1 -0
- package/dist/kurot/display/enums/GradientType.js +5 -0
- package/dist/kurot/display/enums/GradientType.js.map +1 -0
- package/dist/kurot/display/enums/JointStyle.d.ts +7 -0
- package/dist/kurot/display/enums/JointStyle.d.ts.map +1 -0
- package/dist/kurot/display/enums/JointStyle.js +6 -0
- package/dist/kurot/display/enums/JointStyle.js.map +1 -0
- package/dist/kurot/display/enums/OrientationMode.d.ts +8 -0
- package/dist/kurot/display/enums/OrientationMode.d.ts.map +1 -0
- package/dist/kurot/display/enums/OrientationMode.js +7 -0
- package/dist/kurot/display/enums/OrientationMode.js.map +1 -0
- package/dist/kurot/display/enums/StageScaleMode.d.ts +12 -0
- package/dist/kurot/display/enums/StageScaleMode.d.ts.map +1 -0
- package/dist/kurot/display/enums/StageScaleMode.js +11 -0
- package/dist/kurot/display/enums/StageScaleMode.js.map +1 -0
- package/dist/kurot/display/enums/index.d.ts +8 -0
- package/dist/kurot/display/enums/index.d.ts.map +1 -0
- package/dist/kurot/display/enums/index.js +8 -0
- package/dist/kurot/display/enums/index.js.map +1 -0
- package/dist/kurot/display/index.d.ts +21 -0
- package/dist/kurot/display/index.d.ts.map +1 -0
- package/dist/kurot/display/index.js +20 -0
- package/dist/kurot/display/index.js.map +1 -0
- package/dist/kurot/display/texture/BitmapData.d.ts +36 -0
- package/dist/kurot/display/texture/BitmapData.d.ts.map +1 -0
- package/dist/kurot/display/texture/BitmapData.js +129 -0
- package/dist/kurot/display/texture/BitmapData.js.map +1 -0
- package/dist/kurot/display/texture/RenderTexture.d.ts +15 -0
- package/dist/kurot/display/texture/RenderTexture.d.ts.map +1 -0
- package/dist/kurot/display/texture/RenderTexture.js +58 -0
- package/dist/kurot/display/texture/RenderTexture.js.map +1 -0
- package/dist/kurot/display/texture/SpriteSheet.d.ts +12 -0
- package/dist/kurot/display/texture/SpriteSheet.d.ts.map +1 -0
- package/dist/kurot/display/texture/SpriteSheet.js +32 -0
- package/dist/kurot/display/texture/SpriteSheet.js.map +1 -0
- package/dist/kurot/display/texture/Texture.d.ts +32 -0
- package/dist/kurot/display/texture/Texture.d.ts.map +1 -0
- package/dist/kurot/display/texture/Texture.js +76 -0
- package/dist/kurot/display/texture/Texture.js.map +1 -0
- package/dist/kurot/display/texture/index.d.ts +5 -0
- package/dist/kurot/display/texture/index.d.ts.map +1 -0
- package/dist/kurot/display/texture/index.js +5 -0
- package/dist/kurot/display/texture/index.js.map +1 -0
- package/dist/kurot/events/Event.d.ts +58 -0
- package/dist/kurot/events/Event.d.ts.map +1 -0
- package/dist/kurot/events/Event.js +142 -0
- package/dist/kurot/events/Event.js.map +1 -0
- package/dist/kurot/events/EventDispatcher.d.ts +25 -0
- package/dist/kurot/events/EventDispatcher.d.ts.map +1 -0
- package/dist/kurot/events/EventDispatcher.js +121 -0
- package/dist/kurot/events/EventDispatcher.js.map +1 -0
- package/dist/kurot/events/EventPhase.d.ts +6 -0
- package/dist/kurot/events/EventPhase.d.ts.map +1 -0
- package/dist/kurot/events/EventPhase.js +2 -0
- package/dist/kurot/events/EventPhase.js.map +1 -0
- package/dist/kurot/events/FocusEvent.d.ts +7 -0
- package/dist/kurot/events/FocusEvent.d.ts.map +1 -0
- package/dist/kurot/events/FocusEvent.js +11 -0
- package/dist/kurot/events/FocusEvent.js.map +1 -0
- package/dist/kurot/events/HTTPStatusEvent.d.ts +10 -0
- package/dist/kurot/events/HTTPStatusEvent.d.ts.map +1 -0
- package/dist/kurot/events/HTTPStatusEvent.js +24 -0
- package/dist/kurot/events/HTTPStatusEvent.js.map +1 -0
- package/dist/kurot/events/IEventDispatcher.d.ts +10 -0
- package/dist/kurot/events/IEventDispatcher.d.ts.map +1 -0
- package/dist/kurot/events/IEventDispatcher.js +2 -0
- package/dist/kurot/events/IEventDispatcher.js.map +1 -0
- package/dist/kurot/events/IOErrorEvent.d.ts +8 -0
- package/dist/kurot/events/IOErrorEvent.d.ts.map +1 -0
- package/dist/kurot/events/IOErrorEvent.js +17 -0
- package/dist/kurot/events/IOErrorEvent.js.map +1 -0
- package/dist/kurot/events/ProgressEvent.d.ts +11 -0
- package/dist/kurot/events/ProgressEvent.d.ts.map +1 -0
- package/dist/kurot/events/ProgressEvent.js +25 -0
- package/dist/kurot/events/ProgressEvent.js.map +1 -0
- package/dist/kurot/events/StageOrientationEvent.d.ts +8 -0
- package/dist/kurot/events/StageOrientationEvent.d.ts.map +1 -0
- package/dist/kurot/events/StageOrientationEvent.js +17 -0
- package/dist/kurot/events/StageOrientationEvent.js.map +1 -0
- package/dist/kurot/events/TextEvent.d.ts +9 -0
- package/dist/kurot/events/TextEvent.d.ts.map +1 -0
- package/dist/kurot/events/TextEvent.js +21 -0
- package/dist/kurot/events/TextEvent.js.map +1 -0
- package/dist/kurot/events/TimerEvent.d.ts +14 -0
- package/dist/kurot/events/TimerEvent.d.ts.map +1 -0
- package/dist/kurot/events/TimerEvent.js +27 -0
- package/dist/kurot/events/TimerEvent.js.map +1 -0
- package/dist/kurot/events/TouchEvent.d.ts +32 -0
- package/dist/kurot/events/TouchEvent.d.ts.map +1 -0
- package/dist/kurot/events/TouchEvent.js +85 -0
- package/dist/kurot/events/TouchEvent.js.map +1 -0
- package/dist/kurot/events/index.d.ts +13 -0
- package/dist/kurot/events/index.d.ts.map +1 -0
- package/dist/kurot/events/index.js +11 -0
- package/dist/kurot/events/index.js.map +1 -0
- package/dist/kurot/external/ExternalInterface.d.ts +18 -0
- package/dist/kurot/external/ExternalInterface.d.ts.map +1 -0
- package/dist/kurot/external/ExternalInterface.js +23 -0
- package/dist/kurot/external/ExternalInterface.js.map +1 -0
- package/dist/kurot/external/index.d.ts +2 -0
- package/dist/kurot/external/index.d.ts.map +1 -0
- package/dist/kurot/external/index.js +2 -0
- package/dist/kurot/external/index.js.map +1 -0
- package/dist/kurot/filters/BlurFilter.d.ts +16 -0
- package/dist/kurot/filters/BlurFilter.d.ts.map +1 -0
- package/dist/kurot/filters/BlurFilter.js +56 -0
- package/dist/kurot/filters/BlurFilter.js.map +1 -0
- package/dist/kurot/filters/ColorMatrixFilter.d.ts +10 -0
- package/dist/kurot/filters/ColorMatrixFilter.d.ts.map +1 -0
- package/dist/kurot/filters/ColorMatrixFilter.js +51 -0
- package/dist/kurot/filters/ColorMatrixFilter.js.map +1 -0
- package/dist/kurot/filters/CustomFilter.d.ts +12 -0
- package/dist/kurot/filters/CustomFilter.d.ts.map +1 -0
- package/dist/kurot/filters/CustomFilter.js +43 -0
- package/dist/kurot/filters/CustomFilter.js.map +1 -0
- package/dist/kurot/filters/DropShadowFilter.d.ts +16 -0
- package/dist/kurot/filters/DropShadowFilter.d.ts.map +1 -0
- package/dist/kurot/filters/DropShadowFilter.js +76 -0
- package/dist/kurot/filters/DropShadowFilter.js.map +1 -0
- package/dist/kurot/filters/Filter.d.ts +18 -0
- package/dist/kurot/filters/Filter.d.ts.map +1 -0
- package/dist/kurot/filters/Filter.js +22 -0
- package/dist/kurot/filters/Filter.js.map +1 -0
- package/dist/kurot/filters/GlowFilter.d.ts +34 -0
- package/dist/kurot/filters/GlowFilter.d.ts.map +1 -0
- package/dist/kurot/filters/GlowFilter.js +131 -0
- package/dist/kurot/filters/GlowFilter.js.map +1 -0
- package/dist/kurot/filters/index.d.ts +7 -0
- package/dist/kurot/filters/index.d.ts.map +1 -0
- package/dist/kurot/filters/index.js +7 -0
- package/dist/kurot/filters/index.js.map +1 -0
- package/dist/kurot/geom/Matrix.d.ts +50 -0
- package/dist/kurot/geom/Matrix.d.ts.map +1 -0
- package/dist/kurot/geom/Matrix.js +310 -0
- package/dist/kurot/geom/Matrix.js.map +1 -0
- package/dist/kurot/geom/Point.d.ts +23 -0
- package/dist/kurot/geom/Point.d.ts.map +1 -0
- package/dist/kurot/geom/Point.js +73 -0
- package/dist/kurot/geom/Point.js.map +1 -0
- package/dist/kurot/geom/Rectangle.d.ts +47 -0
- package/dist/kurot/geom/Rectangle.d.ts.map +1 -0
- package/dist/kurot/geom/Rectangle.js +174 -0
- package/dist/kurot/geom/Rectangle.js.map +1 -0
- package/dist/kurot/geom/index.d.ts +4 -0
- package/dist/kurot/geom/index.d.ts.map +1 -0
- package/dist/kurot/geom/index.js +4 -0
- package/dist/kurot/geom/index.js.map +1 -0
- package/dist/kurot/localStorage/index.d.ts +2 -0
- package/dist/kurot/localStorage/index.d.ts.map +1 -0
- package/dist/kurot/localStorage/index.js +2 -0
- package/dist/kurot/localStorage/index.js.map +1 -0
- package/dist/kurot/localStorage/localStorage.d.ts +5 -0
- package/dist/kurot/localStorage/localStorage.d.ts.map +1 -0
- package/dist/kurot/localStorage/localStorage.js +19 -0
- package/dist/kurot/localStorage/localStorage.js.map +1 -0
- package/dist/kurot/media/Sound.d.ts +33 -0
- package/dist/kurot/media/Sound.d.ts.map +1 -0
- package/dist/kurot/media/Sound.js +163 -0
- package/dist/kurot/media/Sound.js.map +1 -0
- package/dist/kurot/media/SoundChannel.d.ts +28 -0
- package/dist/kurot/media/SoundChannel.d.ts.map +1 -0
- package/dist/kurot/media/SoundChannel.js +117 -0
- package/dist/kurot/media/SoundChannel.js.map +1 -0
- package/dist/kurot/media/Video.d.ts +50 -0
- package/dist/kurot/media/Video.d.ts.map +1 -0
- package/dist/kurot/media/Video.js +242 -0
- package/dist/kurot/media/Video.js.map +1 -0
- package/dist/kurot/media/index.d.ts +4 -0
- package/dist/kurot/media/index.d.ts.map +1 -0
- package/dist/kurot/media/index.js +4 -0
- package/dist/kurot/media/index.js.map +1 -0
- package/dist/kurot/net/HttpMethod.d.ts +12 -0
- package/dist/kurot/net/HttpMethod.d.ts.map +1 -0
- package/dist/kurot/net/HttpMethod.js +10 -0
- package/dist/kurot/net/HttpMethod.js.map +1 -0
- package/dist/kurot/net/HttpRequest.d.ts +69 -0
- package/dist/kurot/net/HttpRequest.d.ts.map +1 -0
- package/dist/kurot/net/HttpRequest.js +121 -0
- package/dist/kurot/net/HttpRequest.js.map +1 -0
- package/dist/kurot/net/HttpResponseType.d.ts +12 -0
- package/dist/kurot/net/HttpResponseType.d.ts.map +1 -0
- package/dist/kurot/net/HttpResponseType.js +10 -0
- package/dist/kurot/net/HttpResponseType.js.map +1 -0
- package/dist/kurot/net/ImageLoader.d.ts +34 -0
- package/dist/kurot/net/ImageLoader.d.ts.map +1 -0
- package/dist/kurot/net/ImageLoader.js +54 -0
- package/dist/kurot/net/ImageLoader.js.map +1 -0
- package/dist/kurot/net/index.d.ts +7 -0
- package/dist/kurot/net/index.d.ts.map +1 -0
- package/dist/kurot/net/index.js +5 -0
- package/dist/kurot/net/index.js.map +1 -0
- package/dist/kurot/player/KurotOptions.d.ts +25 -0
- package/dist/kurot/player/KurotOptions.d.ts.map +1 -0
- package/dist/kurot/player/KurotOptions.js +2 -0
- package/dist/kurot/player/KurotOptions.js.map +1 -0
- package/dist/kurot/player/Player.d.ts +45 -0
- package/dist/kurot/player/Player.d.ts.map +1 -0
- package/dist/kurot/player/Player.js +158 -0
- package/dist/kurot/player/Player.js.map +1 -0
- package/dist/kurot/player/RenderPipe.d.ts +33 -0
- package/dist/kurot/player/RenderPipe.d.ts.map +1 -0
- package/dist/kurot/player/RenderPipe.js +2 -0
- package/dist/kurot/player/RenderPipe.js.map +1 -0
- package/dist/kurot/player/ScreenAdapter.d.ts +29 -0
- package/dist/kurot/player/ScreenAdapter.d.ts.map +1 -0
- package/dist/kurot/player/ScreenAdapter.js +127 -0
- package/dist/kurot/player/ScreenAdapter.js.map +1 -0
- package/dist/kurot/player/SystemTicker.d.ts +63 -0
- package/dist/kurot/player/SystemTicker.d.ts.map +1 -0
- package/dist/kurot/player/SystemTicker.js +209 -0
- package/dist/kurot/player/SystemTicker.js.map +1 -0
- package/dist/kurot/player/TouchHandler.d.ts +39 -0
- package/dist/kurot/player/TouchHandler.d.ts.map +1 -0
- package/dist/kurot/player/TouchHandler.js +152 -0
- package/dist/kurot/player/TouchHandler.js.map +1 -0
- package/dist/kurot/player/canvas/CanvasRenderer.d.ts +50 -0
- package/dist/kurot/player/canvas/CanvasRenderer.d.ts.map +1 -0
- package/dist/kurot/player/canvas/CanvasRenderer.js +811 -0
- package/dist/kurot/player/canvas/CanvasRenderer.js.map +1 -0
- package/dist/kurot/player/canvas/DisplayList.d.ts +36 -0
- package/dist/kurot/player/canvas/DisplayList.d.ts.map +1 -0
- package/dist/kurot/player/canvas/DisplayList.js +100 -0
- package/dist/kurot/player/canvas/DisplayList.js.map +1 -0
- package/dist/kurot/player/canvas/RenderBuffer.d.ts +35 -0
- package/dist/kurot/player/canvas/RenderBuffer.d.ts.map +1 -0
- package/dist/kurot/player/canvas/RenderBuffer.js +83 -0
- package/dist/kurot/player/canvas/RenderBuffer.js.map +1 -0
- package/dist/kurot/player/canvas/index.d.ts +4 -0
- package/dist/kurot/player/canvas/index.d.ts.map +1 -0
- package/dist/kurot/player/canvas/index.js +4 -0
- package/dist/kurot/player/canvas/index.js.map +1 -0
- package/dist/kurot/player/createPlayer.d.ts +36 -0
- package/dist/kurot/player/createPlayer.d.ts.map +1 -0
- package/dist/kurot/player/createPlayer.js +83 -0
- package/dist/kurot/player/createPlayer.js.map +1 -0
- package/dist/kurot/player/index.d.ts +11 -0
- package/dist/kurot/player/index.d.ts.map +1 -0
- package/dist/kurot/player/index.js +14 -0
- package/dist/kurot/player/index.js.map +1 -0
- package/dist/kurot/player/webgl/InstructionSet.d.ts +61 -0
- package/dist/kurot/player/webgl/InstructionSet.d.ts.map +1 -0
- package/dist/kurot/player/webgl/InstructionSet.js +84 -0
- package/dist/kurot/player/webgl/InstructionSet.js.map +1 -0
- package/dist/kurot/player/webgl/MultiTextureBatcher.d.ts +39 -0
- package/dist/kurot/player/webgl/MultiTextureBatcher.d.ts.map +1 -0
- package/dist/kurot/player/webgl/MultiTextureBatcher.js +63 -0
- package/dist/kurot/player/webgl/MultiTextureBatcher.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLDrawCmdManager.d.ts +57 -0
- package/dist/kurot/player/webgl/WebGLDrawCmdManager.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLDrawCmdManager.js +197 -0
- package/dist/kurot/player/webgl/WebGLDrawCmdManager.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLProgram.d.ts +15 -0
- package/dist/kurot/player/webgl/WebGLProgram.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLProgram.js +32 -0
- package/dist/kurot/player/webgl/WebGLProgram.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts +57 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.js +254 -0
- package/dist/kurot/player/webgl/WebGLRenderBuffer.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts +128 -0
- package/dist/kurot/player/webgl/WebGLRenderContext.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderContext.js +933 -0
- package/dist/kurot/player/webgl/WebGLRenderContext.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderTarget.d.ts +20 -0
- package/dist/kurot/player/webgl/WebGLRenderTarget.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderTarget.js +90 -0
- package/dist/kurot/player/webgl/WebGLRenderTarget.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderer.d.ts +208 -0
- package/dist/kurot/player/webgl/WebGLRenderer.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLRenderer.js +921 -0
- package/dist/kurot/player/webgl/WebGLRenderer.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLUtils.d.ts +17 -0
- package/dist/kurot/player/webgl/WebGLUtils.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLUtils.js +56 -0
- package/dist/kurot/player/webgl/WebGLUtils.js.map +1 -0
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts +39 -0
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.d.ts.map +1 -0
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.js +375 -0
- package/dist/kurot/player/webgl/WebGLVertexArrayObject.js.map +1 -0
- package/dist/kurot/player/webgl/index.d.ts +11 -0
- package/dist/kurot/player/webgl/index.d.ts.map +1 -0
- package/dist/kurot/player/webgl/index.js +11 -0
- package/dist/kurot/player/webgl/index.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/BitmapPipe.d.ts +35 -0
- package/dist/kurot/player/webgl/pipes/BitmapPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/BitmapPipe.js +130 -0
- package/dist/kurot/player/webgl/pipes/BitmapPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/FilterPipe.d.ts +68 -0
- package/dist/kurot/player/webgl/pipes/FilterPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/FilterPipe.js +176 -0
- package/dist/kurot/player/webgl/pipes/FilterPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.d.ts +38 -0
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.js +165 -0
- package/dist/kurot/player/webgl/pipes/GraphicsPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/MaskPipe.d.ts +58 -0
- package/dist/kurot/player/webgl/pipes/MaskPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/MaskPipe.js +206 -0
- package/dist/kurot/player/webgl/pipes/MaskPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/MeshPipe.d.ts +22 -0
- package/dist/kurot/player/webgl/pipes/MeshPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/MeshPipe.js +50 -0
- package/dist/kurot/player/webgl/pipes/MeshPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/ParticlePipe.d.ts +23 -0
- package/dist/kurot/player/webgl/pipes/ParticlePipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/ParticlePipe.js +48 -0
- package/dist/kurot/player/webgl/pipes/ParticlePipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/TextPipe.d.ts +54 -0
- package/dist/kurot/player/webgl/pipes/TextPipe.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/TextPipe.js +201 -0
- package/dist/kurot/player/webgl/pipes/TextPipe.js.map +1 -0
- package/dist/kurot/player/webgl/pipes/index.d.ts +8 -0
- package/dist/kurot/player/webgl/pipes/index.d.ts.map +1 -0
- package/dist/kurot/player/webgl/pipes/index.js +8 -0
- package/dist/kurot/player/webgl/pipes/index.js.map +1 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib.d.ts +23 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib.d.ts.map +1 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib.js +263 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib.js.map +1 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib2.d.ts +23 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib2.d.ts.map +1 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib2.js +280 -0
- package/dist/kurot/player/webgl/shaders/ShaderLib2.js.map +1 -0
- package/dist/kurot/player/webgl/shaders/index.d.ts +5 -0
- package/dist/kurot/player/webgl/shaders/index.d.ts.map +1 -0
- package/dist/kurot/player/webgl/shaders/index.js +5 -0
- package/dist/kurot/player/webgl/shaders/index.js.map +1 -0
- package/dist/kurot/resource/Resource.d.ts +126 -0
- package/dist/kurot/resource/Resource.d.ts.map +1 -0
- package/dist/kurot/resource/Resource.js +377 -0
- package/dist/kurot/resource/Resource.js.map +1 -0
- package/dist/kurot/resource/ResourceConfig.d.ts +71 -0
- package/dist/kurot/resource/ResourceConfig.d.ts.map +1 -0
- package/dist/kurot/resource/ResourceConfig.js +146 -0
- package/dist/kurot/resource/ResourceConfig.js.map +1 -0
- package/dist/kurot/resource/ResourceEvent.d.ts +29 -0
- package/dist/kurot/resource/ResourceEvent.d.ts.map +1 -0
- package/dist/kurot/resource/ResourceEvent.js +12 -0
- package/dist/kurot/resource/ResourceEvent.js.map +1 -0
- package/dist/kurot/resource/ResourceItem.d.ts +24 -0
- package/dist/kurot/resource/ResourceItem.d.ts.map +1 -0
- package/dist/kurot/resource/ResourceItem.js +29 -0
- package/dist/kurot/resource/ResourceItem.js.map +1 -0
- package/dist/kurot/resource/ResourceLoader.d.ts +73 -0
- package/dist/kurot/resource/ResourceLoader.d.ts.map +1 -0
- package/dist/kurot/resource/ResourceLoader.js +174 -0
- package/dist/kurot/resource/ResourceLoader.js.map +1 -0
- package/dist/kurot/resource/analyzers/AnalyzerBase.d.ts +31 -0
- package/dist/kurot/resource/analyzers/AnalyzerBase.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/AnalyzerBase.js +38 -0
- package/dist/kurot/resource/analyzers/AnalyzerBase.js.map +1 -0
- package/dist/kurot/resource/analyzers/ImageAnalyzer.d.ts +13 -0
- package/dist/kurot/resource/analyzers/ImageAnalyzer.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/ImageAnalyzer.js +54 -0
- package/dist/kurot/resource/analyzers/ImageAnalyzer.js.map +1 -0
- package/dist/kurot/resource/analyzers/JsonAnalyzer.d.ts +12 -0
- package/dist/kurot/resource/analyzers/JsonAnalyzer.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/JsonAnalyzer.js +54 -0
- package/dist/kurot/resource/analyzers/JsonAnalyzer.js.map +1 -0
- package/dist/kurot/resource/analyzers/SheetAnalyzer.d.ts +32 -0
- package/dist/kurot/resource/analyzers/SheetAnalyzer.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/SheetAnalyzer.js +182 -0
- package/dist/kurot/resource/analyzers/SheetAnalyzer.js.map +1 -0
- package/dist/kurot/resource/analyzers/SoundAnalyzer.d.ts +13 -0
- package/dist/kurot/resource/analyzers/SoundAnalyzer.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/SoundAnalyzer.js +45 -0
- package/dist/kurot/resource/analyzers/SoundAnalyzer.js.map +1 -0
- package/dist/kurot/resource/analyzers/TextAnalyzer.d.ts +12 -0
- package/dist/kurot/resource/analyzers/TextAnalyzer.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/TextAnalyzer.js +49 -0
- package/dist/kurot/resource/analyzers/TextAnalyzer.js.map +1 -0
- package/dist/kurot/resource/analyzers/index.d.ts +7 -0
- package/dist/kurot/resource/analyzers/index.d.ts.map +1 -0
- package/dist/kurot/resource/analyzers/index.js +7 -0
- package/dist/kurot/resource/analyzers/index.js.map +1 -0
- package/dist/kurot/resource/index.d.ts +15 -0
- package/dist/kurot/resource/index.d.ts.map +1 -0
- package/dist/kurot/resource/index.js +15 -0
- package/dist/kurot/resource/index.js.map +1 -0
- package/dist/kurot/system/Capabilities.d.ts +46 -0
- package/dist/kurot/system/Capabilities.d.ts.map +1 -0
- package/dist/kurot/system/Capabilities.js +100 -0
- package/dist/kurot/system/Capabilities.js.map +1 -0
- package/dist/kurot/system/index.d.ts +2 -0
- package/dist/kurot/system/index.d.ts.map +1 -0
- package/dist/kurot/system/index.js +2 -0
- package/dist/kurot/system/index.js.map +1 -0
- package/dist/kurot/text/BitmapFont.d.ts +31 -0
- package/dist/kurot/text/BitmapFont.d.ts.map +1 -0
- package/dist/kurot/text/BitmapFont.js +86 -0
- package/dist/kurot/text/BitmapFont.js.map +1 -0
- package/dist/kurot/text/BitmapText.d.ts +58 -0
- package/dist/kurot/text/BitmapText.d.ts.map +1 -0
- package/dist/kurot/text/BitmapText.js +245 -0
- package/dist/kurot/text/BitmapText.js.map +1 -0
- package/dist/kurot/text/HtmlTextParser.d.ts +14 -0
- package/dist/kurot/text/HtmlTextParser.d.ts.map +1 -0
- package/dist/kurot/text/HtmlTextParser.js +147 -0
- package/dist/kurot/text/HtmlTextParser.js.map +1 -0
- package/dist/kurot/text/InputController.d.ts +29 -0
- package/dist/kurot/text/InputController.d.ts.map +1 -0
- package/dist/kurot/text/InputController.js +131 -0
- package/dist/kurot/text/InputController.js.map +1 -0
- package/dist/kurot/text/StageText.d.ts +51 -0
- package/dist/kurot/text/StageText.d.ts.map +1 -0
- package/dist/kurot/text/StageText.js +324 -0
- package/dist/kurot/text/StageText.js.map +1 -0
- package/dist/kurot/text/TextField.d.ts +149 -0
- package/dist/kurot/text/TextField.d.ts.map +1 -0
- package/dist/kurot/text/TextField.js +734 -0
- package/dist/kurot/text/TextField.js.map +1 -0
- package/dist/kurot/text/TextMeasurer.d.ts +9 -0
- package/dist/kurot/text/TextMeasurer.d.ts.map +1 -0
- package/dist/kurot/text/TextMeasurer.js +36 -0
- package/dist/kurot/text/TextMeasurer.js.map +1 -0
- package/dist/kurot/text/WordWrap.d.ts +29 -0
- package/dist/kurot/text/WordWrap.d.ts.map +1 -0
- package/dist/kurot/text/WordWrap.js +110 -0
- package/dist/kurot/text/WordWrap.js.map +1 -0
- package/dist/kurot/text/enums/HorizontalAlign.d.ts +9 -0
- package/dist/kurot/text/enums/HorizontalAlign.d.ts.map +1 -0
- package/dist/kurot/text/enums/HorizontalAlign.js +8 -0
- package/dist/kurot/text/enums/HorizontalAlign.js.map +1 -0
- package/dist/kurot/text/enums/TextFieldInputType.d.ts +7 -0
- package/dist/kurot/text/enums/TextFieldInputType.d.ts.map +1 -0
- package/dist/kurot/text/enums/TextFieldInputType.js +6 -0
- package/dist/kurot/text/enums/TextFieldInputType.js.map +1 -0
- package/dist/kurot/text/enums/TextFieldType.d.ts +6 -0
- package/dist/kurot/text/enums/TextFieldType.d.ts.map +1 -0
- package/dist/kurot/text/enums/TextFieldType.js +5 -0
- package/dist/kurot/text/enums/TextFieldType.js.map +1 -0
- package/dist/kurot/text/enums/VerticalAlign.d.ts +9 -0
- package/dist/kurot/text/enums/VerticalAlign.d.ts.map +1 -0
- package/dist/kurot/text/enums/VerticalAlign.js +8 -0
- package/dist/kurot/text/enums/VerticalAlign.js.map +1 -0
- package/dist/kurot/text/enums/index.d.ts +5 -0
- package/dist/kurot/text/enums/index.d.ts.map +1 -0
- package/dist/kurot/text/enums/index.js +5 -0
- package/dist/kurot/text/enums/index.js.map +1 -0
- package/dist/kurot/text/index.d.ts +14 -0
- package/dist/kurot/text/index.d.ts.map +1 -0
- package/dist/kurot/text/index.js +13 -0
- package/dist/kurot/text/index.js.map +1 -0
- package/dist/kurot/text/types/ITextElement.d.ts +31 -0
- package/dist/kurot/text/types/ITextElement.d.ts.map +1 -0
- package/dist/kurot/text/types/ITextElement.js +2 -0
- package/dist/kurot/text/types/ITextElement.js.map +1 -0
- package/dist/kurot/text/types/index.d.ts +2 -0
- package/dist/kurot/text/types/index.d.ts.map +1 -0
- package/dist/kurot/text/types/index.js +2 -0
- package/dist/kurot/text/types/index.js.map +1 -0
- package/dist/kurot/utils/Base64Util.d.ts +20 -0
- package/dist/kurot/utils/Base64Util.d.ts.map +1 -0
- package/dist/kurot/utils/Base64Util.js +41 -0
- package/dist/kurot/utils/Base64Util.js.map +1 -0
- package/dist/kurot/utils/ByteArray.d.ts +65 -0
- package/dist/kurot/utils/ByteArray.d.ts.map +1 -0
- package/dist/kurot/utils/ByteArray.js +300 -0
- package/dist/kurot/utils/ByteArray.js.map +1 -0
- package/dist/kurot/utils/DebugLog.d.ts +9 -0
- package/dist/kurot/utils/DebugLog.d.ts.map +1 -0
- package/dist/kurot/utils/DebugLog.js +25 -0
- package/dist/kurot/utils/DebugLog.js.map +1 -0
- package/dist/kurot/utils/FontManager.d.ts +11 -0
- package/dist/kurot/utils/FontManager.d.ts.map +1 -0
- package/dist/kurot/utils/FontManager.js +39 -0
- package/dist/kurot/utils/FontManager.js.map +1 -0
- package/dist/kurot/utils/Logger.d.ts +16 -0
- package/dist/kurot/utils/Logger.d.ts.map +1 -0
- package/dist/kurot/utils/Logger.js +26 -0
- package/dist/kurot/utils/Logger.js.map +1 -0
- package/dist/kurot/utils/NumberUtils.d.ts +15 -0
- package/dist/kurot/utils/NumberUtils.d.ts.map +1 -0
- package/dist/kurot/utils/NumberUtils.js +60 -0
- package/dist/kurot/utils/NumberUtils.js.map +1 -0
- package/dist/kurot/utils/Timer.d.ts +28 -0
- package/dist/kurot/utils/Timer.d.ts.map +1 -0
- package/dist/kurot/utils/Timer.js +67 -0
- package/dist/kurot/utils/Timer.js.map +1 -0
- package/dist/kurot/utils/index.d.ts +9 -0
- package/dist/kurot/utils/index.d.ts.map +1 -0
- package/dist/kurot/utils/index.js +9 -0
- package/dist/kurot/utils/index.js.map +1 -0
- package/dist/kurot/utils/toColorString.d.ts +2 -0
- package/dist/kurot/utils/toColorString.d.ts.map +1 -0
- package/dist/kurot/utils/toColorString.js +5 -0
- package/dist/kurot/utils/toColorString.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { TextFieldType } from '../../../text/enums/TextFieldType.js';
|
|
2
|
+
import { RenderBuffer } from '../../canvas/index.js';
|
|
3
|
+
// ── Texture GC registry ───────────────────────────────────────────────────────
|
|
4
|
+
/**
|
|
5
|
+
* GC is the actual cleanup path for cached TextField textures: nothing in the
|
|
6
|
+
* engine calls destroyRenderable() during normal TextField lifecycle (UI
|
|
7
|
+
* relayouts, virtualized lists just drop references), so this registry is what
|
|
8
|
+
* actually reclaims GPU memory. destroyRenderable() remains as an optional
|
|
9
|
+
* explicit entry for future use. Mirrors GraphicsPipe's pattern.
|
|
10
|
+
*/
|
|
11
|
+
const _textureRegistry = new FinalizationRegistry(({ gl, texture }) => {
|
|
12
|
+
gl.deleteTexture(texture);
|
|
13
|
+
});
|
|
14
|
+
// ── Pipe ──────────────────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Handles WebGL rendering of TextField display objects.
|
|
17
|
+
*
|
|
18
|
+
* **Architecture** (following Egret's `WebGLRenderer.renderText`):
|
|
19
|
+
*
|
|
20
|
+
* 1. Compute the text draw area (width × height).
|
|
21
|
+
* 2. Scale by the device pixel ratio (`canvasScaleX/Y`), clamped to
|
|
22
|
+
* `maxTextureSize` so we never exceed the GPU's limit.
|
|
23
|
+
* 3. Rasterize the text onto an offscreen `<canvas>` via `CanvasRenderer`.
|
|
24
|
+
* 4. Upload the canvas as a WebGL texture (create once, update on change).
|
|
25
|
+
* 5. Draw the texture via `buffer.context.drawTexture()`, scaling back down
|
|
26
|
+
* by `canvasScale` so the on-screen size is correct.
|
|
27
|
+
*
|
|
28
|
+
* The cache is invalidated when `tf.$renderDirty` is true or when the
|
|
29
|
+
* dimensions / DPR change.
|
|
30
|
+
*/
|
|
31
|
+
export class TextPipe {
|
|
32
|
+
// ── Static fields ─────────────────────────────────────────────────────────
|
|
33
|
+
static PIPE_ID = 'text';
|
|
34
|
+
static _pool = [];
|
|
35
|
+
// ── Instance fields ───────────────────────────────────────────────────────
|
|
36
|
+
_canvasRenderer;
|
|
37
|
+
_cache = new WeakMap();
|
|
38
|
+
_registryTokens = new WeakMap();
|
|
39
|
+
_gl;
|
|
40
|
+
// ── Constructor ───────────────────────────────────────────────────────────
|
|
41
|
+
constructor(canvasRenderer) {
|
|
42
|
+
this._canvasRenderer = canvasRenderer;
|
|
43
|
+
}
|
|
44
|
+
static _alloc(tf, ox, oy) {
|
|
45
|
+
const inst = TextPipe._pool.pop() ?? {
|
|
46
|
+
renderPipeId: 'text',
|
|
47
|
+
renderable: tf,
|
|
48
|
+
offsetX: ox,
|
|
49
|
+
offsetY: oy,
|
|
50
|
+
};
|
|
51
|
+
inst.renderable = tf;
|
|
52
|
+
inst.offsetX = ox;
|
|
53
|
+
inst.offsetY = oy;
|
|
54
|
+
return inst;
|
|
55
|
+
}
|
|
56
|
+
static release(inst) {
|
|
57
|
+
TextPipe._pool.push(inst);
|
|
58
|
+
}
|
|
59
|
+
// ── RenderPipe impl ───────────────────────────────────────────────────────
|
|
60
|
+
addToInstructionSet(tf, set) {
|
|
61
|
+
set.add(TextPipe._alloc(tf, 0, 0));
|
|
62
|
+
}
|
|
63
|
+
updateRenderable(_tf) {
|
|
64
|
+
// Cache invalidation is driven by tf.$renderDirty,
|
|
65
|
+
// which is checked at execute time — nothing to pre-upload here.
|
|
66
|
+
}
|
|
67
|
+
destroyRenderable(tf) {
|
|
68
|
+
const cache = this._cache.get(tf);
|
|
69
|
+
if (cache?.texture) {
|
|
70
|
+
// Unregister from GC registry and delete texture immediately.
|
|
71
|
+
const token = this._registryTokens.get(tf);
|
|
72
|
+
if (token) {
|
|
73
|
+
_textureRegistry.unregister(token);
|
|
74
|
+
this._registryTokens.delete(tf);
|
|
75
|
+
}
|
|
76
|
+
if (this._gl)
|
|
77
|
+
this._gl.deleteTexture(cache.texture);
|
|
78
|
+
}
|
|
79
|
+
this._cache.delete(tf);
|
|
80
|
+
}
|
|
81
|
+
// ── Execute ───────────────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Render a TextField into the WebGL buffer.
|
|
84
|
+
* Follows Egret's `WebGLRenderer.renderText` pattern:
|
|
85
|
+
*
|
|
86
|
+
* 1. Compute logical width/height from the TextField.
|
|
87
|
+
* 2. Scale by canvasScale (DPR), clamped to maxTextureSize.
|
|
88
|
+
* 3. Rasterize to offscreen canvas (if dirty).
|
|
89
|
+
* 4. Upload as WebGL texture.
|
|
90
|
+
* 5. Draw with drawTexture, scaling back by canvasScale.
|
|
91
|
+
*/
|
|
92
|
+
execute(inst, buffer) {
|
|
93
|
+
const tf = inst.renderable;
|
|
94
|
+
tf.getLinesArr(); // ensure lines are computed
|
|
95
|
+
// Cache the GL context for use in destroyRenderable.
|
|
96
|
+
if (!this._gl)
|
|
97
|
+
this._gl = buffer.context.gl;
|
|
98
|
+
// ── INPUT mode while focused: HTML input element owns the display ────
|
|
99
|
+
// Don't render the canvas texture — the native <input>/<textarea>
|
|
100
|
+
// is overlaid on top and already shows the text. Rendering here too
|
|
101
|
+
// would produce a double-text artefact.
|
|
102
|
+
if (tf.type === TextFieldType.INPUT && tf.isTyping) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// ── 1. Compute logical dimensions ────────────────────────────────────
|
|
106
|
+
const logicalW = Math.ceil(!isNaN(tf.$explicitWidth) ? tf.$explicitWidth : tf.textWidth);
|
|
107
|
+
const logicalH = Math.ceil(!isNaN(tf.$explicitHeight) ? tf.$explicitHeight : tf.textHeight);
|
|
108
|
+
if (logicalW <= 0 || logicalH <= 0) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
buffer.offsetX = 0;
|
|
112
|
+
buffer.offsetY = 0;
|
|
113
|
+
// ── 2. Canvas scale factor (DPR handling) ────────────────────────────
|
|
114
|
+
// Follow Egret: scale the offscreen canvas by DPR so text looks crisp
|
|
115
|
+
// on HiDPI screens, but clamp to maxTextureSize to avoid GPU limits.
|
|
116
|
+
let canvasScaleX = /* devicePixelRatio || */ 1;
|
|
117
|
+
let canvasScaleY = /* devicePixelRatio || */ 1;
|
|
118
|
+
const maxTexSize = buffer.context.maxTextureSize;
|
|
119
|
+
if (logicalW * canvasScaleX > maxTexSize) {
|
|
120
|
+
canvasScaleX *= maxTexSize / (logicalW * canvasScaleX);
|
|
121
|
+
}
|
|
122
|
+
if (logicalH * canvasScaleY > maxTexSize) {
|
|
123
|
+
canvasScaleY *= maxTexSize / (logicalH * canvasScaleY);
|
|
124
|
+
}
|
|
125
|
+
// Scaled pixel dimensions for the offscreen canvas.
|
|
126
|
+
const pixelW = Math.ceil(logicalW * canvasScaleX);
|
|
127
|
+
const pixelH = Math.ceil(logicalH * canvasScaleY);
|
|
128
|
+
// ── 3. Cache lookup / rebuild ────────────────────────────────────────
|
|
129
|
+
let cache = this._cache.get(tf);
|
|
130
|
+
let scaleChanged = false;
|
|
131
|
+
if (cache) {
|
|
132
|
+
// Check if canvasScale changed (e.g. window moved between displays).
|
|
133
|
+
scaleChanged = cache.canvasScaleX !== canvasScaleX || cache.canvasScaleY !== canvasScaleY;
|
|
134
|
+
if (scaleChanged) {
|
|
135
|
+
cache.canvasScaleX = canvasScaleX;
|
|
136
|
+
cache.canvasScaleY = canvasScaleY;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
cache = {
|
|
141
|
+
renderBuffer: new RenderBuffer(pixelW, pixelH),
|
|
142
|
+
texture: undefined,
|
|
143
|
+
textureWidth: 0,
|
|
144
|
+
textureHeight: 0,
|
|
145
|
+
canvasScaleX,
|
|
146
|
+
canvasScaleY,
|
|
147
|
+
};
|
|
148
|
+
this._cache.set(tf, cache);
|
|
149
|
+
}
|
|
150
|
+
// Dirty when: text content changed, dimensions changed, or DPR changed.
|
|
151
|
+
const needsRebuild = tf.$renderDirty || cache.textureWidth !== pixelW || cache.textureHeight !== pixelH || scaleChanged;
|
|
152
|
+
if (needsRebuild) {
|
|
153
|
+
// Resize the offscreen canvas if needed.
|
|
154
|
+
if (cache.renderBuffer.width !== pixelW || cache.renderBuffer.height !== pixelH) {
|
|
155
|
+
cache.renderBuffer.resize(pixelW, pixelH);
|
|
156
|
+
}
|
|
157
|
+
// Clear the buffer first (note: clear() resets the transform to identity).
|
|
158
|
+
cache.renderBuffer.clear();
|
|
159
|
+
// Apply canvas scale transform so text renders at the higher resolution.
|
|
160
|
+
const ctx = cache.renderBuffer.context;
|
|
161
|
+
if (canvasScaleX !== 1 || canvasScaleY !== 1) {
|
|
162
|
+
ctx.setTransform(canvasScaleX, 0, 0, canvasScaleY, 0, 0);
|
|
163
|
+
}
|
|
164
|
+
// Rasterize the text onto the offscreen canvas.
|
|
165
|
+
this._canvasRenderer.renderTextFieldToContext(tf, ctx, 0, 0);
|
|
166
|
+
// Upload to WebGL texture.
|
|
167
|
+
const surface = cache.renderBuffer.surface;
|
|
168
|
+
if (!cache.texture) {
|
|
169
|
+
cache.texture = buffer.context.createTexture(surface);
|
|
170
|
+
// Register for GC-based cleanup.
|
|
171
|
+
const token = {};
|
|
172
|
+
_textureRegistry.register(tf, { gl: buffer.context.gl, texture: cache.texture }, token);
|
|
173
|
+
this._registryTokens.set(tf, token);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Unregister old texture, create new registration for updated texture.
|
|
177
|
+
const oldToken = this._registryTokens.get(tf);
|
|
178
|
+
if (oldToken)
|
|
179
|
+
_textureRegistry.unregister(oldToken);
|
|
180
|
+
buffer.context.updateTexture(cache.texture, surface);
|
|
181
|
+
const token = {};
|
|
182
|
+
_textureRegistry.register(tf, { gl: buffer.context.gl, texture: cache.texture }, token);
|
|
183
|
+
this._registryTokens.set(tf, token);
|
|
184
|
+
}
|
|
185
|
+
cache.textureWidth = pixelW;
|
|
186
|
+
cache.textureHeight = pixelH;
|
|
187
|
+
}
|
|
188
|
+
if (!cache.texture)
|
|
189
|
+
return;
|
|
190
|
+
// ── 4. Draw cached texture ───────────────────────────────────────────
|
|
191
|
+
// Following Egret: draw the full texture but scale the destination by
|
|
192
|
+
// 1/canvasScale so the on-screen size matches the logical dimensions.
|
|
193
|
+
buffer.context.drawTexture(cache.texture, 0, 0, cache.textureWidth, cache.textureHeight, // src rect (full texture)
|
|
194
|
+
0, 0, // dest position (offset already in globalMatrix via _applyTransform)
|
|
195
|
+
cache.textureWidth / canvasScaleX, // dest width (scaled back)
|
|
196
|
+
cache.textureHeight / canvasScaleY, // dest height (scaled back)
|
|
197
|
+
cache.textureWidth, // texture source width
|
|
198
|
+
cache.textureHeight);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=TextPipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextPipe.js","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/pipes/TextPipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { BitmapPipe, type BitmapInstruction } from './BitmapPipe.js';
|
|
2
|
+
export { FilterPipe, type FilterPushInstruction, type FilterPopInstruction } from './FilterPipe.js';
|
|
3
|
+
export { GraphicsPipe, type GraphicsInstruction } from './GraphicsPipe.js';
|
|
4
|
+
export { MaskPipe, type MaskPushInstruction, type MaskPopInstruction } from './MaskPipe.js';
|
|
5
|
+
export { MeshPipe, type MeshInstruction } from './MeshPipe.js';
|
|
6
|
+
export { TextPipe, type TextInstruction } from './TextPipe.js';
|
|
7
|
+
export { ParticlePipe, type ParticleInstruction } from './ParticlePipe.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/pipes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { BitmapPipe } from './BitmapPipe.js';
|
|
2
|
+
export { FilterPipe } from './FilterPipe.js';
|
|
3
|
+
export { GraphicsPipe } from './GraphicsPipe.js';
|
|
4
|
+
export { MaskPipe } from './MaskPipe.js';
|
|
5
|
+
export { MeshPipe } from './MeshPipe.js';
|
|
6
|
+
export { TextPipe } from './TextPipe.js';
|
|
7
|
+
export { ParticlePipe } from './ParticlePipe.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/pipes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAyD,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAqD,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLSL ES 1.00 shaders — used with WebGL1 context.
|
|
3
|
+
* For WebGL2 (GLSL ES 3.00) shaders see ../webgl2/ShaderLib2.ts
|
|
4
|
+
*/
|
|
5
|
+
export declare const ShaderLib: {
|
|
6
|
+
readonly default_vert: "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nuniform vec2 projectionVector;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nconst vec2 center = vec2(-1.0, 1.0);\nvoid main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n }";
|
|
7
|
+
readonly fullscreen_vert: "\n attribute vec2 aVertexPosition;\n attribute vec2 aTextureCoord;\n attribute vec4 aColor;\n uniform vec2 projectionVector;\n varying vec2 vTextureCoord;\n varying vec4 vColor;\n const vec2 center = vec2(-1.0, 1.0);\n void main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n }";
|
|
8
|
+
readonly multi_vert: "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\nuniform vec2 projectionVector;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nconst vec2 center = vec2(-1.0, 1.0);\nvoid main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n vTextureId = aTextureId;\n}";
|
|
9
|
+
readonly multi_frag: "\nprecision lowp float;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[8];\nvoid main(void) {\n vec4 color;\n int id = int(vTextureId + 0.5);\n if (id == 0) color = texture2D(uSamplers[0], vTextureCoord);\n else if (id == 1) color = texture2D(uSamplers[1], vTextureCoord);\n else if (id == 2) color = texture2D(uSamplers[2], vTextureCoord);\n else if (id == 3) color = texture2D(uSamplers[3], vTextureCoord);\n else if (id == 4) color = texture2D(uSamplers[4], vTextureCoord);\n else if (id == 5) color = texture2D(uSamplers[5], vTextureCoord);\n else if (id == 6) color = texture2D(uSamplers[6], vTextureCoord);\n else color = texture2D(uSamplers[7], vTextureCoord);\n gl_FragColor = color * vColor;\n}";
|
|
10
|
+
readonly texture_frag: "\nprecision lowp float;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nuniform sampler2D uSampler;\nvoid main(void) {\n gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;\n}";
|
|
11
|
+
readonly primitive_frag: "\nprecision lowp float;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvoid main(void) {\n gl_FragColor = vColor;\n}";
|
|
12
|
+
readonly blur_frag: "\nprecision mediump float;\nuniform vec2 blur;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nvoid main() {\n const int sampleRadius = 5;\n const int samples = sampleRadius * 2 + 1;\n vec2 blurUv = blur / uTextureSize;\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n vec2 uv = vec2(0.0, 0.0);\n blurUv /= float(sampleRadius);\n for (int i = -sampleRadius; i <= sampleRadius; i++) {\n uv.x = vTextureCoord.x + float(i) * blurUv.x;\n uv.y = vTextureCoord.y + float(i) * blurUv.y;\n color += texture2D(uSampler, uv);\n }\n color /= float(samples);\n gl_FragColor = color;\n}";
|
|
13
|
+
readonly blur_h_frag: "\nprecision mediump float;\nuniform float blurX;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nvoid main() {\n float step = 1.0 / uTextureSize.x;\n vec4 color = vec4(0.0);\n float total = 0.0;\n for (int i = -8; i <= 8; i++) {\n if (abs(float(i)) > blurX) continue;\n float weight = 1.0 - abs(float(i)) / (blurX + 1.0);\n color += texture2D(uSampler, vTextureCoord + vec2(float(i) * step, 0.0)) * weight;\n total += weight;\n }\n gl_FragColor = color / total;\n}";
|
|
14
|
+
readonly blur_v_frag: "\nprecision mediump float;\nuniform float blurY;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nvoid main() {\n float step = 1.0 / uTextureSize.y;\n vec4 color = vec4(0.0);\n float total = 0.0;\n for (int i = -8; i <= 8; i++) {\n if (abs(float(i)) > blurY) continue;\n float weight = 1.0 - abs(float(i)) / (blurY + 1.0);\n color += texture2D(uSampler, vTextureCoord + vec2(0.0, float(i) * step)) * weight;\n total += weight;\n }\n gl_FragColor = color / total;\n}";
|
|
15
|
+
readonly glow_frag: "\nprecision highp float;\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float dist;\nuniform float angle;\nuniform vec4 color;\nuniform float alpha;\nuniform float blurX;\nuniform float blurY;\nuniform float strength;\nuniform float inner;\nuniform float knockout;\nuniform float hideObject;\nuniform vec2 uTextureSize;\nfloat random(vec2 scale) {\n return fract(sin(dot(gl_FragCoord.xy, scale)) * 43758.5453);\n}\nvoid main(void) {\n vec2 px = vec2(1.0 / uTextureSize.x, 1.0 / uTextureSize.y);\n const float linearSamplingTimes = 7.0;\n const float circleSamplingTimes = 12.0;\n vec4 ownColor = texture2D(uSampler, vTextureCoord);\n vec4 curColor;\n float totalAlpha = 0.0;\n float maxTotalAlpha = 0.0;\n float offsetX = dist * cos(angle) * px.x;\n float offsetY = dist * sin(angle) * px.y;\n const float PI = 3.14159265358979323846264;\n float offset = PI * 2.0 / circleSamplingTimes * random(vec2(12.9898, 78.233));\n float stepX = blurX * px.x / linearSamplingTimes;\n float stepY = blurY * px.y / linearSamplingTimes;\n for (float a = 0.0; a <= PI * 2.0; a += PI * 2.0 / circleSamplingTimes) {\n float cosAngle = cos(a + offset);\n float sinAngle = sin(a + offset);\n for (float i = 1.0; i <= linearSamplingTimes; i++) {\n float curDistanceX = i * stepX * cosAngle;\n float curDistanceY = i * stepY * sinAngle;\n if (vTextureCoord.x + curDistanceX - offsetX >= 0.0 && vTextureCoord.y + curDistanceY + offsetY <= 1.0) {\n curColor = texture2D(uSampler, vec2(vTextureCoord.x + curDistanceX - offsetX, vTextureCoord.y + curDistanceY + offsetY));\n totalAlpha += (linearSamplingTimes - i) * curColor.a;\n }\n maxTotalAlpha += (linearSamplingTimes - i);\n }\n }\n ownColor.a = max(ownColor.a, 0.0001);\n ownColor.rgb = ownColor.rgb / ownColor.a;\n float outerGlowAlpha = (totalAlpha / maxTotalAlpha) * strength * alpha * (1.0 - inner) * max(min(hideObject, knockout), 1.0 - ownColor.a);\n float innerGlowAlpha = ((maxTotalAlpha - totalAlpha) / maxTotalAlpha) * strength * alpha * inner * ownColor.a;\n ownColor.a = max(ownColor.a * knockout * (1.0 - hideObject), 0.0001);\n vec3 mix1 = mix(ownColor.rgb, color.rgb, innerGlowAlpha / (innerGlowAlpha + ownColor.a));\n vec3 mix2 = mix(mix1, color.rgb, outerGlowAlpha / (innerGlowAlpha + ownColor.a + outerGlowAlpha));\n float resultAlpha = min(ownColor.a + outerGlowAlpha + innerGlowAlpha, 1.0);\n gl_FragColor = vec4(mix2 * resultAlpha, resultAlpha);\n}";
|
|
16
|
+
readonly colorTransform_frag: "\nprecision mediump float;\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nuniform mat4 matrix;\nuniform vec4 colorAdd;\nuniform sampler2D uSampler;\nvoid main(void) {\n vec4 texColor = texture2D(uSampler, vTextureCoord);\n if (texColor.a > 0.0) {\n texColor = vec4(texColor.rgb / texColor.a, texColor.a);\n }\n vec4 locColor = clamp(texColor * matrix + colorAdd, 0.0, 1.0);\n gl_FragColor = vColor * vec4(locColor.rgb * locColor.a, locColor.a);\n}";
|
|
17
|
+
};
|
|
18
|
+
export declare const BLUR_TIERS: readonly [4, 8, 16, 32];
|
|
19
|
+
export type BlurTier = (typeof BLUR_TIERS)[number];
|
|
20
|
+
export declare function getBlurTier(radius: number): BlurTier;
|
|
21
|
+
export declare function makeBlurHFrag(tier: BlurTier): string;
|
|
22
|
+
export declare function makeBlurVFrag(tier: BlurTier): string;
|
|
23
|
+
//# sourceMappingURL=ShaderLib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderLib.d.ts","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/shaders/ShaderLib.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CA0NZ,CAAC;AAIX,eAAO,MAAM,UAAU,yBAA0B,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAKpD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAmBpD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAmBpD"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLSL ES 1.00 shaders — used with WebGL1 context.
|
|
3
|
+
* For WebGL2 (GLSL ES 3.00) shaders see ../webgl2/ShaderLib2.ts
|
|
4
|
+
*/
|
|
5
|
+
export const ShaderLib = {
|
|
6
|
+
default_vert: /* glsl */ `
|
|
7
|
+
attribute vec2 aVertexPosition;
|
|
8
|
+
attribute vec2 aTextureCoord;
|
|
9
|
+
attribute vec4 aColor;
|
|
10
|
+
uniform vec2 projectionVector;
|
|
11
|
+
varying vec2 vTextureCoord;
|
|
12
|
+
varying vec4 vColor;
|
|
13
|
+
const vec2 center = vec2(-1.0, 1.0);
|
|
14
|
+
void main(void) {
|
|
15
|
+
gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);
|
|
16
|
+
vTextureCoord = aTextureCoord;
|
|
17
|
+
vColor = aColor;
|
|
18
|
+
}`,
|
|
19
|
+
// Standalone vertex shader for fullscreen quad blits (filters, blur passes).
|
|
20
|
+
// Identical to default_vert but kept separate so filter passes can be
|
|
21
|
+
// paired with their own fragment shaders without colliding with the
|
|
22
|
+
// batched-texture program cache key.
|
|
23
|
+
fullscreen_vert: /* glsl */ `
|
|
24
|
+
attribute vec2 aVertexPosition;
|
|
25
|
+
attribute vec2 aTextureCoord;
|
|
26
|
+
attribute vec4 aColor;
|
|
27
|
+
uniform vec2 projectionVector;
|
|
28
|
+
varying vec2 vTextureCoord;
|
|
29
|
+
varying vec4 vColor;
|
|
30
|
+
const vec2 center = vec2(-1.0, 1.0);
|
|
31
|
+
void main(void) {
|
|
32
|
+
gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);
|
|
33
|
+
vTextureCoord = aTextureCoord;
|
|
34
|
+
vColor = aColor;
|
|
35
|
+
}`,
|
|
36
|
+
multi_vert: /* glsl */ `
|
|
37
|
+
attribute vec2 aVertexPosition;
|
|
38
|
+
attribute vec2 aTextureCoord;
|
|
39
|
+
attribute vec4 aColor;
|
|
40
|
+
attribute float aTextureId;
|
|
41
|
+
uniform vec2 projectionVector;
|
|
42
|
+
varying vec2 vTextureCoord;
|
|
43
|
+
varying vec4 vColor;
|
|
44
|
+
varying float vTextureId;
|
|
45
|
+
const vec2 center = vec2(-1.0, 1.0);
|
|
46
|
+
void main(void) {
|
|
47
|
+
gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);
|
|
48
|
+
vTextureCoord = aTextureCoord;
|
|
49
|
+
vColor = aColor;
|
|
50
|
+
vTextureId = aTextureId;
|
|
51
|
+
}`,
|
|
52
|
+
multi_frag: /* glsl */ `
|
|
53
|
+
precision lowp float;
|
|
54
|
+
varying vec2 vTextureCoord;
|
|
55
|
+
varying vec4 vColor;
|
|
56
|
+
varying float vTextureId;
|
|
57
|
+
uniform sampler2D uSamplers[8];
|
|
58
|
+
void main(void) {
|
|
59
|
+
vec4 color;
|
|
60
|
+
int id = int(vTextureId + 0.5);
|
|
61
|
+
if (id == 0) color = texture2D(uSamplers[0], vTextureCoord);
|
|
62
|
+
else if (id == 1) color = texture2D(uSamplers[1], vTextureCoord);
|
|
63
|
+
else if (id == 2) color = texture2D(uSamplers[2], vTextureCoord);
|
|
64
|
+
else if (id == 3) color = texture2D(uSamplers[3], vTextureCoord);
|
|
65
|
+
else if (id == 4) color = texture2D(uSamplers[4], vTextureCoord);
|
|
66
|
+
else if (id == 5) color = texture2D(uSamplers[5], vTextureCoord);
|
|
67
|
+
else if (id == 6) color = texture2D(uSamplers[6], vTextureCoord);
|
|
68
|
+
else color = texture2D(uSamplers[7], vTextureCoord);
|
|
69
|
+
gl_FragColor = color * vColor;
|
|
70
|
+
}`,
|
|
71
|
+
texture_frag: /* glsl */ `
|
|
72
|
+
precision lowp float;
|
|
73
|
+
varying vec2 vTextureCoord;
|
|
74
|
+
varying vec4 vColor;
|
|
75
|
+
uniform sampler2D uSampler;
|
|
76
|
+
void main(void) {
|
|
77
|
+
gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;
|
|
78
|
+
}`,
|
|
79
|
+
primitive_frag: /* glsl */ `
|
|
80
|
+
precision lowp float;
|
|
81
|
+
varying vec2 vTextureCoord;
|
|
82
|
+
varying vec4 vColor;
|
|
83
|
+
void main(void) {
|
|
84
|
+
gl_FragColor = vColor;
|
|
85
|
+
}`,
|
|
86
|
+
blur_frag: /* glsl */ `
|
|
87
|
+
precision mediump float;
|
|
88
|
+
uniform vec2 blur;
|
|
89
|
+
uniform sampler2D uSampler;
|
|
90
|
+
varying vec2 vTextureCoord;
|
|
91
|
+
uniform vec2 uTextureSize;
|
|
92
|
+
void main() {
|
|
93
|
+
const int sampleRadius = 5;
|
|
94
|
+
const int samples = sampleRadius * 2 + 1;
|
|
95
|
+
vec2 blurUv = blur / uTextureSize;
|
|
96
|
+
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
|
|
97
|
+
vec2 uv = vec2(0.0, 0.0);
|
|
98
|
+
blurUv /= float(sampleRadius);
|
|
99
|
+
for (int i = -sampleRadius; i <= sampleRadius; i++) {
|
|
100
|
+
uv.x = vTextureCoord.x + float(i) * blurUv.x;
|
|
101
|
+
uv.y = vTextureCoord.y + float(i) * blurUv.y;
|
|
102
|
+
color += texture2D(uSampler, uv);
|
|
103
|
+
}
|
|
104
|
+
color /= float(samples);
|
|
105
|
+
gl_FragColor = color;
|
|
106
|
+
}`,
|
|
107
|
+
blur_h_frag: /* glsl */ `
|
|
108
|
+
precision mediump float;
|
|
109
|
+
uniform float blurX;
|
|
110
|
+
uniform sampler2D uSampler;
|
|
111
|
+
varying vec2 vTextureCoord;
|
|
112
|
+
uniform vec2 uTextureSize;
|
|
113
|
+
void main() {
|
|
114
|
+
float step = 1.0 / uTextureSize.x;
|
|
115
|
+
vec4 color = vec4(0.0);
|
|
116
|
+
float total = 0.0;
|
|
117
|
+
for (int i = -8; i <= 8; i++) {
|
|
118
|
+
if (abs(float(i)) > blurX) continue;
|
|
119
|
+
float weight = 1.0 - abs(float(i)) / (blurX + 1.0);
|
|
120
|
+
color += texture2D(uSampler, vTextureCoord + vec2(float(i) * step, 0.0)) * weight;
|
|
121
|
+
total += weight;
|
|
122
|
+
}
|
|
123
|
+
gl_FragColor = color / total;
|
|
124
|
+
}`,
|
|
125
|
+
blur_v_frag: /* glsl */ `
|
|
126
|
+
precision mediump float;
|
|
127
|
+
uniform float blurY;
|
|
128
|
+
uniform sampler2D uSampler;
|
|
129
|
+
varying vec2 vTextureCoord;
|
|
130
|
+
uniform vec2 uTextureSize;
|
|
131
|
+
void main() {
|
|
132
|
+
float step = 1.0 / uTextureSize.y;
|
|
133
|
+
vec4 color = vec4(0.0);
|
|
134
|
+
float total = 0.0;
|
|
135
|
+
for (int i = -8; i <= 8; i++) {
|
|
136
|
+
if (abs(float(i)) > blurY) continue;
|
|
137
|
+
float weight = 1.0 - abs(float(i)) / (blurY + 1.0);
|
|
138
|
+
color += texture2D(uSampler, vTextureCoord + vec2(0.0, float(i) * step)) * weight;
|
|
139
|
+
total += weight;
|
|
140
|
+
}
|
|
141
|
+
gl_FragColor = color / total;
|
|
142
|
+
}`,
|
|
143
|
+
glow_frag: /* glsl */ `
|
|
144
|
+
precision highp float;
|
|
145
|
+
varying vec2 vTextureCoord;
|
|
146
|
+
uniform sampler2D uSampler;
|
|
147
|
+
uniform float dist;
|
|
148
|
+
uniform float angle;
|
|
149
|
+
uniform vec4 color;
|
|
150
|
+
uniform float alpha;
|
|
151
|
+
uniform float blurX;
|
|
152
|
+
uniform float blurY;
|
|
153
|
+
uniform float strength;
|
|
154
|
+
uniform float inner;
|
|
155
|
+
uniform float knockout;
|
|
156
|
+
uniform float hideObject;
|
|
157
|
+
uniform vec2 uTextureSize;
|
|
158
|
+
float random(vec2 scale) {
|
|
159
|
+
return fract(sin(dot(gl_FragCoord.xy, scale)) * 43758.5453);
|
|
160
|
+
}
|
|
161
|
+
void main(void) {
|
|
162
|
+
vec2 px = vec2(1.0 / uTextureSize.x, 1.0 / uTextureSize.y);
|
|
163
|
+
const float linearSamplingTimes = 7.0;
|
|
164
|
+
const float circleSamplingTimes = 12.0;
|
|
165
|
+
vec4 ownColor = texture2D(uSampler, vTextureCoord);
|
|
166
|
+
vec4 curColor;
|
|
167
|
+
float totalAlpha = 0.0;
|
|
168
|
+
float maxTotalAlpha = 0.0;
|
|
169
|
+
float offsetX = dist * cos(angle) * px.x;
|
|
170
|
+
float offsetY = dist * sin(angle) * px.y;
|
|
171
|
+
const float PI = 3.14159265358979323846264;
|
|
172
|
+
float offset = PI * 2.0 / circleSamplingTimes * random(vec2(12.9898, 78.233));
|
|
173
|
+
float stepX = blurX * px.x / linearSamplingTimes;
|
|
174
|
+
float stepY = blurY * px.y / linearSamplingTimes;
|
|
175
|
+
for (float a = 0.0; a <= PI * 2.0; a += PI * 2.0 / circleSamplingTimes) {
|
|
176
|
+
float cosAngle = cos(a + offset);
|
|
177
|
+
float sinAngle = sin(a + offset);
|
|
178
|
+
for (float i = 1.0; i <= linearSamplingTimes; i++) {
|
|
179
|
+
float curDistanceX = i * stepX * cosAngle;
|
|
180
|
+
float curDistanceY = i * stepY * sinAngle;
|
|
181
|
+
if (vTextureCoord.x + curDistanceX - offsetX >= 0.0 && vTextureCoord.y + curDistanceY + offsetY <= 1.0) {
|
|
182
|
+
curColor = texture2D(uSampler, vec2(vTextureCoord.x + curDistanceX - offsetX, vTextureCoord.y + curDistanceY + offsetY));
|
|
183
|
+
totalAlpha += (linearSamplingTimes - i) * curColor.a;
|
|
184
|
+
}
|
|
185
|
+
maxTotalAlpha += (linearSamplingTimes - i);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
ownColor.a = max(ownColor.a, 0.0001);
|
|
189
|
+
ownColor.rgb = ownColor.rgb / ownColor.a;
|
|
190
|
+
float outerGlowAlpha = (totalAlpha / maxTotalAlpha) * strength * alpha * (1.0 - inner) * max(min(hideObject, knockout), 1.0 - ownColor.a);
|
|
191
|
+
float innerGlowAlpha = ((maxTotalAlpha - totalAlpha) / maxTotalAlpha) * strength * alpha * inner * ownColor.a;
|
|
192
|
+
ownColor.a = max(ownColor.a * knockout * (1.0 - hideObject), 0.0001);
|
|
193
|
+
vec3 mix1 = mix(ownColor.rgb, color.rgb, innerGlowAlpha / (innerGlowAlpha + ownColor.a));
|
|
194
|
+
vec3 mix2 = mix(mix1, color.rgb, outerGlowAlpha / (innerGlowAlpha + ownColor.a + outerGlowAlpha));
|
|
195
|
+
float resultAlpha = min(ownColor.a + outerGlowAlpha + innerGlowAlpha, 1.0);
|
|
196
|
+
gl_FragColor = vec4(mix2 * resultAlpha, resultAlpha);
|
|
197
|
+
}`,
|
|
198
|
+
colorTransform_frag: /* glsl */ `
|
|
199
|
+
precision mediump float;
|
|
200
|
+
varying vec2 vTextureCoord;
|
|
201
|
+
varying vec4 vColor;
|
|
202
|
+
uniform mat4 matrix;
|
|
203
|
+
uniform vec4 colorAdd;
|
|
204
|
+
uniform sampler2D uSampler;
|
|
205
|
+
void main(void) {
|
|
206
|
+
vec4 texColor = texture2D(uSampler, vTextureCoord);
|
|
207
|
+
if (texColor.a > 0.0) {
|
|
208
|
+
texColor = vec4(texColor.rgb / texColor.a, texColor.a);
|
|
209
|
+
}
|
|
210
|
+
vec4 locColor = clamp(texColor * matrix + colorAdd, 0.0, 1.0);
|
|
211
|
+
gl_FragColor = vColor * vec4(locColor.rgb * locColor.a, locColor.a);
|
|
212
|
+
}`,
|
|
213
|
+
};
|
|
214
|
+
// ── Dynamic blur shader generation (GLSL ES 1.00) ─────────────────────────────
|
|
215
|
+
export const BLUR_TIERS = [4, 8, 16, 32];
|
|
216
|
+
export function getBlurTier(radius) {
|
|
217
|
+
for (const tier of BLUR_TIERS) {
|
|
218
|
+
if (radius <= tier)
|
|
219
|
+
return tier;
|
|
220
|
+
}
|
|
221
|
+
return 32;
|
|
222
|
+
}
|
|
223
|
+
export function makeBlurHFrag(tier) {
|
|
224
|
+
return /* glsl */ `
|
|
225
|
+
precision mediump float;
|
|
226
|
+
uniform float blurX;
|
|
227
|
+
uniform sampler2D uSampler;
|
|
228
|
+
varying vec2 vTextureCoord;
|
|
229
|
+
uniform vec2 uTextureSize;
|
|
230
|
+
void main() {
|
|
231
|
+
float step = 1.0 / uTextureSize.x;
|
|
232
|
+
vec4 color = vec4(0.0);
|
|
233
|
+
float total = 0.0;
|
|
234
|
+
for (int i = -${tier}; i <= ${tier}; i++) {
|
|
235
|
+
if (abs(float(i)) > blurX) continue;
|
|
236
|
+
float weight = 1.0 - abs(float(i)) / (blurX + 1.0);
|
|
237
|
+
color += texture2D(uSampler, vTextureCoord + vec2(float(i) * step, 0.0)) * weight;
|
|
238
|
+
total += weight;
|
|
239
|
+
}
|
|
240
|
+
gl_FragColor = color / total;
|
|
241
|
+
}`;
|
|
242
|
+
}
|
|
243
|
+
export function makeBlurVFrag(tier) {
|
|
244
|
+
return /* glsl */ `
|
|
245
|
+
precision mediump float;
|
|
246
|
+
uniform float blurY;
|
|
247
|
+
uniform sampler2D uSampler;
|
|
248
|
+
varying vec2 vTextureCoord;
|
|
249
|
+
uniform vec2 uTextureSize;
|
|
250
|
+
void main() {
|
|
251
|
+
float step = 1.0 / uTextureSize.y;
|
|
252
|
+
vec4 color = vec4(0.0);
|
|
253
|
+
float total = 0.0;
|
|
254
|
+
for (int i = -${tier}; i <= ${tier}; i++) {
|
|
255
|
+
if (abs(float(i)) > blurY) continue;
|
|
256
|
+
float weight = 1.0 - abs(float(i)) / (blurY + 1.0);
|
|
257
|
+
color += texture2D(uSampler, vTextureCoord + vec2(0.0, float(i) * step)) * weight;
|
|
258
|
+
total += weight;
|
|
259
|
+
}
|
|
260
|
+
gl_FragColor = color / total;
|
|
261
|
+
}`;
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=ShaderLib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderLib.js","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/shaders/ShaderLib.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,YAAY,EAAE,UAAU,CAAC;;;;;;;;;;;;KAYrB;IAEJ,6EAA6E;IAC7E,sEAAsE;IACtE,oEAAoE;IACpE,qCAAqC;IACrC,eAAe,EAAE,UAAU,CAAC;;;;;;;;;;;;KAYxB;IAEJ,UAAU,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;EAetB;IAED,UAAU,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;EAkBtB;IAED,YAAY,EAAE,UAAU,CAAC;;;;;;;EAOxB;IAED,cAAc,EAAE,UAAU,CAAC;;;;;;EAM1B;IAED,SAAS,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;EAoBrB;IAED,WAAW,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;EAiBvB;IAED,WAAW,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;EAiBvB;IAED,SAAS,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDrB;IAED,mBAAmB,EAAE,UAAU,CAAC;;;;;;;;;;;;;;EAc/B;CACQ,CAAC;AAEX,iFAAiF;AAEjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAGlD,MAAM,UAAU,WAAW,CAAC,MAAc;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC3C,OAAO,UAAU,CAAC;;;;;;;;;;oBAUC,IAAI,UAAU,IAAI;;;;;;;EAOpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC3C,OAAO,UAAU,CAAC;;;;;;;;;;oBAUC,IAAI,UAAU,IAAI;;;;;;;EAOpC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLSL ES 3.00 shaders — used with WebGL2 context.
|
|
3
|
+
* For WebGL1 (GLSL ES 1.00) shaders see ../webgl/ShaderLib.ts
|
|
4
|
+
*/
|
|
5
|
+
export declare const ShaderLib2: {
|
|
6
|
+
readonly default_vert: "#version 300 es\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\nin vec4 aColor;\nuniform vec2 projectionVector;\nout vec2 vTextureCoord;\nout vec4 vColor;\nconst vec2 center = vec2(-1.0, 1.0);\nvoid main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n}";
|
|
7
|
+
readonly fullscreen_vert: "#version 300 es\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\nin vec4 aColor;\nuniform vec2 projectionVector;\nout vec2 vTextureCoord;\nout vec4 vColor;\nconst vec2 center = vec2(-1.0, 1.0);\nvoid main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n}";
|
|
8
|
+
readonly multi_vert: "#version 300 es\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\nin vec4 aColor;\nin float aTextureId;\nuniform vec2 projectionVector;\nout vec2 vTextureCoord;\nout vec4 vColor;\nout float vTextureId;\nconst vec2 center = vec2(-1.0, 1.0);\nvoid main(void) {\n gl_Position = vec4((aVertexPosition / projectionVector) + center, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n vColor = aColor;\n vTextureId = aTextureId;\n}";
|
|
9
|
+
readonly multi_frag: "#version 300 es\nprecision lowp float;\nin vec2 vTextureCoord;\nin vec4 vColor;\nin float vTextureId;\nuniform sampler2D uSamplers[8];\nout vec4 fragColor;\nvoid main(void) {\n vec4 color;\n int id = int(vTextureId + 0.5);\n if (id == 0) color = texture(uSamplers[0], vTextureCoord);\n else if (id == 1) color = texture(uSamplers[1], vTextureCoord);\n else if (id == 2) color = texture(uSamplers[2], vTextureCoord);\n else if (id == 3) color = texture(uSamplers[3], vTextureCoord);\n else if (id == 4) color = texture(uSamplers[4], vTextureCoord);\n else if (id == 5) color = texture(uSamplers[5], vTextureCoord);\n else if (id == 6) color = texture(uSamplers[6], vTextureCoord);\n else color = texture(uSamplers[7], vTextureCoord);\n fragColor = color * vColor;\n}";
|
|
10
|
+
readonly texture_frag: "#version 300 es\nprecision lowp float;\nin vec2 vTextureCoord;\nin vec4 vColor;\nuniform sampler2D uSampler;\nout vec4 fragColor;\nvoid main(void) {\n fragColor = texture(uSampler, vTextureCoord) * vColor;\n}";
|
|
11
|
+
readonly primitive_frag: "#version 300 es\nprecision lowp float;\nin vec2 vTextureCoord;\nin vec4 vColor;\nout vec4 fragColor;\nvoid main(void) {\n fragColor = vColor;\n}";
|
|
12
|
+
readonly blur_frag: "#version 300 es\nprecision mediump float;\nuniform vec2 blur;\nuniform sampler2D uSampler;\nin vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nout vec4 fragColor;\nvoid main() {\n const int sampleRadius = 5;\n const int samples = sampleRadius * 2 + 1;\n vec2 blurUv = blur / uTextureSize;\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n vec2 uv = vec2(0.0, 0.0);\n blurUv /= float(sampleRadius);\n for (int i = -sampleRadius; i <= sampleRadius; i++) {\n uv.x = vTextureCoord.x + float(i) * blurUv.x;\n uv.y = vTextureCoord.y + float(i) * blurUv.y;\n color += texture(uSampler, uv);\n }\n color /= float(samples);\n fragColor = color;\n}";
|
|
13
|
+
readonly blur_h_frag: "#version 300 es\nprecision mediump float;\nuniform float blurX;\nuniform sampler2D uSampler;\nin vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nout vec4 fragColor;\nvoid main() {\n float step = 1.0 / uTextureSize.x;\n vec4 color = vec4(0.0);\n float total = 0.0;\n for (int i = -8; i <= 8; i++) {\n if (abs(float(i)) > blurX) continue;\n float weight = 1.0 - abs(float(i)) / (blurX + 1.0);\n color += texture(uSampler, vTextureCoord + vec2(float(i) * step, 0.0)) * weight;\n total += weight;\n }\n fragColor = color / total;\n}";
|
|
14
|
+
readonly blur_v_frag: "#version 300 es\nprecision mediump float;\nuniform float blurY;\nuniform sampler2D uSampler;\nin vec2 vTextureCoord;\nuniform vec2 uTextureSize;\nout vec4 fragColor;\nvoid main() {\n float step = 1.0 / uTextureSize.y;\n vec4 color = vec4(0.0);\n float total = 0.0;\n for (int i = -8; i <= 8; i++) {\n if (abs(float(i)) > blurY) continue;\n float weight = 1.0 - abs(float(i)) / (blurY + 1.0);\n color += texture(uSampler, vTextureCoord + vec2(0.0, float(i) * step)) * weight;\n total += weight;\n }\n fragColor = color / total;\n}";
|
|
15
|
+
readonly glow_frag: "#version 300 es\nprecision highp float;\nin vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float dist;\nuniform float angle;\nuniform vec4 color;\nuniform float alpha;\nuniform float blurX;\nuniform float blurY;\nuniform float strength;\nuniform float inner;\nuniform float knockout;\nuniform float hideObject;\nuniform vec2 uTextureSize;\nout vec4 fragColor;\nfloat random(vec2 scale) {\n return fract(sin(dot(gl_FragCoord.xy, scale)) * 43758.5453);\n}\nvoid main(void) {\n vec2 px = vec2(1.0 / uTextureSize.x, 1.0 / uTextureSize.y);\n const float linearSamplingTimes = 7.0;\n const float circleSamplingTimes = 12.0;\n vec4 ownColor = texture(uSampler, vTextureCoord);\n vec4 curColor;\n float totalAlpha = 0.0;\n float maxTotalAlpha = 0.0;\n float offsetX = dist * cos(angle) * px.x;\n float offsetY = dist * sin(angle) * px.y;\n const float PI = 3.14159265358979323846264;\n float offset = PI * 2.0 / circleSamplingTimes * random(vec2(12.9898, 78.233));\n float stepX = blurX * px.x / linearSamplingTimes;\n float stepY = blurY * px.y / linearSamplingTimes;\n for (float a = 0.0; a <= PI * 2.0; a += PI * 2.0 / circleSamplingTimes) {\n float cosAngle = cos(a + offset);\n float sinAngle = sin(a + offset);\n for (float i = 1.0; i <= linearSamplingTimes; i++) {\n float curDistanceX = i * stepX * cosAngle;\n float curDistanceY = i * stepY * sinAngle;\n if (vTextureCoord.x + curDistanceX - offsetX >= 0.0 && vTextureCoord.y + curDistanceY + offsetY <= 1.0) {\n curColor = texture(uSampler, vec2(vTextureCoord.x + curDistanceX - offsetX, vTextureCoord.y + curDistanceY + offsetY));\n totalAlpha += (linearSamplingTimes - i) * curColor.a;\n }\n maxTotalAlpha += (linearSamplingTimes - i);\n }\n }\n ownColor.a = max(ownColor.a, 0.0001);\n ownColor.rgb = ownColor.rgb / ownColor.a;\n float outerGlowAlpha = (totalAlpha / maxTotalAlpha) * strength * alpha * (1.0 - inner) * max(min(hideObject, knockout), 1.0 - ownColor.a);\n float innerGlowAlpha = ((maxTotalAlpha - totalAlpha) / maxTotalAlpha) * strength * alpha * inner * ownColor.a;\n ownColor.a = max(ownColor.a * knockout * (1.0 - hideObject), 0.0001);\n vec3 mix1 = mix(ownColor.rgb, color.rgb, innerGlowAlpha / (innerGlowAlpha + ownColor.a));\n vec3 mix2 = mix(mix1, color.rgb, outerGlowAlpha / (innerGlowAlpha + ownColor.a + outerGlowAlpha));\n float resultAlpha = min(ownColor.a + outerGlowAlpha + innerGlowAlpha, 1.0);\n fragColor = vec4(mix2 * resultAlpha, resultAlpha);\n}";
|
|
16
|
+
readonly colorTransform_frag: "#version 300 es\nprecision mediump float;\nin vec2 vTextureCoord;\nin vec4 vColor;\nuniform mat4 matrix;\nuniform vec4 colorAdd;\nuniform sampler2D uSampler;\nout vec4 fragColor;\nvoid main(void) {\n vec4 texColor = texture(uSampler, vTextureCoord);\n if (texColor.a > 0.0) {\n texColor = vec4(texColor.rgb / texColor.a, texColor.a);\n }\n vec4 locColor = clamp(texColor * matrix + colorAdd, 0.0, 1.0);\n fragColor = vColor * vec4(locColor.rgb * locColor.a, locColor.a);\n}";
|
|
17
|
+
};
|
|
18
|
+
export declare const BLUR_TIERS2: readonly [4, 8, 16, 32];
|
|
19
|
+
export type BlurTier2 = (typeof BLUR_TIERS2)[number];
|
|
20
|
+
export declare function getBlurTier2(radius: number): BlurTier2;
|
|
21
|
+
export declare function makeBlurHFrag2(tier: BlurTier2): string;
|
|
22
|
+
export declare function makeBlurVFrag2(tier: BlurTier2): string;
|
|
23
|
+
//# sourceMappingURL=ShaderLib2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderLib2.d.ts","sourceRoot":"","sources":["../../../../../src/kurot/player/webgl/shaders/ShaderLib2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;CAyOb,CAAC;AAIX,eAAO,MAAM,WAAW,yBAA0B,CAAC;AACnD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAKtD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoBtD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoBtD"}
|