felipeagc / tinyshader

Small, easy-to-integrate shader compiler written in C99. Compiles HLSL to SPIR-V

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Things left to be implemented

felipeagc opened this issue · comments

  • Compiler API
    • Reflection API
    • #include paths
    • Passing defines to the preprocessor
  • Preprocessor:
    • #ifdef
    • #ifndef
    • #else
    • #endif
    • #define
    • #undef
    • #include
    • #error
    • #if
    • #elif
    • function-like #define
  • Vulkan-specifics:
    • Push constants
    • Combined image & sampler
    • Specialization constants
  • Language features:
    • Function overloading
    • Vector casting: float2(uint2(1, 2))
    • Parse register decorations
    • Static variables
    • Arrays
    • Typedefs
    • Array textures
    • Globals buffer for global variables
    • printf (GL_EXT_debug_printf)
    • Entry points
      • Support struct entry point parameters
      • Support entry point return values & decorations
    • column_major/row_major matrices
    • Builtin types
      • Texture*
        • Sample()
        • SampleLevel()
        • GetDimensions()
        • Load()
      • RWTexture*
        • Operator[]
        • GetDimensions()
        • Load()
      • StructuredBuffers/RWStructuredBuffer
        • Operator[]
        • GetDimensions
        • Load
      • Buffer/RWBuffer
      • TextureBuffer
      • ByteAddressBuffer/RWByteAddressBuffer
      • AppendStructuredBuffer
      • ConsumeStructuredBuffer
      • SamplerComparisonState
      • cbuffer
      • tbuffer
    • [[vk::counter_binding(Z)]] for associated counters