Drilla engine for HPC and visualization
requirements:
- Node.js and pnpm
- dotnet 8.0
- Deprecated Add
DUALDRILLFFMPEGPATH
environment variable, value should bebin
folder of ffmpeg (with shared libraries) directory. On windows, it could be installed usingwinget install "FFmpeg (Shared)" --version "6.1.1"
-
Open
Drilla.sln
, runDualDrill.Server
project to start a backend server -
optional In
DualDrill.JS
directory, runnode .\esbuild.mjs --watch
so ts code gets rebuilt automaticall on change -
Open browser, visit
https://localhost:7117/desktop
for basic rendering. -
visit
https://localhost:7117/ilsl
for basic C# IL to shader translation development -
optional add
DUALDRILL_DATA_ROOT
to environment variable for mesh/texture data
NOTE when runtime identifier is required to build/run, i.e. we need use x64
runtime identifier, Any CPU
will not work
ILSL is a C# embeedded language which could (planning) be compiled to multiple shader language runnning on GPU.
ILSL code is a subset of valid C# code, with custom attribute to extend its semantic for shaders.
ILSL's compiler currently support runtime compilation of dotnet's bytecode CIL(MSIL) to WGSL source text.
Features:
- WGSL backend
- control flow: if/loop
- function scope variable declaration
- priitive arithmetic/bitwise/logical/relational operation
- basic primitive type mapping
- vector type mapping
- some vector based intrinsic functions
- matrix type
- array type
- texture type/sampler type
- read/write buffers
- auto detect custom helper functions without additional attributes
- shader stage attributes
- group/binding attributes
- custom struct declaration
- shader relfection for uniform/vertex buffer layouts
- C# getter/setters
- CUDA backend