LWJGL / lwjgl3

LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan, bgfx), audio (OpenAL, Opus), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR, OpenXR) applications.
https://www.lwjgl.org
BSD 3-Clause "New" or "Revised" License
4.67k stars 627 forks source link

Slang Bindings #572

Open enveeed opened 4 years ago

enveeed commented 4 years ago

https://github.com/shader-slang/slang

I'd like to request LWJGL bindings for the C API of slang.

Here's an excerpt from their repository:

Slang is a shading language that extends HLSL with new capabilities for building modular, extensible, and high-performance real-time shading systems. This repository provides a command-line compiler and a C/C++ API for loading, compiling, and reflecting shader code in Slang or plain HLSL.

The extensions provided by the Slang language make it easier for you to write high-performance shader codebases with a maintainable and modular structure.

The interesting part for LWGL users here would be the GLSL/SPIR-V output for Vulkan, similar to what is currently possible by compiling shaders using the shaderc API bindings, but with slang it gets significantly easier and more intuitive to write and manage shaders for a project.

Here is a simple example on what can be done with slang and its API.

I know the project is in an early state but I'm personally pretty blown away how much it can do already from what I've tried and I'd love to see it as a building block in LWJGL.

httpdigest commented 3 years ago

I second that. Slang is growing fast and actively, and is probably already worth a replacement (or at least an alternative) for the toolchain provided by the Shaderc binding.

tlf30 commented 2 years ago

I am very interested in this. This would be great for working with applications that have multiple rendering backends. I am currently doing a lot of shaderx magic, which can sometimes lead to unexpected results due to a couple outstanding bugs and implementation details (it is getting a lot better though).