nvk-essentials
v0.1.2
Published
Essential development tools for nvk
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:
.vertfor a vertex shader.tescfor a tessellation control shader.tesefor a tessellation evaluation shader.geomfor a geometry shader.fragfor a fragment shader.compfor a compute shader.meshfor a mesh shader.taskfor a task shader.rgenfor a ray generation shader.rintfor a ray intersection shader.rahitfor a ray any hit shader.rchitfor a ray closest hit shader.rmissfor a ray miss shader.rcallfor a ray callable shader.glslfor .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes.hlslfor .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);
}