nvk-essentials
v0.1.2
Published
Essential development tools for nvk
Downloads
28
Readme
nvk-essentials
This package contains tools to aid development with nvk
Interface:
GLSL:
Contains pre-built binaries of glslangValidator
.
Examples:
import { GLSL } from "nvk-essentials";
GLSL.version
Returns a string of the equivalent glslangValidator -v
Examples:
let {version} = GLSL;
GLSL.toSPIRV
Returns the binary SPIR-V representation of the passed in GLSL source. This function expects an Object as it's first parameter in the following format:
{
source: <Buffer>,
extension: <String>,
*includeDirectories: <String[]>
}
Available extensions are:
.vert
for a vertex shader.tesc
for a tessellation control shader.tese
for a tessellation evaluation shader.geom
for a geometry shader.frag
for a fragment shader.comp
for a compute shader.mesh
for a mesh shader.task
for a task shader.rgen
for a ray generation shader.rint
for a ray intersection shader.rahit
for a ray any hit shader.rchit
for a ray closest hit shader.rmiss
for a ray miss shader.rcall
for a ray callable shader.glsl
for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes.hlsl
for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes
Examples:
let {output, error} = await GLSL.toSPIRV({
source: fs.readFileSync(`./shaders/object.vert`),
extension: `vert`
});
GLSL.toSPIRVSync
Synchronous variant of GLSL.toSPIRV
with an equal function signature.
Examples:
let {output, error} = GLSL.toSPIRVSync({
source: fs.readFileSync(`./shaders/object.frag`),
extension: `frag`
});
includeDirectories
When having include directives in a shader, similar to C, an include Path has to be specified.
main.js
let {output, error} = GLSL.toSPIRVSync({
source: fs.readFileSync(`./shaders/main.vert`),
extension: `vert`,
includeDirectories: [`./shaders`]
});
shaders/main.vert
#version 460
#extension GL_GOOGLE_include_directive : enable
#include "utils.glsl"
void main() {
gl_Position = vec4(utilityColorFunction(), 1.0);
}
shaders/utils.glsl
vec3 utilityColorFunction() {
return vec3(1, 0, 0);
}