nvk-essentials

0.1.2 • Public • Published

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(100);
}

Package Sidebar

Install

npm i nvk-essentials

Weekly Downloads

2

Version

0.1.2

License

MIT

Unpacked Size

1.12 MB

Total Files

27

Last publish

Collaborators

  • maierfelix