nvk-essentials-js
v0.1.2
Published
Essential development tools for nvk
Downloads
63
Maintainers
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.compile
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
});
GLSL.compileSyncync
Synchronous variant of GLSL.toSPIRV
with an equal function signature.
Examples:
let {output, error} = GLSL.compileSync({
source: fs.readFileSync(`./shaders/object.frag`),
extension: `frag`
});
Array Buffer Helper
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();