Drilla engine for HPC and visualization
requirements:
- Node.js and pnpm
- dotnet 9.0
- slangc need to be installed and added to PATH, can be installed via slang or via Vulkan SDK
-
Open
Drilla.sln, runDualDrill.Serverproject to start a backend server -
optional In
DualDrill.JSdirectory, runnode .\esbuild.mjs --watchso ts code gets rebuilt automaticall on change -
Open browser, visit
https://localhost:7117/desktopfor basic rendering. -
visit
https://localhost:7117/ilslfor basic C# IL to shader translation development -
optional add
DUALDRILL_DATA_ROOTto 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
CLSL is a C# embedded language which is designed to be compiled to multiple shader language running on GPU and SIMD accelerated CPU.
It is designed to be a subset of C# language, with custom attributes to extend its semantic for shaders.
It it designed to be compiled into shader language like WGSL, SPIR-V and CUDA, and also can be compiled into SIMD accelerated CPU code like Unity's Burst Compiler (with help of LLVM's auto vectorization).
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
- LLVM backend (for vectorization) and ideally use CIL -> LLVM auto vectorization -> CIL (intrinsics)
- CUDA backend
Start Clean Legacy Code and Use New SSA based IR