@react-x11/components 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +979 -21
- package/dist/ansi/cast.d.ts +48 -0
- package/dist/ansi/cast.d.ts.map +1 -0
- package/dist/ansi/cast.js +135 -0
- package/dist/ansi/cast.js.map +1 -0
- package/dist/ansi/index.d.ts +10 -0
- package/dist/ansi/index.d.ts.map +1 -0
- package/dist/ansi/index.js +27 -0
- package/dist/ansi/index.js.map +1 -0
- package/dist/ansi/palette.d.ts +79 -0
- package/dist/ansi/palette.d.ts.map +1 -0
- package/dist/ansi/palette.js +155 -0
- package/dist/ansi/palette.js.map +1 -0
- package/dist/ansi/parse.d.ts +114 -0
- package/dist/ansi/parse.d.ts.map +1 -0
- package/dist/ansi/parse.js +687 -0
- package/dist/ansi/parse.js.map +1 -0
- package/dist/ansi/sgr.d.ts +87 -0
- package/dist/ansi/sgr.d.ts.map +1 -0
- package/dist/ansi/sgr.js +302 -0
- package/dist/ansi/sgr.js.map +1 -0
- package/dist/ansi/utf8.d.ts +15 -0
- package/dist/ansi/utf8.d.ts.map +1 -0
- package/dist/ansi/utf8.js +82 -0
- package/dist/ansi/utf8.js.map +1 -0
- package/dist/calendar/Calendar.d.ts +136 -0
- package/dist/calendar/Calendar.d.ts.map +1 -0
- package/dist/calendar/Calendar.js +460 -0
- package/dist/calendar/Calendar.js.map +1 -0
- package/dist/calendar/DatePicker.d.ts +52 -0
- package/dist/calendar/DatePicker.d.ts.map +1 -0
- package/dist/calendar/DatePicker.js +257 -0
- package/dist/calendar/DatePicker.js.map +1 -0
- package/dist/calendar/dates.d.ts +90 -0
- package/dist/calendar/dates.d.ts.map +1 -0
- package/dist/calendar/dates.js +236 -0
- package/dist/calendar/dates.js.map +1 -0
- package/dist/calendar/index.d.ts +8 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +15 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/charts/components.d.ts +141 -0
- package/dist/charts/components.d.ts.map +1 -0
- package/dist/charts/components.js +580 -0
- package/dist/charts/components.js.map +1 -0
- package/dist/charts/data.d.ts +198 -0
- package/dist/charts/data.d.ts.map +1 -0
- package/dist/charts/data.js +616 -0
- package/dist/charts/data.js.map +1 -0
- package/dist/charts/hx.d.ts +21 -0
- package/dist/charts/hx.d.ts.map +1 -0
- package/dist/charts/hx.js +15 -0
- package/dist/charts/hx.js.map +1 -0
- package/dist/charts/index.d.ts +27 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +38 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/node.d.ts +96 -0
- package/dist/charts/node.d.ts.map +1 -0
- package/dist/charts/node.js +720 -0
- package/dist/charts/node.js.map +1 -0
- package/dist/charts/render.d.ts +153 -0
- package/dist/charts/render.d.ts.map +1 -0
- package/dist/charts/render.js +762 -0
- package/dist/charts/render.js.map +1 -0
- package/dist/charts/scale.d.ts +42 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +173 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/spec.d.ts +91 -0
- package/dist/charts/spec.d.ts.map +1 -0
- package/dist/charts/spec.js +33 -0
- package/dist/charts/spec.js.map +1 -0
- package/dist/charts/timers.d.ts +6 -0
- package/dist/charts/timers.d.ts.map +1 -0
- package/dist/charts/timers.js +14 -0
- package/dist/charts/timers.js.map +1 -0
- package/dist/code/hx.d.ts +24 -0
- package/dist/code/hx.d.ts.map +1 -0
- package/dist/code/hx.js +25 -0
- package/dist/code/hx.js.map +1 -0
- package/dist/code/index.d.ts +45 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +93 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code-editor/completion.d.ts +26 -0
- package/dist/code-editor/completion.d.ts.map +1 -0
- package/dist/code-editor/completion.js +129 -0
- package/dist/code-editor/completion.js.map +1 -0
- package/dist/code-editor/doc.d.ts +35 -0
- package/dist/code-editor/doc.d.ts.map +1 -0
- package/dist/code-editor/doc.js +162 -0
- package/dist/code-editor/doc.js.map +1 -0
- package/dist/code-editor/hx.d.ts +13 -0
- package/dist/code-editor/hx.d.ts.map +1 -0
- package/dist/code-editor/hx.js +10 -0
- package/dist/code-editor/hx.js.map +1 -0
- package/dist/code-editor/index.d.ts +88 -0
- package/dist/code-editor/index.d.ts.map +1 -0
- package/dist/code-editor/index.js +401 -0
- package/dist/code-editor/index.js.map +1 -0
- package/dist/code-editor/node.d.ts +343 -0
- package/dist/code-editor/node.d.ts.map +1 -0
- package/dist/code-editor/node.js +1521 -0
- package/dist/code-editor/node.js.map +1 -0
- package/dist/code-language/hljs.d.ts +47 -0
- package/dist/code-language/hljs.d.ts.map +1 -0
- package/dist/code-language/hljs.js +211 -0
- package/dist/code-language/hljs.js.map +1 -0
- package/dist/code-language/index.d.ts +22 -0
- package/dist/code-language/index.d.ts.map +1 -0
- package/dist/code-language/index.js +20 -0
- package/dist/code-language/index.js.map +1 -0
- package/dist/code-language/languages/glsl.d.ts +4 -0
- package/dist/code-language/languages/glsl.d.ts.map +1 -0
- package/dist/code-language/languages/glsl.js +99 -0
- package/dist/code-language/languages/glsl.js.map +1 -0
- package/dist/code-language/languages/javascript.d.ts +10 -0
- package/dist/code-language/languages/javascript.d.ts.map +1 -0
- package/dist/code-language/languages/javascript.js +360 -0
- package/dist/code-language/languages/javascript.js.map +1 -0
- package/dist/code-language/languages/json.d.ts +4 -0
- package/dist/code-language/languages/json.d.ts.map +1 -0
- package/dist/code-language/languages/json.js +68 -0
- package/dist/code-language/languages/json.js.map +1 -0
- package/dist/code-language/languages/shell.d.ts +4 -0
- package/dist/code-language/languages/shell.d.ts.map +1 -0
- package/dist/code-language/languages/shell.js +189 -0
- package/dist/code-language/languages/shell.js.map +1 -0
- package/dist/code-language/languages/sql.d.ts +11 -0
- package/dist/code-language/languages/sql.d.ts.map +1 -0
- package/dist/code-language/languages/sql.js +133 -0
- package/dist/code-language/languages/sql.js.map +1 -0
- package/dist/code-language/lezer.d.ts +24 -0
- package/dist/code-language/lezer.d.ts.map +1 -0
- package/dist/code-language/lezer.js +148 -0
- package/dist/code-language/lezer.js.map +1 -0
- package/dist/code-language/registry.d.ts +19 -0
- package/dist/code-language/registry.d.ts.map +1 -0
- package/dist/code-language/registry.js +56 -0
- package/dist/code-language/registry.js.map +1 -0
- package/dist/code-language/runs.d.ts +35 -0
- package/dist/code-language/runs.d.ts.map +1 -0
- package/dist/code-language/runs.js +88 -0
- package/dist/code-language/runs.js.map +1 -0
- package/dist/code-language/stream.d.ts +70 -0
- package/dist/code-language/stream.d.ts.map +1 -0
- package/dist/code-language/stream.js +243 -0
- package/dist/code-language/stream.js.map +1 -0
- package/dist/code-language/textmate.d.ts +27 -0
- package/dist/code-language/textmate.d.ts.map +1 -0
- package/dist/code-language/textmate.js +86 -0
- package/dist/code-language/textmate.js.map +1 -0
- package/dist/code-language/theme.d.ts +26 -0
- package/dist/code-language/theme.d.ts.map +1 -0
- package/dist/code-language/theme.js +108 -0
- package/dist/code-language/theme.js.map +1 -0
- package/dist/code-language/timers.d.ts +7 -0
- package/dist/code-language/timers.d.ts.map +1 -0
- package/dist/code-language/timers.js +22 -0
- package/dist/code-language/timers.js.map +1 -0
- package/dist/code-language/types.d.ts +173 -0
- package/dist/code-language/types.d.ts.map +1 -0
- package/dist/code-language/types.js +41 -0
- package/dist/code-language/types.js.map +1 -0
- package/dist/codeblock/index.d.ts +69 -0
- package/dist/codeblock/index.d.ts.map +1 -0
- package/dist/codeblock/index.js +85 -0
- package/dist/codeblock/index.js.map +1 -0
- package/dist/color-picker/ColorField.d.ts +39 -0
- package/dist/color-picker/ColorField.d.ts.map +1 -0
- package/dist/color-picker/ColorField.js +239 -0
- package/dist/color-picker/ColorField.js.map +1 -0
- package/dist/color-picker/ColorPicker.d.ts +109 -0
- package/dist/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/color-picker/ColorPicker.js +757 -0
- package/dist/color-picker/ColorPicker.js.map +1 -0
- package/dist/color-picker/color.d.ts +105 -0
- package/dist/color-picker/color.d.ts.map +1 -0
- package/dist/color-picker/color.js +313 -0
- package/dist/color-picker/color.js.map +1 -0
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/index.js +19 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/desktop-calendar/eds.d.ts +102 -0
- package/dist/desktop-calendar/eds.d.ts.map +1 -0
- package/dist/desktop-calendar/eds.js +356 -0
- package/dist/desktop-calendar/eds.js.map +1 -0
- package/dist/desktop-calendar/ical.d.ts +63 -0
- package/dist/desktop-calendar/ical.d.ts.map +1 -0
- package/dist/desktop-calendar/ical.js +57 -0
- package/dist/desktop-calendar/ical.js.map +1 -0
- package/dist/desktop-calendar/index.d.ts +72 -0
- package/dist/desktop-calendar/index.d.ts.map +1 -0
- package/dist/desktop-calendar/index.js +213 -0
- package/dist/desktop-calendar/index.js.map +1 -0
- package/dist/embed/client.d.ts +121 -0
- package/dist/embed/client.d.ts.map +1 -0
- package/dist/embed/client.js +203 -0
- package/dist/embed/client.js.map +1 -0
- package/dist/embed/host.d.ts +96 -0
- package/dist/embed/host.d.ts.map +1 -0
- package/dist/embed/host.js +266 -0
- package/dist/embed/host.js.map +1 -0
- package/dist/embed/index.d.ts +5 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +13 -0
- package/dist/embed/index.js.map +1 -0
- package/dist/embed/timers.d.ts +6 -0
- package/dist/embed/timers.d.ts.map +1 -0
- package/dist/embed/timers.js +16 -0
- package/dist/embed/timers.js.map +1 -0
- package/dist/flow/draw.d.ts +45 -0
- package/dist/flow/draw.d.ts.map +1 -0
- package/dist/flow/draw.js +295 -0
- package/dist/flow/draw.js.map +1 -0
- package/dist/flow/index.d.ts +64 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +306 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/model.d.ts +158 -0
- package/dist/flow/model.d.ts.map +1 -0
- package/dist/flow/model.js +566 -0
- package/dist/flow/model.js.map +1 -0
- package/dist/flow/node.d.ts +429 -0
- package/dist/flow/node.d.ts.map +1 -0
- package/dist/flow/node.js +3025 -0
- package/dist/flow/node.js.map +1 -0
- package/dist/flow/paths.d.ts +43 -0
- package/dist/flow/paths.d.ts.map +1 -0
- package/dist/flow/paths.js +327 -0
- package/dist/flow/paths.js.map +1 -0
- package/dist/flow/types.d.ts +561 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +2 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/formula/hx.d.ts +24 -0
- package/dist/formula/hx.d.ts.map +1 -0
- package/dist/formula/hx.js +25 -0
- package/dist/formula/hx.js.map +1 -0
- package/dist/formula/index.d.ts +74 -0
- package/dist/formula/index.d.ts.map +1 -0
- package/dist/formula/index.js +155 -0
- package/dist/formula/index.js.map +1 -0
- package/dist/formula/katex.d.ts +78 -0
- package/dist/formula/katex.d.ts.map +1 -0
- package/dist/formula/katex.js +130 -0
- package/dist/formula/katex.js.map +1 -0
- package/dist/formula/layout.d.ts +103 -0
- package/dist/formula/layout.d.ts.map +1 -0
- package/dist/formula/layout.js +716 -0
- package/dist/formula/layout.js.map +1 -0
- package/dist/formula/node.d.ts +50 -0
- package/dist/formula/node.d.ts.map +1 -0
- package/dist/formula/node.js +351 -0
- package/dist/formula/node.js.map +1 -0
- package/dist/html/controls.d.ts +48 -0
- package/dist/html/controls.d.ts.map +1 -0
- package/dist/html/controls.js +195 -0
- package/dist/html/controls.js.map +1 -0
- package/dist/html/css/cascade.d.ts +51 -0
- package/dist/html/css/cascade.d.ts.map +1 -0
- package/dist/html/css/cascade.js +552 -0
- package/dist/html/css/cascade.js.map +1 -0
- package/dist/html/css/parse.d.ts +74 -0
- package/dist/html/css/parse.d.ts.map +1 -0
- package/dist/html/css/parse.js +464 -0
- package/dist/html/css/parse.js.map +1 -0
- package/dist/html/css/style.d.ts +142 -0
- package/dist/html/css/style.d.ts.map +1 -0
- package/dist/html/css/style.js +1145 -0
- package/dist/html/css/style.js.map +1 -0
- package/dist/html/css/ua.d.ts +5 -0
- package/dist/html/css/ua.d.ts.map +1 -0
- package/dist/html/css/ua.js +171 -0
- package/dist/html/css/ua.js.map +1 -0
- package/dist/html/css/values.d.ts +78 -0
- package/dist/html/css/values.d.ts.map +1 -0
- package/dist/html/css/values.js +330 -0
- package/dist/html/css/values.js.map +1 -0
- package/dist/html/dom.d.ts +112 -0
- package/dist/html/dom.d.ts.map +1 -0
- package/dist/html/dom.js +374 -0
- package/dist/html/dom.js.map +1 -0
- package/dist/html/hx.d.ts +24 -0
- package/dist/html/hx.d.ts.map +1 -0
- package/dist/html/hx.js +29 -0
- package/dist/html/hx.js.map +1 -0
- package/dist/html/index.d.ts +137 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +339 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/layout/block.d.ts +58 -0
- package/dist/html/layout/block.d.ts.map +1 -0
- package/dist/html/layout/block.js +724 -0
- package/dist/html/layout/block.js.map +1 -0
- package/dist/html/layout/boxes.d.ts +261 -0
- package/dist/html/layout/boxes.d.ts.map +1 -0
- package/dist/html/layout/boxes.js +725 -0
- package/dist/html/layout/boxes.js.map +1 -0
- package/dist/html/layout/flex.d.ts +16 -0
- package/dist/html/layout/flex.d.ts.map +1 -0
- package/dist/html/layout/flex.js +242 -0
- package/dist/html/layout/flex.js.map +1 -0
- package/dist/html/layout/floats.d.ts +50 -0
- package/dist/html/layout/floats.d.ts.map +1 -0
- package/dist/html/layout/floats.js +110 -0
- package/dist/html/layout/floats.js.map +1 -0
- package/dist/html/layout/inline.d.ts +44 -0
- package/dist/html/layout/inline.d.ts.map +1 -0
- package/dist/html/layout/inline.js +700 -0
- package/dist/html/layout/inline.js.map +1 -0
- package/dist/html/layout/table.d.ts +5 -0
- package/dist/html/layout/table.d.ts.map +1 -0
- package/dist/html/layout/table.js +340 -0
- package/dist/html/layout/table.js.map +1 -0
- package/dist/html/node.d.ts +149 -0
- package/dist/html/node.d.ts.map +1 -0
- package/dist/html/node.js +861 -0
- package/dist/html/node.js.map +1 -0
- package/dist/html/paint.d.ts +48 -0
- package/dist/html/paint.d.ts.map +1 -0
- package/dist/html/paint.js +495 -0
- package/dist/html/paint.js.map +1 -0
- package/dist/html/resources.d.ts +48 -0
- package/dist/html/resources.d.ts.map +1 -0
- package/dist/html/resources.js +156 -0
- package/dist/html/resources.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/heights.d.ts +81 -0
- package/dist/internal/heights.d.ts.map +1 -0
- package/dist/internal/heights.js +193 -0
- package/dist/internal/heights.js.map +1 -0
- package/dist/internal/hx.d.ts +24 -0
- package/dist/internal/hx.d.ts.map +1 -0
- package/dist/internal/hx.js +27 -0
- package/dist/internal/hx.js.map +1 -0
- package/dist/internal/text.d.ts +6 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +44 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/timers.d.ts +8 -0
- package/dist/internal/timers.d.ts.map +1 -0
- package/dist/internal/timers.js +22 -0
- package/dist/internal/timers.js.map +1 -0
- package/dist/internal/widget.d.ts +40 -0
- package/dist/internal/widget.d.ts.map +1 -0
- package/dist/internal/widget.js +44 -0
- package/dist/internal/widget.js.map +1 -0
- package/dist/markdown/ast.d.ts +126 -0
- package/dist/markdown/ast.d.ts.map +1 -0
- package/dist/markdown/ast.js +8 -0
- package/dist/markdown/ast.js.map +1 -0
- package/dist/markdown/hx.d.ts +24 -0
- package/dist/markdown/hx.d.ts.map +1 -0
- package/dist/markdown/hx.js +25 -0
- package/dist/markdown/hx.js.map +1 -0
- package/dist/markdown/index.d.ts +90 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +413 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/parse.d.ts +8 -0
- package/dist/markdown/parse.d.ts.map +1 -0
- package/dist/markdown/parse.js +911 -0
- package/dist/markdown/parse.js.map +1 -0
- package/dist/markdown/spans.d.ts +20 -0
- package/dist/markdown/spans.d.ts.map +1 -0
- package/dist/markdown/spans.js +96 -0
- package/dist/markdown/spans.js.map +1 -0
- package/dist/media-player/backends.d.ts +64 -0
- package/dist/media-player/backends.d.ts.map +1 -0
- package/dist/media-player/backends.js +110 -0
- package/dist/media-player/backends.js.map +1 -0
- package/dist/media-player/control.d.ts +40 -0
- package/dist/media-player/control.d.ts.map +1 -0
- package/dist/media-player/control.js +44 -0
- package/dist/media-player/control.js.map +1 -0
- package/dist/media-player/hx.d.ts +24 -0
- package/dist/media-player/hx.d.ts.map +1 -0
- package/dist/media-player/hx.js +25 -0
- package/dist/media-player/hx.js.map +1 -0
- package/dist/media-player/index.d.ts +107 -0
- package/dist/media-player/index.d.ts.map +1 -0
- package/dist/media-player/index.js +219 -0
- package/dist/media-player/index.js.map +1 -0
- package/dist/media-player/mpv.d.ts +4 -0
- package/dist/media-player/mpv.d.ts.map +1 -0
- package/dist/media-player/mpv.js +120 -0
- package/dist/media-player/mpv.js.map +1 -0
- package/dist/media-player/vlc.d.ts +8 -0
- package/dist/media-player/vlc.d.ts.map +1 -0
- package/dist/media-player/vlc.js +83 -0
- package/dist/media-player/vlc.js.map +1 -0
- package/dist/richtext/index.d.ts +19 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +4 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/links.d.ts +12 -0
- package/dist/richtext/links.d.ts.map +1 -0
- package/dist/richtext/links.js +64 -0
- package/dist/richtext/links.js.map +1 -0
- package/dist/richtext/menu.d.ts +11 -0
- package/dist/richtext/menu.d.ts.map +1 -0
- package/dist/richtext/menu.js +43 -0
- package/dist/richtext/menu.js.map +1 -0
- package/dist/richtext/node.d.ts +151 -0
- package/dist/richtext/node.d.ts.map +1 -0
- package/dist/richtext/node.js +255 -0
- package/dist/richtext/node.js.map +1 -0
- package/dist/richtext/runs.d.ts +92 -0
- package/dist/richtext/runs.d.ts.map +1 -0
- package/dist/richtext/runs.js +158 -0
- package/dist/richtext/runs.js.map +1 -0
- package/dist/table/hx.d.ts +24 -0
- package/dist/table/hx.d.ts.map +1 -0
- package/dist/table/hx.js +25 -0
- package/dist/table/hx.js.map +1 -0
- package/dist/table/index.d.ts +169 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +844 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/rows.d.ts +136 -0
- package/dist/table/rows.d.ts.map +1 -0
- package/dist/table/rows.js +146 -0
- package/dist/table/rows.js.map +1 -0
- package/dist/terminal/backends.d.ts +105 -0
- package/dist/terminal/backends.d.ts.map +1 -0
- package/dist/terminal/backends.js +185 -0
- package/dist/terminal/backends.js.map +1 -0
- package/dist/terminal/hx.d.ts +24 -0
- package/dist/terminal/hx.d.ts.map +1 -0
- package/dist/terminal/hx.js +25 -0
- package/dist/terminal/hx.js.map +1 -0
- package/dist/terminal/index.d.ts +160 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +344 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/title.d.ts +24 -0
- package/dist/terminal/title.d.ts.map +1 -0
- package/dist/terminal/title.js +129 -0
- package/dist/terminal/title.js.map +1 -0
- package/dist/terminal/vt/colors.d.ts +63 -0
- package/dist/terminal/vt/colors.d.ts.map +1 -0
- package/dist/terminal/vt/colors.js +203 -0
- package/dist/terminal/vt/colors.js.map +1 -0
- package/dist/terminal/vt/diff.d.ts +117 -0
- package/dist/terminal/vt/diff.d.ts.map +1 -0
- package/dist/terminal/vt/diff.js +358 -0
- package/dist/terminal/vt/diff.js.map +1 -0
- package/dist/terminal/vt/fonts.d.ts +92 -0
- package/dist/terminal/vt/fonts.d.ts.map +1 -0
- package/dist/terminal/vt/fonts.js +178 -0
- package/dist/terminal/vt/fonts.js.map +1 -0
- package/dist/terminal/vt/index.d.ts +78 -0
- package/dist/terminal/vt/index.d.ts.map +1 -0
- package/dist/terminal/vt/index.js +312 -0
- package/dist/terminal/vt/index.js.map +1 -0
- package/dist/terminal/vt/keys.d.ts +74 -0
- package/dist/terminal/vt/keys.d.ts.map +1 -0
- package/dist/terminal/vt/keys.js +309 -0
- package/dist/terminal/vt/keys.js.map +1 -0
- package/dist/terminal/vt/mouse.d.ts +44 -0
- package/dist/terminal/vt/mouse.d.ts.map +1 -0
- package/dist/terminal/vt/mouse.js +106 -0
- package/dist/terminal/vt/mouse.js.map +1 -0
- package/dist/terminal/vt/node.d.ts +246 -0
- package/dist/terminal/vt/node.d.ts.map +1 -0
- package/dist/terminal/vt/node.js +1068 -0
- package/dist/terminal/vt/node.js.map +1 -0
- package/dist/terminal/vt/pty.d.ts +81 -0
- package/dist/terminal/vt/pty.d.ts.map +1 -0
- package/dist/terminal/vt/pty.js +201 -0
- package/dist/terminal/vt/pty.js.map +1 -0
- package/dist/terminal/vt/renderer.d.ts +179 -0
- package/dist/terminal/vt/renderer.d.ts.map +1 -0
- package/dist/terminal/vt/renderer.js +357 -0
- package/dist/terminal/vt/renderer.js.map +1 -0
- package/dist/terminal/vt/timers.d.ts +6 -0
- package/dist/terminal/vt/timers.d.ts.map +1 -0
- package/dist/terminal/vt/timers.js +16 -0
- package/dist/terminal/vt/timers.js.map +1 -0
- package/dist/terminal/vt/xterm.d.ts +142 -0
- package/dist/terminal/vt/xterm.d.ts.map +1 -0
- package/dist/terminal/vt/xterm.js +32 -0
- package/dist/terminal/vt/xterm.js.map +1 -0
- package/dist/terminal-output/hx.d.ts +24 -0
- package/dist/terminal-output/hx.d.ts.map +1 -0
- package/dist/terminal-output/hx.js +25 -0
- package/dist/terminal-output/hx.js.map +1 -0
- package/dist/terminal-output/index.d.ts +92 -0
- package/dist/terminal-output/index.d.ts.map +1 -0
- package/dist/terminal-output/index.js +179 -0
- package/dist/terminal-output/index.js.map +1 -0
- package/dist/terminal-output/runs.d.ts +27 -0
- package/dist/terminal-output/runs.d.ts.map +1 -0
- package/dist/terminal-output/runs.js +66 -0
- package/dist/terminal-output/runs.js.map +1 -0
- package/dist/three/canvas.d.ts +46 -0
- package/dist/three/canvas.d.ts.map +1 -0
- package/dist/three/canvas.js +305 -0
- package/dist/three/canvas.js.map +1 -0
- package/dist/three/events.d.ts +64 -0
- package/dist/three/events.d.ts.map +1 -0
- package/dist/three/events.js +146 -0
- package/dist/three/events.js.map +1 -0
- package/dist/three/geometries.d.ts +89 -0
- package/dist/three/geometries.d.ts.map +1 -0
- package/dist/three/geometries.js +345 -0
- package/dist/three/geometries.js.map +1 -0
- package/dist/three/globals.d.ts +7 -0
- package/dist/three/globals.d.ts.map +1 -0
- package/dist/three/globals.js +20 -0
- package/dist/three/globals.js.map +1 -0
- package/dist/three/hx.d.ts +9 -0
- package/dist/three/hx.d.ts.map +1 -0
- package/dist/three/hx.js +10 -0
- package/dist/three/hx.js.map +1 -0
- package/dist/three/index.d.ts +22 -0
- package/dist/three/index.d.ts.map +1 -0
- package/dist/three/index.js +24 -0
- package/dist/three/index.js.map +1 -0
- package/dist/three/jsx-dev-runtime.d.ts +19 -0
- package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/three/jsx-dev-runtime.js +2 -0
- package/dist/three/jsx-dev-runtime.js.map +1 -0
- package/dist/three/jsx-runtime.d.ts +19 -0
- package/dist/three/jsx-runtime.d.ts.map +1 -0
- package/dist/three/jsx-runtime.js +2 -0
- package/dist/three/jsx-runtime.js.map +1 -0
- package/dist/three/jsx.d.ts +198 -0
- package/dist/three/jsx.d.ts.map +1 -0
- package/dist/three/jsx.js +2 -0
- package/dist/three/jsx.js.map +1 -0
- package/dist/three/materials.d.ts +125 -0
- package/dist/three/materials.d.ts.map +1 -0
- package/dist/three/materials.js +229 -0
- package/dist/three/materials.js.map +1 -0
- package/dist/three/math.d.ts +146 -0
- package/dist/three/math.d.ts.map +1 -0
- package/dist/three/math.js +464 -0
- package/dist/three/math.js.map +1 -0
- package/dist/three/objects.d.ts +185 -0
- package/dist/three/objects.d.ts.map +1 -0
- package/dist/three/objects.js +309 -0
- package/dist/three/objects.js.map +1 -0
- package/dist/three/passes.d.ts +54 -0
- package/dist/three/passes.d.ts.map +1 -0
- package/dist/three/passes.js +78 -0
- package/dist/three/passes.js.map +1 -0
- package/dist/three/postprocess.d.ts +85 -0
- package/dist/three/postprocess.d.ts.map +1 -0
- package/dist/three/postprocess.js +503 -0
- package/dist/three/postprocess.js.map +1 -0
- package/dist/three/raycast.d.ts +24 -0
- package/dist/three/raycast.d.ts.map +1 -0
- package/dist/three/raycast.js +138 -0
- package/dist/three/raycast.js.map +1 -0
- package/dist/three/reconciler.d.ts +48 -0
- package/dist/three/reconciler.d.ts.map +1 -0
- package/dist/three/reconciler.js +416 -0
- package/dist/three/reconciler.js.map +1 -0
- package/dist/three/renderer-direct.d.ts +102 -0
- package/dist/three/renderer-direct.d.ts.map +1 -0
- package/dist/three/renderer-direct.js +782 -0
- package/dist/three/renderer-direct.js.map +1 -0
- package/dist/three/renderer-indirect.d.ts +68 -0
- package/dist/three/renderer-indirect.d.ts.map +1 -0
- package/dist/three/renderer-indirect.js +438 -0
- package/dist/three/renderer-indirect.js.map +1 -0
- package/dist/three/store.d.ts +81 -0
- package/dist/three/store.d.ts.map +1 -0
- package/dist/three/store.js +110 -0
- package/dist/three/store.js.map +1 -0
- package/dist/timeline/hx.d.ts +18 -0
- package/dist/timeline/hx.d.ts.map +1 -0
- package/dist/timeline/hx.js +10 -0
- package/dist/timeline/hx.js.map +1 -0
- package/dist/timeline/index.d.ts +152 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +383 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/tray-host/hx.d.ts +24 -0
- package/dist/tray-host/hx.d.ts.map +1 -0
- package/dist/tray-host/hx.js +25 -0
- package/dist/tray-host/hx.js.map +1 -0
- package/dist/tray-host/index.d.ts +110 -0
- package/dist/tray-host/index.d.ts.map +1 -0
- package/dist/tray-host/index.js +191 -0
- package/dist/tray-host/index.js.map +1 -0
- package/dist/tray-host/manager.d.ts +137 -0
- package/dist/tray-host/manager.d.ts.map +1 -0
- package/dist/tray-host/manager.js +462 -0
- package/dist/tray-host/manager.js.map +1 -0
- package/dist/tray-host/notify.d.ts +22 -0
- package/dist/tray-host/notify.d.ts.map +1 -0
- package/dist/tray-host/notify.js +74 -0
- package/dist/tray-host/notify.js.map +1 -0
- package/dist/tray-host/protocol.d.ts +106 -0
- package/dist/tray-host/protocol.d.ts.map +1 -0
- package/dist/tray-host/protocol.js +191 -0
- package/dist/tray-host/protocol.js.map +1 -0
- package/dist/tree/hx.d.ts +24 -0
- package/dist/tree/hx.d.ts.map +1 -0
- package/dist/tree/hx.js +25 -0
- package/dist/tree/hx.js.map +1 -0
- package/dist/tree/index.d.ts +221 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +716 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/internal.d.ts +18 -0
- package/dist/tree/internal.d.ts.map +1 -0
- package/dist/tree/internal.js +66 -0
- package/dist/tree/internal.js.map +1 -0
- package/dist/tree/rows.d.ts +177 -0
- package/dist/tree/rows.d.ts.map +1 -0
- package/dist/tree/rows.js +179 -0
- package/dist/tree/rows.js.map +1 -0
- package/package.json +166 -12
- package/src/ansi/cast.ts +159 -0
- package/src/ansi/index.ts +53 -0
- package/src/ansi/palette.ts +226 -0
- package/src/ansi/parse.ts +780 -0
- package/src/ansi/sgr.ts +380 -0
- package/src/ansi/utf8.ts +84 -0
- package/src/calendar/Calendar.ts +744 -0
- package/src/calendar/DatePicker.ts +368 -0
- package/src/calendar/dates.ts +307 -0
- package/src/calendar/index.ts +51 -0
- package/src/charts/components.ts +864 -0
- package/src/charts/data.ts +776 -0
- package/src/charts/hx.ts +39 -0
- package/src/charts/index.ts +99 -0
- package/src/charts/node.ts +932 -0
- package/src/charts/render.ts +982 -0
- package/src/charts/scale.ts +214 -0
- package/src/charts/spec.ts +122 -0
- package/src/charts/timers.ts +24 -0
- package/src/code/hx.ts +51 -0
- package/src/code/index.ts +174 -0
- package/src/code-editor/completion.ts +161 -0
- package/src/code-editor/doc.ts +198 -0
- package/src/code-editor/hx.ts +26 -0
- package/src/code-editor/index.ts +615 -0
- package/src/code-editor/node.ts +1926 -0
- package/src/code-language/hljs.ts +302 -0
- package/src/code-language/index.ts +51 -0
- package/src/code-language/languages/glsl.ts +120 -0
- package/src/code-language/languages/javascript.ts +419 -0
- package/src/code-language/languages/json.ts +72 -0
- package/src/code-language/languages/shell.ts +221 -0
- package/src/code-language/languages/sql.ts +165 -0
- package/src/code-language/lezer.ts +190 -0
- package/src/code-language/registry.ts +66 -0
- package/src/code-language/runs.ts +128 -0
- package/src/code-language/stream.ts +306 -0
- package/src/code-language/textmate.ts +134 -0
- package/src/code-language/theme.ts +124 -0
- package/src/code-language/timers.ts +36 -0
- package/src/code-language/types.ts +252 -0
- package/src/codeblock/index.ts +146 -0
- package/src/color-picker/ColorField.ts +333 -0
- package/src/color-picker/ColorPicker.ts +1069 -0
- package/src/color-picker/color.ts +399 -0
- package/src/color-picker/index.ts +50 -0
- package/src/desktop-calendar/eds.ts +484 -0
- package/src/desktop-calendar/ical.ts +119 -0
- package/src/desktop-calendar/index.ts +287 -0
- package/src/embed/client.ts +311 -0
- package/src/embed/host.ts +432 -0
- package/src/embed/index.ts +33 -0
- package/src/embed/timers.ts +32 -0
- package/src/flow/draw.ts +418 -0
- package/src/flow/index.ts +473 -0
- package/src/flow/model.ts +687 -0
- package/src/flow/node.ts +3694 -0
- package/src/flow/paths.ts +403 -0
- package/src/flow/types.ts +634 -0
- package/src/formula/hx.ts +51 -0
- package/src/formula/index.ts +243 -0
- package/src/formula/katex.ts +209 -0
- package/src/formula/layout.ts +876 -0
- package/src/formula/node.ts +467 -0
- package/src/html/controls.ts +244 -0
- package/src/html/css/cascade.ts +606 -0
- package/src/html/css/parse.ts +500 -0
- package/src/html/css/style.ts +1371 -0
- package/src/html/css/ua.ts +174 -0
- package/src/html/css/values.ts +358 -0
- package/src/html/dom.ts +410 -0
- package/src/html/hx.ts +55 -0
- package/src/html/index.ts +545 -0
- package/src/html/layout/block.ts +876 -0
- package/src/html/layout/boxes.ts +981 -0
- package/src/html/layout/flex.ts +297 -0
- package/src/html/layout/floats.ts +125 -0
- package/src/html/layout/inline.ts +870 -0
- package/src/html/layout/table.ts +380 -0
- package/src/html/node.ts +967 -0
- package/src/html/paint.ts +605 -0
- package/src/html/resources.ts +214 -0
- package/src/index.ts +638 -0
- package/src/internal/heights.ts +211 -0
- package/src/internal/hx.ts +53 -0
- package/src/internal/text.ts +44 -0
- package/src/internal/timers.ts +44 -0
- package/src/internal/widget.ts +92 -0
- package/src/markdown/ast.ts +163 -0
- package/src/markdown/hx.ts +51 -0
- package/src/markdown/index.ts +686 -0
- package/src/markdown/parse.ts +1037 -0
- package/src/markdown/spans.ts +143 -0
- package/src/media-player/backends.ts +155 -0
- package/src/media-player/control.ts +70 -0
- package/src/media-player/hx.ts +51 -0
- package/src/media-player/index.ts +378 -0
- package/src/media-player/mpv.ts +146 -0
- package/src/media-player/vlc.ts +97 -0
- package/src/richtext/index.ts +42 -0
- package/src/richtext/links.ts +78 -0
- package/src/richtext/menu.ts +49 -0
- package/src/richtext/node.ts +406 -0
- package/src/richtext/runs.ts +253 -0
- package/src/table/hx.ts +51 -0
- package/src/table/index.ts +1219 -0
- package/src/table/rows.ts +275 -0
- package/src/terminal/backends.ts +242 -0
- package/src/terminal/hx.ts +51 -0
- package/src/terminal/index.ts +574 -0
- package/src/terminal/title.ts +172 -0
- package/src/terminal/vt/colors.ts +247 -0
- package/src/terminal/vt/diff.ts +467 -0
- package/src/terminal/vt/fonts.ts +233 -0
- package/src/terminal/vt/index.ts +443 -0
- package/src/terminal/vt/keys.ts +369 -0
- package/src/terminal/vt/mouse.ts +144 -0
- package/src/terminal/vt/node.ts +1242 -0
- package/src/terminal/vt/pty.ts +334 -0
- package/src/terminal/vt/renderer.ts +555 -0
- package/src/terminal/vt/timers.ts +31 -0
- package/src/terminal/vt/xterm.ts +193 -0
- package/src/terminal-output/hx.ts +51 -0
- package/src/terminal-output/index.ts +340 -0
- package/src/terminal-output/runs.ts +79 -0
- package/src/three/canvas.ts +451 -0
- package/src/three/events.ts +197 -0
- package/src/three/geometries.ts +429 -0
- package/src/three/globals.ts +34 -0
- package/src/three/hx.ts +22 -0
- package/src/three/index.ts +98 -0
- package/src/three/jsx-dev-runtime.ts +27 -0
- package/src/three/jsx-runtime.ts +38 -0
- package/src/three/jsx.ts +275 -0
- package/src/three/materials.ts +270 -0
- package/src/three/math.ts +585 -0
- package/src/three/objects.ts +397 -0
- package/src/three/passes.ts +90 -0
- package/src/three/postprocess.ts +677 -0
- package/src/three/raycast.ts +189 -0
- package/src/three/react-reconciler.d.ts +50 -0
- package/src/three/reconciler.ts +624 -0
- package/src/three/renderer-direct.ts +1055 -0
- package/src/three/renderer-indirect.ts +570 -0
- package/src/three/store.ts +207 -0
- package/src/timeline/hx.ts +31 -0
- package/src/timeline/index.ts +603 -0
- package/src/tray-host/hx.ts +51 -0
- package/src/tray-host/index.ts +331 -0
- package/src/tray-host/manager.ts +639 -0
- package/src/tray-host/notify.ts +102 -0
- package/src/tray-host/protocol.ts +235 -0
- package/src/tree/hx.ts +51 -0
- package/src/tree/index.ts +1087 -0
- package/src/tree/internal.ts +87 -0
- package/src/tree/rows.ts +334 -0
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -9
- package/src/sparkline/index.d.ts +0 -29
- package/src/sparkline/index.js +0 -50
- package/src/sparkline/node.js +0 -72
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
type GL = any;
|
|
2
|
+
import type { DirectRenderer } from './renderer-direct.js';
|
|
3
|
+
import type { EffectComposer } from './passes.js';
|
|
4
|
+
interface FrameInfo {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The pass chain for one surface: its render targets, its programs and the
|
|
10
|
+
* full-screen quad they all draw. Owned by the canvas, which lends it the
|
|
11
|
+
* direct renderer — so a pass that will not build is reported exactly the
|
|
12
|
+
* way a material that will not build is, and `<shaderPass uniforms>` takes
|
|
13
|
+
* exactly what `<shaderMaterial uniforms>` takes.
|
|
14
|
+
*/
|
|
15
|
+
export declare class PostProcessor {
|
|
16
|
+
private owner;
|
|
17
|
+
private targets;
|
|
18
|
+
private bloom;
|
|
19
|
+
private width;
|
|
20
|
+
private height;
|
|
21
|
+
private programs;
|
|
22
|
+
private quad;
|
|
23
|
+
private passes;
|
|
24
|
+
private read;
|
|
25
|
+
private startedAt;
|
|
26
|
+
private _usable;
|
|
27
|
+
constructor(owner: DirectRenderer);
|
|
28
|
+
/**
|
|
29
|
+
* Bind the scene's render target, so the surface's clear and the scene's
|
|
30
|
+
* draws land in a texture. False means "draw straight to the window" —
|
|
31
|
+
* because there is nothing to compose, or because something is missing —
|
|
32
|
+
* and is the answer the caller acts on.
|
|
33
|
+
*/
|
|
34
|
+
begin(gl: GL, info: FrameInfo, composer: EffectComposer): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Run the chain. Each pass reads the target the previous one wrote; the
|
|
37
|
+
* last writes framebuffer 0, which is what `SwapBuffers` presents.
|
|
38
|
+
*/
|
|
39
|
+
end(gl: GL, info: FrameInfo): boolean;
|
|
40
|
+
private runPass;
|
|
41
|
+
/**
|
|
42
|
+
* Bright pass, blur across, blur down, composite — four draws, the middle
|
|
43
|
+
* two at half resolution. Blurring at half size is both cheaper and wider:
|
|
44
|
+
* the same kernel covers twice as many source pixels.
|
|
45
|
+
*/
|
|
46
|
+
private bloomPass;
|
|
47
|
+
/** The image, unchanged, into `target` — a pass that could not run. */
|
|
48
|
+
private copy;
|
|
49
|
+
/** `null` is the window's own framebuffer, the one that gets presented. */
|
|
50
|
+
private bindTarget;
|
|
51
|
+
private bindSource;
|
|
52
|
+
/**
|
|
53
|
+
* The three a post shader almost always wants. They are *set*, not
|
|
54
|
+
* injected — a pass that does not declare one gets no location back and
|
|
55
|
+
* the write is dropped, which is what keeps a shader copied from three.js
|
|
56
|
+
* (where these names are the author's to define) compiling unchanged.
|
|
57
|
+
*/
|
|
58
|
+
private commonUniforms;
|
|
59
|
+
/** `<shaderPass uniforms>`, in three.js's `{ name: { value } }` shape. */
|
|
60
|
+
private userUniforms;
|
|
61
|
+
private drawQuad;
|
|
62
|
+
private quadBuffer;
|
|
63
|
+
/**
|
|
64
|
+
* One program per pass configuration. A `<shaderPass>` is keyed by its
|
|
65
|
+
* source, so editing the GLSL recompiles and changing a uniform does not.
|
|
66
|
+
*/
|
|
67
|
+
private programFor;
|
|
68
|
+
/**
|
|
69
|
+
* Does this context have framebuffer objects? The direct backend exposes
|
|
70
|
+
* whatever `x11-dri` provides, so "the GL has no FBOs" is a real state.
|
|
71
|
+
* Reported once; the scene then draws to the window uncomposed, which is
|
|
72
|
+
* the same picture without the effects.
|
|
73
|
+
*/
|
|
74
|
+
private usable;
|
|
75
|
+
private ensureTargets;
|
|
76
|
+
private ensureBloom;
|
|
77
|
+
private createTarget;
|
|
78
|
+
private destroyTarget;
|
|
79
|
+
private releaseTargets;
|
|
80
|
+
/** Every render target, on a resize or on the way out. */
|
|
81
|
+
private release;
|
|
82
|
+
dispose(gl: GL): void;
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=postprocess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postprocess.d.ts","sourceRoot":"","sources":["../../src/three/postprocess.ts"],"names":[],"mappings":"AAeA,KAAK,EAAE,GAAG,GAAG,CAAC;AAEd,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAsLpE,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAsB;IAErC,YAAY,KAAK,EAAE,cAAc,EAEhC;IAED;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAahE;IAED;;;OAGG;IACH,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAyBpC;IAED,OAAO,CAAC,OAAO;IA8Bf;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAiDjB,uEAAuE;IACvE,OAAO,CAAC,IAAI;IAcZ,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,UAAU;IAYlB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAmBtB,0EAA0E;IAC1E,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAQlB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAgClB;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,YAAY;IA+EpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAOtB,0DAA0D;IAC1D,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAapB;CACF"}
|
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
import { BloomPass, VignettePass } from './passes.js';
|
|
2
|
+
import { now } from './globals.js';
|
|
3
|
+
/**
|
|
4
|
+
* Post shaders run at `highp`, both stages: `varying vec2 vUv` is declared
|
|
5
|
+
* by our vertex shader and again by the pass's fragment shader (that is how
|
|
6
|
+
* three.js's post shaders are written), and GLSL ES fails to link when the
|
|
7
|
+
* two precisions disagree. `mediump` guarantees only ~10 bits, which at
|
|
8
|
+
* 1080p is coarser than a texel — visible as stair-stepping in any blur.
|
|
9
|
+
*/
|
|
10
|
+
const PRECISION = 'precision highp float;\n';
|
|
11
|
+
/**
|
|
12
|
+
* The full-screen triangle strip, in clip space. No uv attribute: the quad
|
|
13
|
+
* covers exactly [-1, 1], so the vertex shader derives the coordinate free.
|
|
14
|
+
*/
|
|
15
|
+
const QUAD_VERTICES = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);
|
|
16
|
+
const QUAD_VERTEX_SHADER = `${PRECISION}attribute vec2 position;
|
|
17
|
+
varying vec2 vUv;
|
|
18
|
+
void main() {
|
|
19
|
+
vUv = position * 0.5 + 0.5;
|
|
20
|
+
gl_Position = vec4(position, 0.0, 1.0);
|
|
21
|
+
}`;
|
|
22
|
+
/** Hand the image on unchanged — the last pass of a chain that went wrong. */
|
|
23
|
+
const COPY_SHADER = `uniform sampler2D tDiffuse;
|
|
24
|
+
varying vec2 vUv;
|
|
25
|
+
void main() {
|
|
26
|
+
gl_FragColor = texture2D(tDiffuse, vUv);
|
|
27
|
+
}`;
|
|
28
|
+
const VIGNETTE_SHADER = `uniform sampler2D tDiffuse;
|
|
29
|
+
uniform float offset;
|
|
30
|
+
uniform float darkness;
|
|
31
|
+
varying vec2 vUv;
|
|
32
|
+
void main() {
|
|
33
|
+
vec4 texel = texture2D(tDiffuse, vUv);
|
|
34
|
+
// 0 at the centre, 1 in the corners
|
|
35
|
+
float d = distance(vUv, vec2(0.5)) * 1.41421356;
|
|
36
|
+
float v = smoothstep(offset, 1.0, d);
|
|
37
|
+
gl_FragColor = vec4(texel.rgb * (1.0 - v * darkness), texel.a);
|
|
38
|
+
}`;
|
|
39
|
+
// FXAA, the reduced form: find the local luma gradient from four diagonal
|
|
40
|
+
// neighbours, then blend along it. Worth having because the direct backend
|
|
41
|
+
// has no multisampling — an FBO with an MSAA attachment is an ES 3 feature —
|
|
42
|
+
// so this is the only antialiasing a composed scene can get.
|
|
43
|
+
const FXAA_SHADER = `uniform sampler2D tDiffuse;
|
|
44
|
+
uniform vec2 texelSize;
|
|
45
|
+
varying vec2 vUv;
|
|
46
|
+
|
|
47
|
+
const vec3 LUMA = vec3(0.299, 0.587, 0.114);
|
|
48
|
+
const float SPAN_MAX = 8.0;
|
|
49
|
+
const float REDUCE_MUL = 0.125;
|
|
50
|
+
const float REDUCE_MIN = 0.0078125;
|
|
51
|
+
|
|
52
|
+
void main() {
|
|
53
|
+
vec3 nw = texture2D(tDiffuse, vUv + vec2(-1.0, -1.0) * texelSize).rgb;
|
|
54
|
+
vec3 ne = texture2D(tDiffuse, vUv + vec2( 1.0, -1.0) * texelSize).rgb;
|
|
55
|
+
vec3 sw = texture2D(tDiffuse, vUv + vec2(-1.0, 1.0) * texelSize).rgb;
|
|
56
|
+
vec3 se = texture2D(tDiffuse, vUv + vec2( 1.0, 1.0) * texelSize).rgb;
|
|
57
|
+
vec4 texel = texture2D(tDiffuse, vUv);
|
|
58
|
+
|
|
59
|
+
float lumaNW = dot(nw, LUMA);
|
|
60
|
+
float lumaNE = dot(ne, LUMA);
|
|
61
|
+
float lumaSW = dot(sw, LUMA);
|
|
62
|
+
float lumaSE = dot(se, LUMA);
|
|
63
|
+
float lumaM = dot(texel.rgb, LUMA);
|
|
64
|
+
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
|
65
|
+
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
|
66
|
+
|
|
67
|
+
// the edge runs perpendicular to the luma gradient
|
|
68
|
+
vec2 dir = vec2(
|
|
69
|
+
-((lumaNW + lumaNE) - (lumaSW + lumaSE)),
|
|
70
|
+
((lumaNW + lumaSW) - (lumaNE + lumaSE))
|
|
71
|
+
);
|
|
72
|
+
float reduce = max(
|
|
73
|
+
(lumaNW + lumaNE + lumaSW + lumaSE) * 0.25 * REDUCE_MUL,
|
|
74
|
+
REDUCE_MIN
|
|
75
|
+
);
|
|
76
|
+
float scale = 1.0 / (min(abs(dir.x), abs(dir.y)) + reduce);
|
|
77
|
+
dir = clamp(dir * scale, vec2(-SPAN_MAX), vec2(SPAN_MAX)) * texelSize;
|
|
78
|
+
|
|
79
|
+
vec3 inner = 0.5 * (
|
|
80
|
+
texture2D(tDiffuse, vUv + dir * (1.0 / 3.0 - 0.5)).rgb +
|
|
81
|
+
texture2D(tDiffuse, vUv + dir * (2.0 / 3.0 - 0.5)).rgb
|
|
82
|
+
);
|
|
83
|
+
vec3 outer = inner * 0.5 + 0.25 * (
|
|
84
|
+
texture2D(tDiffuse, vUv - dir * 0.5).rgb +
|
|
85
|
+
texture2D(tDiffuse, vUv + dir * 0.5).rgb
|
|
86
|
+
);
|
|
87
|
+
// the wider blend overshot the local range, so keep the narrow one
|
|
88
|
+
float lumaOuter = dot(outer, LUMA);
|
|
89
|
+
vec3 color = (lumaOuter < lumaMin || lumaOuter > lumaMax) ? inner : outer;
|
|
90
|
+
gl_FragColor = vec4(color, texel.a);
|
|
91
|
+
}`;
|
|
92
|
+
const BLOOM_BRIGHT_SHADER = `uniform sampler2D tDiffuse;
|
|
93
|
+
uniform float threshold;
|
|
94
|
+
varying vec2 vUv;
|
|
95
|
+
void main() {
|
|
96
|
+
vec3 color = texture2D(tDiffuse, vUv).rgb;
|
|
97
|
+
float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));
|
|
98
|
+
// a soft knee rather than a step, so a surface drifting past the
|
|
99
|
+
// threshold brightens gradually instead of popping on
|
|
100
|
+
float keep = smoothstep(threshold, threshold + 0.15, luma);
|
|
101
|
+
gl_FragColor = vec4(color * keep, 1.0);
|
|
102
|
+
}`;
|
|
103
|
+
// A separable nine-tap Gaussian sampled at five points: each off-centre tap
|
|
104
|
+
// sits between two texels and lets the bilinear filter average them, which
|
|
105
|
+
// is nine texels' worth of blur for five fetches.
|
|
106
|
+
const BLOOM_BLUR_SHADER = `uniform sampler2D tDiffuse;
|
|
107
|
+
uniform vec2 direction;
|
|
108
|
+
varying vec2 vUv;
|
|
109
|
+
void main() {
|
|
110
|
+
vec3 sum = texture2D(tDiffuse, vUv).rgb * 0.2270270270;
|
|
111
|
+
sum += (texture2D(tDiffuse, vUv + direction * 1.3846153846).rgb +
|
|
112
|
+
texture2D(tDiffuse, vUv - direction * 1.3846153846).rgb) * 0.3162162162;
|
|
113
|
+
sum += (texture2D(tDiffuse, vUv + direction * 3.2307692308).rgb +
|
|
114
|
+
texture2D(tDiffuse, vUv - direction * 3.2307692308).rgb) * 0.0702702703;
|
|
115
|
+
gl_FragColor = vec4(sum, 1.0);
|
|
116
|
+
}`;
|
|
117
|
+
const BLOOM_COMPOSITE_SHADER = `uniform sampler2D tDiffuse;
|
|
118
|
+
uniform sampler2D tBloom;
|
|
119
|
+
uniform float strength;
|
|
120
|
+
varying vec2 vUv;
|
|
121
|
+
void main() {
|
|
122
|
+
vec4 base = texture2D(tDiffuse, vUv);
|
|
123
|
+
gl_FragColor = vec4(base.rgb + texture2D(tBloom, vUv).rgb * strength, base.a);
|
|
124
|
+
}`;
|
|
125
|
+
/** Single-shader passes: one program, one draw, fields straight to uniforms. */
|
|
126
|
+
const SIMPLE_PASSES = {
|
|
127
|
+
vignettePass: {
|
|
128
|
+
fragmentShader: VIGNETTE_SHADER,
|
|
129
|
+
uniforms(gl, program, pass) {
|
|
130
|
+
const vignette = pass;
|
|
131
|
+
gl.uniform1f(program.uniform('offset'), vignette.offset);
|
|
132
|
+
gl.uniform1f(program.uniform('darkness'), vignette.darkness);
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
fxaaPass: {
|
|
136
|
+
fragmentShader: FXAA_SHADER,
|
|
137
|
+
// `texelSize` is one of the uniforms every pass gets
|
|
138
|
+
uniforms() { },
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
/** The GL a render target needs, beyond what drawing a mesh needs. */
|
|
142
|
+
const FBO_ENTRY_POINTS = [
|
|
143
|
+
'createFramebuffer',
|
|
144
|
+
'bindFramebuffer',
|
|
145
|
+
'framebufferTexture2D',
|
|
146
|
+
'createRenderbuffer',
|
|
147
|
+
'bindRenderbuffer',
|
|
148
|
+
'renderbufferStorage',
|
|
149
|
+
'framebufferRenderbuffer',
|
|
150
|
+
'checkFramebufferStatus',
|
|
151
|
+
'deleteFramebuffer',
|
|
152
|
+
'deleteRenderbuffer',
|
|
153
|
+
];
|
|
154
|
+
const half = (n) => Math.max(1, n >> 1);
|
|
155
|
+
/**
|
|
156
|
+
* The pass chain for one surface: its render targets, its programs and the
|
|
157
|
+
* full-screen quad they all draw. Owned by the canvas, which lends it the
|
|
158
|
+
* direct renderer — so a pass that will not build is reported exactly the
|
|
159
|
+
* way a material that will not build is, and `<shaderPass uniforms>` takes
|
|
160
|
+
* exactly what `<shaderMaterial uniforms>` takes.
|
|
161
|
+
*/
|
|
162
|
+
export class PostProcessor {
|
|
163
|
+
owner;
|
|
164
|
+
targets = [null, null];
|
|
165
|
+
bloom = [null, null];
|
|
166
|
+
width = 0;
|
|
167
|
+
height = 0;
|
|
168
|
+
programs = new Map();
|
|
169
|
+
quad = null;
|
|
170
|
+
passes = null;
|
|
171
|
+
read = 0;
|
|
172
|
+
startedAt = null;
|
|
173
|
+
_usable;
|
|
174
|
+
constructor(owner) {
|
|
175
|
+
this.owner = owner;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Bind the scene's render target, so the surface's clear and the scene's
|
|
179
|
+
* draws land in a texture. False means "draw straight to the window" —
|
|
180
|
+
* because there is nothing to compose, or because something is missing —
|
|
181
|
+
* and is the answer the caller acts on.
|
|
182
|
+
*/
|
|
183
|
+
begin(gl, info, composer) {
|
|
184
|
+
this.passes = null;
|
|
185
|
+
const passes = composer.enabled
|
|
186
|
+
? composer.passes.filter((pass) => pass.enabled)
|
|
187
|
+
: [];
|
|
188
|
+
if (passes.length === 0)
|
|
189
|
+
return false;
|
|
190
|
+
if (!this.usable(gl))
|
|
191
|
+
return false;
|
|
192
|
+
if (!this.ensureTargets(gl, info.width, info.height))
|
|
193
|
+
return false;
|
|
194
|
+
this.passes = passes;
|
|
195
|
+
this.read = 0;
|
|
196
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, this.targets[0].framebuffer);
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Run the chain. Each pass reads the target the previous one wrote; the
|
|
201
|
+
* last writes framebuffer 0, which is what `SwapBuffers` presents.
|
|
202
|
+
*/
|
|
203
|
+
end(gl, info) {
|
|
204
|
+
const passes = this.passes;
|
|
205
|
+
this.passes = null;
|
|
206
|
+
if (!passes)
|
|
207
|
+
return false;
|
|
208
|
+
// a full-screen quad is not part of the scene: nothing occludes it,
|
|
209
|
+
// nothing culls it, and it replaces rather than blends with what is there
|
|
210
|
+
gl.disable(gl.DEPTH_TEST);
|
|
211
|
+
gl.disable(gl.CULL_FACE);
|
|
212
|
+
gl.disable(gl.BLEND);
|
|
213
|
+
gl.depthMask(false);
|
|
214
|
+
for (let i = 0; i < passes.length; i++) {
|
|
215
|
+
const last = i === passes.length - 1;
|
|
216
|
+
const source = this.targets[this.read];
|
|
217
|
+
const target = last ? null : this.targets[this.read ^ 1];
|
|
218
|
+
this.runPass(gl, passes[i], source, target, info);
|
|
219
|
+
if (!last)
|
|
220
|
+
this.read ^= 1;
|
|
221
|
+
}
|
|
222
|
+
// hand the context back as the scene expects to find it
|
|
223
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, 0);
|
|
224
|
+
gl.depthMask(true);
|
|
225
|
+
gl.enable(gl.DEPTH_TEST);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
runPass(gl, pass, source, target, info) {
|
|
229
|
+
if (pass instanceof BloomPass) {
|
|
230
|
+
this.bloomPass(gl, pass, source, target, info);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const program = this.programFor(gl, pass);
|
|
234
|
+
// A pass whose shader will not build hands the image on unchanged. The
|
|
235
|
+
// alternative is a frame of whatever was last in the target, which reads
|
|
236
|
+
// as a corrupt renderer rather than as one broken effect.
|
|
237
|
+
if (!program) {
|
|
238
|
+
this.copy(gl, source, target, info);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
this.bindTarget(gl, target, info);
|
|
242
|
+
gl.useProgram(program.program);
|
|
243
|
+
this.bindSource(gl, program, 'tDiffuse', source, 0);
|
|
244
|
+
this.commonUniforms(gl, program, info);
|
|
245
|
+
const simple = SIMPLE_PASSES[pass.kind];
|
|
246
|
+
if (simple)
|
|
247
|
+
simple.uniforms(gl, program, pass);
|
|
248
|
+
else
|
|
249
|
+
this.userUniforms(gl, program, pass);
|
|
250
|
+
this.drawQuad(gl, program);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Bright pass, blur across, blur down, composite — four draws, the middle
|
|
254
|
+
* two at half resolution. Blurring at half size is both cheaper and wider:
|
|
255
|
+
* the same kernel covers twice as many source pixels.
|
|
256
|
+
*/
|
|
257
|
+
bloomPass(gl, pass, source, target, info) {
|
|
258
|
+
const bright = this.programFor(gl, pass, 'bright', BLOOM_BRIGHT_SHADER);
|
|
259
|
+
const blur = this.programFor(gl, pass, 'blur', BLOOM_BLUR_SHADER);
|
|
260
|
+
const composite = this.programFor(gl, pass, 'composite', BLOOM_COMPOSITE_SHADER);
|
|
261
|
+
const scratch = this.ensureBloom(gl, info.width, info.height);
|
|
262
|
+
if (!bright || !blur || !composite || !scratch) {
|
|
263
|
+
this.copy(gl, source, target, info);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const radius = pass.radius;
|
|
267
|
+
this.bindTarget(gl, scratch[0], info);
|
|
268
|
+
gl.useProgram(bright.program);
|
|
269
|
+
this.bindSource(gl, bright, 'tDiffuse', source, 0);
|
|
270
|
+
gl.uniform1f(bright.uniform('threshold'), pass.threshold);
|
|
271
|
+
this.drawQuad(gl, bright);
|
|
272
|
+
// separable: across the half-size target, then down it
|
|
273
|
+
gl.useProgram(blur.program);
|
|
274
|
+
for (const [from, to, direction] of [
|
|
275
|
+
[0, 1, [radius / scratch[0].width, 0]],
|
|
276
|
+
[1, 0, [0, radius / scratch[0].height]],
|
|
277
|
+
]) {
|
|
278
|
+
this.bindTarget(gl, scratch[to], info);
|
|
279
|
+
this.bindSource(gl, blur, 'tDiffuse', scratch[from], 0);
|
|
280
|
+
gl.uniform2fv(blur.uniform('direction'), new Float32Array(direction));
|
|
281
|
+
this.drawQuad(gl, blur);
|
|
282
|
+
}
|
|
283
|
+
this.bindTarget(gl, target, info);
|
|
284
|
+
gl.useProgram(composite.program);
|
|
285
|
+
this.bindSource(gl, composite, 'tDiffuse', source, 0);
|
|
286
|
+
this.bindSource(gl, composite, 'tBloom', scratch[0], 1);
|
|
287
|
+
gl.uniform1f(composite.uniform('strength'), pass.strength);
|
|
288
|
+
this.drawQuad(gl, composite);
|
|
289
|
+
}
|
|
290
|
+
/** The image, unchanged, into `target` — a pass that could not run. */
|
|
291
|
+
copy(gl, source, target, info) {
|
|
292
|
+
const program = this.programFor(gl, COPY_PASS);
|
|
293
|
+
if (!program)
|
|
294
|
+
return;
|
|
295
|
+
this.bindTarget(gl, target, info);
|
|
296
|
+
gl.useProgram(program.program);
|
|
297
|
+
this.bindSource(gl, program, 'tDiffuse', source, 0);
|
|
298
|
+
this.drawQuad(gl, program);
|
|
299
|
+
}
|
|
300
|
+
/** `null` is the window's own framebuffer, the one that gets presented. */
|
|
301
|
+
bindTarget(gl, target, info) {
|
|
302
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, target ? target.framebuffer : 0);
|
|
303
|
+
gl.viewport(0, 0, target ? target.width : info.width, target ? target.height : info.height);
|
|
304
|
+
}
|
|
305
|
+
bindSource(gl, program, name, target, unit) {
|
|
306
|
+
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
307
|
+
gl.bindTexture(gl.TEXTURE_2D, target.texture);
|
|
308
|
+
gl.uniform1i(program.uniform(name), unit);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* The three a post shader almost always wants. They are *set*, not
|
|
312
|
+
* injected — a pass that does not declare one gets no location back and
|
|
313
|
+
* the write is dropped, which is what keeps a shader copied from three.js
|
|
314
|
+
* (where these names are the author's to define) compiling unchanged.
|
|
315
|
+
*/
|
|
316
|
+
commonUniforms(gl, program, info) {
|
|
317
|
+
const { width, height } = info;
|
|
318
|
+
gl.uniform2fv(program.uniform('resolution'), new Float32Array([width, height]));
|
|
319
|
+
gl.uniform2fv(program.uniform('texelSize'), new Float32Array([1 / Math.max(1, width), 1 / Math.max(1, height)]));
|
|
320
|
+
const time = now();
|
|
321
|
+
if (this.startedAt === null)
|
|
322
|
+
this.startedAt = time;
|
|
323
|
+
gl.uniform1f(program.uniform('time'), (time - this.startedAt) / 1000);
|
|
324
|
+
}
|
|
325
|
+
/** `<shaderPass uniforms>`, in three.js's `{ name: { value } }` shape. */
|
|
326
|
+
userUniforms(gl, program, pass) {
|
|
327
|
+
const uniforms = pass.uniforms;
|
|
328
|
+
if (!uniforms)
|
|
329
|
+
return;
|
|
330
|
+
for (const [name, entry] of Object.entries(uniforms)) {
|
|
331
|
+
this.owner.setUniform(gl, program.uniform(name), entry.value);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
drawQuad(gl, program) {
|
|
335
|
+
const location = program.attribute('position');
|
|
336
|
+
if (location < 0)
|
|
337
|
+
return;
|
|
338
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer(gl));
|
|
339
|
+
gl.enableVertexAttribArray(location);
|
|
340
|
+
gl.vertexAttribPointer(location, 2, gl.FLOAT, false, 0, 0);
|
|
341
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
342
|
+
}
|
|
343
|
+
quadBuffer(gl) {
|
|
344
|
+
if (this.quad)
|
|
345
|
+
return this.quad;
|
|
346
|
+
this.quad = gl.createBuffer();
|
|
347
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.quad);
|
|
348
|
+
gl.bufferData(gl.ARRAY_BUFFER, QUAD_VERTICES, gl.STATIC_DRAW);
|
|
349
|
+
return this.quad;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* One program per pass configuration. A `<shaderPass>` is keyed by its
|
|
353
|
+
* source, so editing the GLSL recompiles and changing a uniform does not.
|
|
354
|
+
*/
|
|
355
|
+
programFor(gl, pass, part = '', override = null) {
|
|
356
|
+
const kind = pass.kind;
|
|
357
|
+
const custom = kind === 'shaderPass';
|
|
358
|
+
const shader = pass;
|
|
359
|
+
const fragmentShader = override ??
|
|
360
|
+
(custom ? shader.fragmentShader : SIMPLE_PASSES[kind]?.fragmentShader) ??
|
|
361
|
+
COPY_SHADER;
|
|
362
|
+
const vertexShader = custom && shader.vertexShader ? shader.vertexShader : QUAD_VERTEX_SHADER;
|
|
363
|
+
const signature = custom
|
|
364
|
+
? `shaderPass|${vertexShader}|${fragmentShader}`
|
|
365
|
+
: `${kind}|${part}`;
|
|
366
|
+
const cached = this.programs.get(signature);
|
|
367
|
+
if (cached)
|
|
368
|
+
return cached.program ? cached : null;
|
|
369
|
+
const entry = this.owner.compile(gl, { vertex: vertexShader, fragment: `${PRECISION}${fragmentShader}` }, signature, `<${kind}>`);
|
|
370
|
+
this.programs.set(signature, entry);
|
|
371
|
+
return entry.program ? entry : null;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Does this context have framebuffer objects? The direct backend exposes
|
|
375
|
+
* whatever `x11-dri` provides, so "the GL has no FBOs" is a real state.
|
|
376
|
+
* Reported once; the scene then draws to the window uncomposed, which is
|
|
377
|
+
* the same picture without the effects.
|
|
378
|
+
*/
|
|
379
|
+
usable(gl) {
|
|
380
|
+
if (this._usable !== undefined)
|
|
381
|
+
return this._usable;
|
|
382
|
+
const missing = FBO_ENTRY_POINTS.filter((name) => typeof gl[name] !== 'function');
|
|
383
|
+
this._usable = missing.length === 0;
|
|
384
|
+
if (!this._usable) {
|
|
385
|
+
this.owner.report('post-unavailable', `<effectComposer>: this GL context is missing ${missing.join(', ')}, ` +
|
|
386
|
+
'so the scene cannot be rendered to a texture and the passes are ' +
|
|
387
|
+
'skipped. Check with `npm ls x11-dri`.', 'GL_POST_UNAVAILABLE');
|
|
388
|
+
}
|
|
389
|
+
return this._usable;
|
|
390
|
+
}
|
|
391
|
+
ensureTargets(gl, width, height) {
|
|
392
|
+
if (this.width !== width || this.height !== height)
|
|
393
|
+
this.release(gl);
|
|
394
|
+
if (this.targets[0] && this.targets[1])
|
|
395
|
+
return this.targets;
|
|
396
|
+
this.width = width;
|
|
397
|
+
this.height = height;
|
|
398
|
+
// only the scene's target needs depth: everything after it is a quad
|
|
399
|
+
// drawn with the depth test off
|
|
400
|
+
this.targets[0] ??= this.createTarget(gl, width, height, { depth: true });
|
|
401
|
+
this.targets[1] ??= this.createTarget(gl, width, height);
|
|
402
|
+
if (this.targets[0] && this.targets[1])
|
|
403
|
+
return this.targets;
|
|
404
|
+
this.release(gl);
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
ensureBloom(gl, width, height) {
|
|
408
|
+
if (this.bloom[0] && this.bloom[1])
|
|
409
|
+
return this.bloom;
|
|
410
|
+
const w = half(width);
|
|
411
|
+
const h = half(height);
|
|
412
|
+
this.bloom[0] ??= this.createTarget(gl, w, h);
|
|
413
|
+
this.bloom[1] ??= this.createTarget(gl, w, h);
|
|
414
|
+
if (this.bloom[0] && this.bloom[1])
|
|
415
|
+
return this.bloom;
|
|
416
|
+
this.releaseTargets(gl, this.bloom);
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
createTarget(gl, width, height, { depth = false } = {}) {
|
|
420
|
+
const texture = gl.createTexture();
|
|
421
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
422
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
423
|
+
// null pixels: the storage is allocated and the contents are whatever
|
|
424
|
+
// the first draw into it writes
|
|
425
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
426
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
427
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
428
|
+
// a surface is almost never a power of two, and ES 2 allows an NPOT
|
|
429
|
+
// texture only with CLAMP_TO_EDGE and no mipmaps
|
|
430
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
431
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
432
|
+
const framebuffer = gl.createFramebuffer();
|
|
433
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
|
|
434
|
+
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
|
|
435
|
+
let depthBuffer = null;
|
|
436
|
+
if (depth) {
|
|
437
|
+
depthBuffer = gl.createRenderbuffer();
|
|
438
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer);
|
|
439
|
+
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);
|
|
440
|
+
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthBuffer);
|
|
441
|
+
}
|
|
442
|
+
const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);
|
|
443
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, 0);
|
|
444
|
+
const target = {
|
|
445
|
+
framebuffer,
|
|
446
|
+
texture,
|
|
447
|
+
depth: depthBuffer,
|
|
448
|
+
width,
|
|
449
|
+
height,
|
|
450
|
+
};
|
|
451
|
+
if (status !== gl.FRAMEBUFFER_COMPLETE) {
|
|
452
|
+
this.owner.report('post-target', `<effectComposer>: a ${width}x${height} render target is not ` +
|
|
453
|
+
`complete (status 0x${(status >>> 0).toString(16)}), so the ` +
|
|
454
|
+
'passes are skipped and the scene draws to the window directly.', 'GL_POST_TARGET_FAILED');
|
|
455
|
+
this.destroyTarget(gl, target);
|
|
456
|
+
return null;
|
|
457
|
+
}
|
|
458
|
+
return target;
|
|
459
|
+
}
|
|
460
|
+
destroyTarget(gl, target) {
|
|
461
|
+
if (!target)
|
|
462
|
+
return;
|
|
463
|
+
gl.deleteFramebuffer(target.framebuffer);
|
|
464
|
+
gl.deleteTexture(target.texture);
|
|
465
|
+
if (target.depth)
|
|
466
|
+
gl.deleteRenderbuffer(target.depth);
|
|
467
|
+
}
|
|
468
|
+
releaseTargets(gl, list) {
|
|
469
|
+
for (let i = 0; i < list.length; i++) {
|
|
470
|
+
this.destroyTarget(gl, list[i]);
|
|
471
|
+
list[i] = null;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/** Every render target, on a resize or on the way out. */
|
|
475
|
+
release(gl) {
|
|
476
|
+
if (!gl) {
|
|
477
|
+
this.targets = [null, null];
|
|
478
|
+
this.bloom = [null, null];
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
this.releaseTargets(gl, this.targets);
|
|
482
|
+
this.releaseTargets(gl, this.bloom);
|
|
483
|
+
}
|
|
484
|
+
dispose(gl) {
|
|
485
|
+
this.release(gl);
|
|
486
|
+
if (gl) {
|
|
487
|
+
for (const { program } of this.programs.values()) {
|
|
488
|
+
if (program)
|
|
489
|
+
gl.deleteProgram(program);
|
|
490
|
+
}
|
|
491
|
+
if (this.quad)
|
|
492
|
+
gl.deleteBuffer(this.quad);
|
|
493
|
+
}
|
|
494
|
+
this.programs.clear();
|
|
495
|
+
this.quad = null;
|
|
496
|
+
this.passes = null;
|
|
497
|
+
this.width = 0;
|
|
498
|
+
this.height = 0;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/** The stand-in pass `copy` compiles its program under. */
|
|
502
|
+
const COPY_PASS = { kind: 'copy' };
|
|
503
|
+
//# sourceMappingURL=postprocess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postprocess.js","sourceRoot":"","sources":["../../src/three/postprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Vec3Tuple } from './math.js';
|
|
2
|
+
import type { Mesh, Object3D } from './objects.js';
|
|
3
|
+
import type { FrameCamera } from './renderer-indirect.js';
|
|
4
|
+
/** The world-space ray through a pixel of the surface. */
|
|
5
|
+
export declare function rayThrough(x: number, y: number, camera: FrameCamera): {
|
|
6
|
+
origin: Vec3Tuple;
|
|
7
|
+
direction: Vec3Tuple;
|
|
8
|
+
} | null;
|
|
9
|
+
export declare const hasPointerHandlers: (object: Object3D) => boolean;
|
|
10
|
+
/** Does anything in this subtree listen for pointer events? */
|
|
11
|
+
export declare function sceneWantsPointer(nodes: Object3D[]): boolean;
|
|
12
|
+
export interface RayHit {
|
|
13
|
+
object: Mesh;
|
|
14
|
+
distance: number;
|
|
15
|
+
point: Vec3Tuple;
|
|
16
|
+
face: number;
|
|
17
|
+
uv: [number, number];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Intersect the scene with the ray through pixel (x, y). World matrices come
|
|
21
|
+
* from the last rendered frame. Nearest first.
|
|
22
|
+
*/
|
|
23
|
+
export declare function raycast(roots: Object3D[], x: number, y: number, camera: FrameCamera): RayHit[];
|
|
24
|
+
//# sourceMappingURL=raycast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raycast.d.ts","sourceRoot":"","sources":["../../src/three/raycast.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,SAAS,EAAE,MAAM,WAAW,CAAC;AAOjD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA6C1D,0DAA0D;AAC1D,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAepD;AAED,eAAO,MAAM,kBAAkB,WAAY,QAAQ,KAAG,OACmB,CAAC;AAE1E,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAO5D;AA+BD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,EAAE,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,GAClB,MAAM,EAAE,CA4CV"}
|