This package contains tools to aid development with nvk
Contains pre-built binaries of glslangValidator
.
Examples:
import { GLSL } from "nvk-essentials";
Returns a string of the equivalent glslangValidator -v
Examples:
let { version } = GLSL;
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
}
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.compile({
source: fs.readFileSync(`./shaders/object.vert`),
extension: TypeOfExtension.vert
});
Synchronous variant of GLSL.toSPIRV
with an equal function signature.
Examples:
let {output, error} = GLSL.compileSync({
source: fs.readFileSync(`./shaders/object.frag`),
extension: `frag`
});
This contains some helpful classes to let you easily transfer your data from/to array buffers.
Examples:
import { Data } from "nvk-essentials-js"
const data = new Data.DataController({
test: [23, 43, 435], //By default every number gets converted to Float32Array
test2: new Data.DataModel([2, 2, 2], Data.TypeOfData.Uint8) //Can specify the type using data model
});
const myAwesomeArrayBuffer = data.getArrayBuffer();
data.setArrayBuffer(myAwesomeArrayBuffer);
data.setData({
test: [23, 234, 34],
test2: new Data.DataModel([2, 2, 2], Data.TypeOfData.Uint8)
});
const myData = data.getData();