tapflow
Self-hosted iOS & Android simulator streaming for the whole team
Write shaders using TypeScript syntax. TypeShade compiles to WGSL for WebGPU and GLSL ES 3.00 for WebGL2, with GPU types, editor support and Vite integration.
Developer toolsTypeScript · JavaScriptGitHub @typeshadeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗TypeScript for shaders.
This repository preserves the website's earlier source and history. Active website development, issues, and pull requests belong in typeshade/web. Do not add new site features or maintenance changes here.
TypeShade lets you author shader programs in TypeScript with a TypeShade-specific language model. A source file opts into that model with the file-level directive "use typeshade".
"use typeshade";
export function fragment(uv: vec2): vec4 {
return vec4(uv, 0.0, 1.0);
}
The compiler lowers the source to an intermediate representation and emits shader source for the host. The current targets are WGSL for WebGPU and GLSL ES 3.00 for WebGL2. The compiled program can run through typeshade/runtime on WebGPU and WebGL2. Supported @compute entries also run on the WebGL2 tier through GLSL ES 3.00 passes.
Shader authoring should keep the parts developers already know from TypeScript: types, editor feedback, modules, and familiar control flow, while making GPU-specific rules explicit.
TypeShade is designed around that boundary:
"use typeshade" marks the file as a shader file instead of ordinary application code. The file compiles with the shader files it imports as one program.typeshade/runtime runs on WebGPU, WebGL2 or the CPU.Start with the documentation site:
The important concept to understand first is "use typeshade". It is the boundary between ordinary TypeScript and TypeShade's shader authoring semantics.
The current website source is maintained in typeshade/web. Use that repository for documentation, examples, site code, and deployment changes.
This repository keeps its existing source tree and Git history as a historical snapshot. Its site build, compiler pinning, example publishing, and gallery setup workflows are retired here. The site is no longer developed or deployed from this repository. See docs/repository-migration.md for the migration record and the remaining cutover boundaries.
The old source is available for history and comparison. Its development instructions and automation describe the previous site implementation and are not instructions for current work.
TypeShade is pre-release. The public authoring model on main is file-level "use typeshade"; package and compiler details may change while the language surface matures.
TypeShade is released under the Apache License 2.0, and was released under the MIT License before that. The site states the license of the compiler commit it is pinned to, read from that commit's package.json. This repository is licensed under the Apache License 2.0 as well: see LICENSE and NOTICE.
The English and Korean /benchmarks/ pages run versioned WebGPU workloads in a browser
Worker. One run compares both exact compiler/runtime builds across every experiment and
correctness check. Four section charts show timing and buffer-memory changes. Visitors inspect
results from a visitor-initiated run. A notice below Run explains automatic reporting. The
site Worker stores authorized records privately in D1. See docs/benchmarks.md
for retention, migration and maintainer commands, and
docs/benchmark-unification.md for the unified report, and
docs/benchmark-projection.md for the private input projection cohort.
bun run check:benchmark-catalog checks the retained original fixtures against their compiler.
bun run check:regression-catalog checks the unified workload against both exact builds.
After bun run build, bun run check:benchmarks runs the instrument, consent flow and local
D1 collector in Chromium. Set PLAYWRIGHT_CHROMIUM when Chromium is installed outside Playwright.