Table of Contents

Class DxcShaderCompiler

Namespace
ShadowDusk.HLSL.Dxc
Assembly
ShadowDusk.HLSL.dll

Compiles preprocessed HLSL to SPIR-V or DXBC via Vortice.Dxc. NOT thread-safe: do not share across concurrent compilations. Create one instance per parallel worker or serialize via a lock/channel.

public sealed class DxcShaderCompiler : IDxcShaderCompiler, IDisposable
Inheritance
DxcShaderCompiler
Implements
Inherited Members

Constructors

DxcShaderCompiler()

Creates the DXC compiler instance, loading dxil.dll for DXIL validation on Windows (a no-op on other platforms).

public DxcShaderCompiler()

Methods

Compile(DxcCompileRequest, CancellationToken)

Synchronous counterpart of CompileAsync(DxcCompileRequest, CancellationToken): compiles the request on the calling thread. The DXC compile itself is synchronous work on every host — CompileAsync(DxcCompileRequest, CancellationToken) is only a thread-offload (desktop) or one-time-module-load (WASM) shell over this — so both entry points produce identical bytes by construction. On the browser/WASM host the DXC module must already be loaded (IShaderCompiler.InitializeAsync); otherwise a clear ShaderError (SD1903) is returned. Never blocks on a task internally.

public Result<PlatformBlob, ShaderError> Compile(DxcCompileRequest request, CancellationToken cancellationToken = default)

Parameters

request DxcCompileRequest

The compile request: source, entry point, profile, and flags.

cancellationToken CancellationToken

Token checked before the compile starts.

Returns

Result<PlatformBlob, ShaderError>

The compiled PlatformBlob on success, or a ShaderError carrying the DXC diagnostics on failure.

CompileAsync(DxcCompileRequest, CancellationToken)

Compiles a preprocessed HLSL request to a SPIR-V or DXBC blob via DXC.

public Task<Result<PlatformBlob, ShaderError>> CompileAsync(DxcCompileRequest request, CancellationToken cancellationToken = default)

Parameters

request DxcCompileRequest

The compile request: source, entry point, profile, and flags.

cancellationToken CancellationToken

A cancellation token.

Returns

Task<Result<PlatformBlob, ShaderError>>

The compiled PlatformBlob on success, or a ShaderError carrying the DXC diagnostics on failure.

Dispose()

Releases the native DXC compiler instance.

public void Dispose()

Preprocess(DxcPreprocessRequest, CancellationToken)

Preprocess-only (-P): expand #includes, #defines and conditional directives into a single flat HLSL text WITHOUT compiling — no entry point, stage, or profile. Used by the zero-technique fallback in the pipeline to macro-expand the stock-effect TECHNIQUE(...) declarations into literal technique blocks the FX pre-parser can read. Synchronous (the DXC preprocessor is in-process work on every host).

public Result<string, ShaderError> Preprocess(DxcPreprocessRequest request, CancellationToken cancellationToken = default)

Parameters

request DxcPreprocessRequest

The preprocess request: source, file name, and macro defines.

cancellationToken CancellationToken

Token checked before preprocessing starts.

Returns

Result<string, ShaderError>

The expanded HLSL text on success, or a ShaderError carrying the DXC diagnostics on failure.