diff --git a/include/ShaderAST/Type/ImageConfiguration.hpp b/include/ShaderAST/Type/ImageConfiguration.hpp index 0424e5df..c868d878 100644 --- a/include/ShaderAST/Type/ImageConfiguration.hpp +++ b/include/ShaderAST/Type/ImageConfiguration.hpp @@ -1543,415 +1543,415 @@ namespace ast::type #define WUImg2DMSR32 ast::type::ImageFormat::eR32u, WImg2DMS #define WUImg2DMSArrayR32 ast::type::ImageFormat::eR32u, WImg2DMSArray -#define RWimg1D ast::type::AccessKind::eReadWrite, Img1DBase -#define RWimg2D ast::type::AccessKind::eReadWrite, Img2DBase -#define RWimg3D ast::type::AccessKind::eReadWrite, Img3DBase -#define RWimgCube ast::type::AccessKind::eReadWrite, ImgCubeBase -#define RWimgBuffer ast::type::AccessKind::eReadWrite, ImgBufferBase -#define RWimg1DArray ast::type::AccessKind::eReadWrite, Img1DArrayBase -#define RWimg2DArray ast::type::AccessKind::eReadWrite, Img2DArrayBase -#define RWimgCubeArray ast::type::AccessKind::eReadWrite, ImgCubeArrayBase -#define RWimg2DMS ast::type::AccessKind::eReadWrite, Img2DMSBase -#define RWimg2DMSArray ast::type::AccessKind::eReadWrite, Img2DMSArrayBase - -#define RWFImg1DRgba16 ast::type::ImageFormat::eRgba16f, RWimg1D -#define RWFImg2DRgba16 ast::type::ImageFormat::eRgba16f, RWimg2D -#define RWFImg3DRgba16 ast::type::ImageFormat::eRgba16f, RWimg3D -#define RWFImgCubeRgba16 ast::type::ImageFormat::eRgba16f, RWimgCube -#define RWFImgBufferRgba16 ast::type::ImageFormat::eRgba16f, RWimgBuffer -#define RWFImg1DArrayRgba16 ast::type::ImageFormat::eRgba16f, RWimg1DArray -#define RWFImg2DArrayRgba16 ast::type::ImageFormat::eRgba16f, RWimg2DArray -#define RWFImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16f, RWimgCubeArray -#define RWFImg2DMSRgba16 ast::type::ImageFormat::eRgba16f, RWimg2DMS -#define RWFImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16f, RWimg2DMSArray -#define RWFImg1DRgba32 ast::type::ImageFormat::eRgba32f, RWimg1D -#define RWFImg2DRgba32 ast::type::ImageFormat::eRgba32f, RWimg2D -#define RWFImg3DRgba32 ast::type::ImageFormat::eRgba32f, RWimg3D -#define RWFImgCubeRgba32 ast::type::ImageFormat::eRgba32f, RWimgCube -#define RWFImgBufferRgba32 ast::type::ImageFormat::eRgba32f, RWimgBuffer -#define RWFImg1DArrayRgba32 ast::type::ImageFormat::eRgba32f, RWimg1DArray -#define RWFImg2DArrayRgba32 ast::type::ImageFormat::eRgba32f, RWimg2DArray -#define RWFImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32f, RWimgCubeArray -#define RWFImg2DMSRgba32 ast::type::ImageFormat::eRgba32f, RWimg2DMS -#define RWFImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32f, RWimg2DMSArray -#define RWFImg1DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg1D -#define RWFImg2DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg2D -#define RWFImg3DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg3D -#define RWFImgCubeRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimgCube -#define RWFImgBufferRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimgBuffer -#define RWFImg1DArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg1DArray -#define RWFImg2DArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg2DArray -#define RWFImgCubeArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimgCubeArray -#define RWFImg2DMSRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg2DMS -#define RWFImg2DMSArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWimg2DMSArray -#define RWFImg1DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg1D -#define RWFImg2DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg2D -#define RWFImg3DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg3D -#define RWFImgCubeRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimgCube -#define RWFImgBufferRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimgBuffer -#define RWFImg1DArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg1DArray -#define RWFImg2DArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg2DArray -#define RWFImgCubeArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimgCubeArray -#define RWFImg2DMSRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg2DMS -#define RWFImg2DMSArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWimg2DMSArray -#define RWFImg1DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg1D -#define RWFImg2DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg2D -#define RWFImg3DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg3D -#define RWFImgCubeRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimgCube -#define RWFImgBufferRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimgBuffer -#define RWFImg1DArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg1DArray -#define RWFImg2DArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg2DArray -#define RWFImgCubeArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimgCubeArray -#define RWFImg2DMSRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg2DMS -#define RWFImg2DMSArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWimg2DMSArray -#define RWFImg1DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg1D -#define RWFImg2DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg2D -#define RWFImg3DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg3D -#define RWFImgCubeRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimgCube -#define RWFImgBufferRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimgBuffer -#define RWFImg1DArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg1DArray -#define RWFImg2DArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg2DArray -#define RWFImgCubeArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimgCubeArray -#define RWFImg2DMSRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg2DMS -#define RWFImg2DMSArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWimg2DMSArray -#define RWFImg1DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg1D -#define RWFImg2DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg2D -#define RWFImg3DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg3D -#define RWFImgCubeR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimgCube -#define RWFImgBufferR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimgBuffer -#define RWFImg1DArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg1DArray -#define RWFImg2DArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg2DArray -#define RWFImgCubeArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimgCubeArray -#define RWFImg2DMSR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg2DMS -#define RWFImg2DMSArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWimg2DMSArray -#define RWFImg1DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg1D -#define RWFImg2DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg2D -#define RWFImg3DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg3D -#define RWFImgCubeRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimgCube -#define RWFImgBufferRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimgBuffer -#define RWFImg1DArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg1DArray -#define RWFImg2DArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg2DArray -#define RWFImgCubeArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimgCubeArray -#define RWFImg2DMSRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg2DMS -#define RWFImg2DMSArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWimg2DMSArray - -#define RWIImg1DRgba8 ast::type::ImageFormat::eRgba8i, RWimg1D -#define RWIImg2DRgba8 ast::type::ImageFormat::eRgba8i, RWimg2D -#define RWIImg3DRgba8 ast::type::ImageFormat::eRgba8i, RWimg3D -#define RWIImgCubeRgba8 ast::type::ImageFormat::eRgba8i, RWimgCube -#define RWIImgBufferRgba8 ast::type::ImageFormat::eRgba8i, RWimgBuffer -#define RWIImg1DArrayRgba8 ast::type::ImageFormat::eRgba8i, RWimg1DArray -#define RWIImg2DArrayRgba8 ast::type::ImageFormat::eRgba8i, RWimg2DArray -#define RWIImgCubeArrayRgba8 ast::type::ImageFormat::eRgba8i, RWimgCubeArray -#define RWIImg2DMSRgba8 ast::type::ImageFormat::eRgba8i, RWimg2DMS -#define RWIImg2DMSArrayRgba8 ast::type::ImageFormat::eRgba8i, RWimg2DMSArray -#define RWIImg1DRgba16 ast::type::ImageFormat::eRgba16i, RWimg1D -#define RWIImg2DRgba16 ast::type::ImageFormat::eRgba16i, RWimg2D -#define RWIImg3DRgba16 ast::type::ImageFormat::eRgba16i, RWimg3D -#define RWIImgCubeRgba16 ast::type::ImageFormat::eRgba16i, RWimgCube -#define RWIImgBufferRgba16 ast::type::ImageFormat::eRgba16i, RWimgBuffer -#define RWIImg1DArrayRgba16 ast::type::ImageFormat::eRgba16i, RWimg1DArray -#define RWIImg2DArrayRgba16 ast::type::ImageFormat::eRgba16i, RWimg2DArray -#define RWIImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16i, RWimgCubeArray -#define RWIImg2DMSRgba16 ast::type::ImageFormat::eRgba16i, RWimg2DMS -#define RWIImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16i, RWimg2DMSArray -#define RWIImg1DRgba32 ast::type::ImageFormat::eRgba32i, RWimg1D -#define RWIImg2DRgba32 ast::type::ImageFormat::eRgba32i, RWimg2D -#define RWIImg3DRgba32 ast::type::ImageFormat::eRgba32i, RWimg3D -#define RWIImgCubeRgba32 ast::type::ImageFormat::eRgba32i, RWimgCube -#define RWIImgBufferRgba32 ast::type::ImageFormat::eRgba32i, RWimgBuffer -#define RWIImg1DArrayRgba32 ast::type::ImageFormat::eRgba32i, RWimg1DArray -#define RWIImg2DArrayRgba32 ast::type::ImageFormat::eRgba32i, RWimg2DArray -#define RWIImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32i, RWimgCubeArray -#define RWIImg2DMSRgba32 ast::type::ImageFormat::eRgba32i, RWimg2DMS -#define RWIImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32i, RWimg2DMSArray - -#define RWUImg1DRgba8 ast::type::ImageFormat::eRgba8u, RWimg1D -#define RWUImg2DRgba8 ast::type::ImageFormat::eRgba8u, RWimg2D -#define RWUImg3DRgba8 ast::type::ImageFormat::eRgba8u, RWimg3D -#define RWUImgCubeRgba8 ast::type::ImageFormat::eRgba8u, RWimgCube -#define RWUImgBufferRgba8 ast::type::ImageFormat::eRgba8u, RWimgBuffer -#define RWUImg1DArrayRgba8 ast::type::ImageFormat::eRgba8u, RWimg1DArray -#define RWUImg2DArrayRgba8 ast::type::ImageFormat::eRgba8u, RWimg2DArray -#define RWUImgCubeArrayRgba8 ast::type::ImageFormat::eRgba8u, RWimgCubeArray -#define RWUImg2DMSRgba8 ast::type::ImageFormat::eRgba8u, RWimg2DMS -#define RWUImg2DMSArrayRgba8 ast::type::ImageFormat::eRgba8u, RWimg2DMSArray -#define RWUImg1DRgba16 ast::type::ImageFormat::eRgba16u, RWimg1D -#define RWUImg2DRgba16 ast::type::ImageFormat::eRgba16u, RWimg2D -#define RWUImg3DRgba16 ast::type::ImageFormat::eRgba16u, RWimg3D -#define RWUImgCubeRgba16 ast::type::ImageFormat::eRgba16u, RWimgCube -#define RWUImgBufferRgba16 ast::type::ImageFormat::eRgba16u, RWimgBuffer -#define RWUImg1DArrayRgba16 ast::type::ImageFormat::eRgba16u, RWimg1DArray -#define RWUImg2DArrayRgba16 ast::type::ImageFormat::eRgba16u, RWimg2DArray -#define RWUImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16u, RWimgCubeArray -#define RWUImg2DMSRgba16 ast::type::ImageFormat::eRgba16u, RWimg2DMS -#define RWUImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16u, RWimg2DMSArray -#define RWUImg1DRgba32 ast::type::ImageFormat::eRgba32u, RWimg1D -#define RWUImg2DRgba32 ast::type::ImageFormat::eRgba32u, RWimg2D -#define RWUImg3DRgba32 ast::type::ImageFormat::eRgba32u, RWimg3D -#define RWUImgCubeRgba32 ast::type::ImageFormat::eRgba32u, RWimgCube -#define RWUImgBufferRgba32 ast::type::ImageFormat::eRgba32u, RWimgBuffer -#define RWUImg1DArrayRgba32 ast::type::ImageFormat::eRgba32u, RWimg1DArray -#define RWUImg2DArrayRgba32 ast::type::ImageFormat::eRgba32u, RWimg2DArray -#define RWUImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32u, RWimgCubeArray -#define RWUImg2DMSRgba32 ast::type::ImageFormat::eRgba32u, RWimg2DMS -#define RWUImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32u, RWimg2DMSArray -#define RWUImg1DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg1D -#define RWUImg2DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg2D -#define RWUImg3DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg3D -#define RWUImgCubeRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimgCube -#define RWUImgBufferRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimgBuffer -#define RWUImg1DArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg1DArray -#define RWUImg2DArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg2DArray -#define RWUImgCubeArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimgCubeArray -#define RWUImg2DMSRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg2DMS -#define RWUImg2DMSArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWimg2DMSArray - -#define RWFImg1DRg16 ast::type::ImageFormat::eRg16f, RWimg1D -#define RWFImg2DRg16 ast::type::ImageFormat::eRg16f, RWimg2D -#define RWFImg3DRg16 ast::type::ImageFormat::eRg16f, RWimg3D -#define RWFImgCubeRg16 ast::type::ImageFormat::eRg16f, RWimgCube -#define RWFImgBufferRg16 ast::type::ImageFormat::eRg16f, RWimgBuffer -#define RWFImg1DArrayRg16 ast::type::ImageFormat::eRg16f, RWimg1DArray -#define RWFImg2DArrayRg16 ast::type::ImageFormat::eRg16f, RWimg2DArray -#define RWFImgCubeArrayRg16 ast::type::ImageFormat::eRg16f, RWimgCubeArray -#define RWFImg2DMSRg16 ast::type::ImageFormat::eRg16f, RWimg2DMS -#define RWFImg2DMSArrayRg16 ast::type::ImageFormat::eRg16f, RWimg2DMSArray -#define RWFImg1DRg32 ast::type::ImageFormat::eRg32f, RWimg1D -#define RWFImg2DRg32 ast::type::ImageFormat::eRg32f, RWimg2D -#define RWFImg3DRg32 ast::type::ImageFormat::eRg32f, RWimg3D -#define RWFImgCubeRg32 ast::type::ImageFormat::eRg32f, RWimgCube -#define RWFImgBufferRg32 ast::type::ImageFormat::eRg32f, RWimgBuffer -#define RWFImg1DArrayRg32 ast::type::ImageFormat::eRg32f, RWimg1DArray -#define RWFImg2DArrayRg32 ast::type::ImageFormat::eRg32f, RWimg2DArray -#define RWFImgCubeArrayRg32 ast::type::ImageFormat::eRg32f, RWimgCubeArray -#define RWFImg2DMSRg32 ast::type::ImageFormat::eRg32f, RWimg2DMS -#define RWFImg2DMSArrayRg32 ast::type::ImageFormat::eRg32f, RWimg2DMSArray -#define RWFImg1DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg1D -#define RWFImg2DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg2D -#define RWFImg3DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg3D -#define RWFImgCubeRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimgCube -#define RWFImgBufferRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimgBuffer -#define RWFImg1DArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg1DArray -#define RWFImg2DArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg2DArray -#define RWFImgCubeArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimgCubeArray -#define RWFImg2DMSRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg2DMS -#define RWFImg2DMSArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWimg2DMSArray -#define RWFImg1DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg1D -#define RWFImg2DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg2D -#define RWFImg3DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg3D -#define RWFImgCubeRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimgCube -#define RWFImgBufferRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimgBuffer -#define RWFImg1DArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg1DArray -#define RWFImg2DArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg2DArray -#define RWFImgCubeArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimgCubeArray -#define RWFImg2DMSRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg2DMS -#define RWFImg2DMSArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWimg2DMSArray -#define RWFImg1DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg1D -#define RWFImg2DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg2D -#define RWFImg3DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg3D -#define RWFImgCubeRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimgCube -#define RWFImgBufferRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimgBuffer -#define RWFImg1DArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg1DArray -#define RWFImg2DArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg2DArray -#define RWFImgCubeArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimgCubeArray -#define RWFImg2DMSRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg2DMS -#define RWFImg2DMSArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWimg2DMSArray -#define RWFImg1DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg1D -#define RWFImg2DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg2D -#define RWFImg3DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg3D -#define RWFImgCubeRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimgCube -#define RWFImgBufferRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimgBuffer -#define RWFImg1DArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg1DArray -#define RWFImg2DArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg2DArray -#define RWFImgCubeArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimgCubeArray -#define RWFImg2DMSRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg2DMS -#define RWFImg2DMSArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWimg2DMSArray - -#define RWIImg1DRg8 ast::type::ImageFormat::eRg8i, RWimg1D -#define RWIImg2DRg8 ast::type::ImageFormat::eRg8i, RWimg2D -#define RWIImg3DRg8 ast::type::ImageFormat::eRg8i, RWimg3D -#define RWIImgCubeRg8 ast::type::ImageFormat::eRg8i, RWimgCube -#define RWIImgBufferRg8 ast::type::ImageFormat::eRg8i, RWimgBuffer -#define RWIImg1DArrayRg8 ast::type::ImageFormat::eRg8i, RWimg1DArray -#define RWIImg2DArrayRg8 ast::type::ImageFormat::eRg8i, RWimg2DArray -#define RWIImgCubeArrayRg8 ast::type::ImageFormat::eRg8i, RWimgCubeArray -#define RWIImg2DMSRg8 ast::type::ImageFormat::eRg8i, RWimg2DMS -#define RWIImg2DMSArrayRg8 ast::type::ImageFormat::eRg8i, RWimg2DMSArray -#define RWIImg1DRg16 ast::type::ImageFormat::eRg16i, RWimg1D -#define RWIImg2DRg16 ast::type::ImageFormat::eRg16i, RWimg2D -#define RWIImg3DRg16 ast::type::ImageFormat::eRg16i, RWimg3D -#define RWIImgCubeRg16 ast::type::ImageFormat::eRg16i, RWimgCube -#define RWIImgBufferRg16 ast::type::ImageFormat::eRg16i, RWimgBuffer -#define RWIImg1DArrayRg16 ast::type::ImageFormat::eRg16i, RWimg1DArray -#define RWIImg2DArrayRg16 ast::type::ImageFormat::eRg16i, RWimg2DArray -#define RWIImgCubeArrayRg16 ast::type::ImageFormat::eRg16i, RWimgCubeArray -#define RWIImg2DMSRg16 ast::type::ImageFormat::eRg16i, RWimg2DMS -#define RWIImg2DMSArrayRg16 ast::type::ImageFormat::eRg16i, RWimg2DMSArray -#define RWIImg1DRg32 ast::type::ImageFormat::eRg32i, RWimg1D -#define RWIImg2DRg32 ast::type::ImageFormat::eRg32i, RWimg2D -#define RWIImg3DRg32 ast::type::ImageFormat::eRg32i, RWimg3D -#define RWIImgCubeRg32 ast::type::ImageFormat::eRg32i, RWimgCube -#define RWIImgBufferRg32 ast::type::ImageFormat::eRg32i, RWimgBuffer -#define RWIImg1DArrayRg32 ast::type::ImageFormat::eRg32i, RWimg1DArray -#define RWIImg2DArrayRg32 ast::type::ImageFormat::eRg32i, RWimg2DArray -#define RWIImgCubeArrayRg32 ast::type::ImageFormat::eRg32i, RWimgCubeArray -#define RWIImg2DMSRg32 ast::type::ImageFormat::eRg32i, RWimg2DMS -#define RWIImg2DMSArrayRg32 ast::type::ImageFormat::eRg32i, RWimg2DMSArray - -#define RWUImg1DRg8 ast::type::ImageFormat::eRg8u, RWimg1D -#define RWUImg2DRg8 ast::type::ImageFormat::eRg8u, RWimg2D -#define RWUImg3DRg8 ast::type::ImageFormat::eRg8u, RWimg3D -#define RWUImgCubeRg8 ast::type::ImageFormat::eRg8u, RWimgCube -#define RWUImgBufferRg8 ast::type::ImageFormat::eRg8u, RWimgBuffer -#define RWUImg1DArrayRg8 ast::type::ImageFormat::eRg8u, RWimg1DArray -#define RWUImg2DArrayRg8 ast::type::ImageFormat::eRg8u, RWimg2DArray -#define RWUImgCubeArrayRg8 ast::type::ImageFormat::eRg8u, RWimgCubeArray -#define RWUImg2DMSRg8 ast::type::ImageFormat::eRg8u, RWimg2DMS -#define RWUImg2DMSArrayRg8 ast::type::ImageFormat::eRg8u, RWimg2DMSArray -#define RWUImg1DRg16 ast::type::ImageFormat::eRg16u, RWimg1D -#define RWUImg2DRg16 ast::type::ImageFormat::eRg16u, RWimg2D -#define RWUImg3DRg16 ast::type::ImageFormat::eRg16u, RWimg3D -#define RWUImgCubeRg16 ast::type::ImageFormat::eRg16u, RWimgCube -#define RWUImgBufferRg16 ast::type::ImageFormat::eRg16u, RWimgBuffer -#define RWUImg1DArrayRg16 ast::type::ImageFormat::eRg16u, RWimg1DArray -#define RWUImg2DArrayRg16 ast::type::ImageFormat::eRg16u, RWimg2DArray -#define RWUImgCubeArrayRg16 ast::type::ImageFormat::eRg16u, RWimgCubeArray -#define RWUImg2DMSRg16 ast::type::ImageFormat::eRg16u, RWimg2DMS -#define RWUImg2DMSArrayRg16 ast::type::ImageFormat::eRg16u, RWimg2DMSArray -#define RWUImg1DRg32 ast::type::ImageFormat::eRg32u, RWimg1D -#define RWUImg2DRg32 ast::type::ImageFormat::eRg32u, RWimg2D -#define RWUImg3DRg32 ast::type::ImageFormat::eRg32u, RWimg3D -#define RWUImgCubeRg32 ast::type::ImageFormat::eRg32u, RWimgCube -#define RWUImgBufferRg32 ast::type::ImageFormat::eRg32u, RWimgBuffer -#define RWUImg1DArrayRg32 ast::type::ImageFormat::eRg32u, RWimg1DArray -#define RWUImg2DArrayRg32 ast::type::ImageFormat::eRg32u, RWimg2DArray -#define RWUImgCubeArrayRg32 ast::type::ImageFormat::eRg32u, RWimgCubeArray -#define RWUImg2DMSRg32 ast::type::ImageFormat::eRg32u, RWimg2DMS -#define RWUImg2DMSArrayRg32 ast::type::ImageFormat::eRg32u, RWimg2DMSArray - -#define RWFImg1DR16 ast::type::ImageFormat::eR16f, RWimg1D -#define RWFImg2DR16 ast::type::ImageFormat::eR16f, RWimg2D -#define RWFImg3DR16 ast::type::ImageFormat::eR16f, RWimg3D -#define RWFImgCubeR16 ast::type::ImageFormat::eR16f, RWimgCube -#define RWFImgBufferR16 ast::type::ImageFormat::eR16f, RWimgBuffer -#define RWFImg1DArrayR16 ast::type::ImageFormat::eR16f, RWimg1DArray -#define RWFImg2DArrayR16 ast::type::ImageFormat::eR16f, RWimg2DArray -#define RWFImgCubeArrayR16 ast::type::ImageFormat::eR16f, RWimgCubeArray -#define RWFImg2DMSR16 ast::type::ImageFormat::eR16f, RWimg2DMS -#define RWFImg2DMSArrayR16 ast::type::ImageFormat::eR16f, RWimg2DMSArray -#define RWFImg1DR32 ast::type::ImageFormat::eR32f, RWimg1D -#define RWFImg2DR32 ast::type::ImageFormat::eR32f, RWimg2D -#define RWFImg3DR32 ast::type::ImageFormat::eR32f, RWimg3D -#define RWFImgCubeR32 ast::type::ImageFormat::eR32f, RWimgCube -#define RWFImgBufferR32 ast::type::ImageFormat::eR32f, RWimgBuffer -#define RWFImg1DArrayR32 ast::type::ImageFormat::eR32f, RWimg1DArray -#define RWFImg2DArrayR32 ast::type::ImageFormat::eR32f, RWimg2DArray -#define RWFImgCubeArrayR32 ast::type::ImageFormat::eR32f, RWimgCubeArray -#define RWFImg2DMSR32 ast::type::ImageFormat::eR32f, RWimg2DMS -#define RWFImg2DMSArrayR32 ast::type::ImageFormat::eR32f, RWimg2DMSArray -#define RWFImg1DR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg1D -#define RWFImg2DR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg2D -#define RWFImg3DR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg3D -#define RWFImgCubeR16Snorm ast::type::ImageFormat::eR16Snorm, RWimgCube -#define RWFImgBufferR16Snorm ast::type::ImageFormat::eR16Snorm, RWimgBuffer -#define RWFImg1DArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg1DArray -#define RWFImg2DArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg2DArray -#define RWFImgCubeArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWimgCubeArray -#define RWFImg2DMSR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg2DMS -#define RWFImg2DMSArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWimg2DMSArray -#define RWFImg1DR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg1D -#define RWFImg2DR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg2D -#define RWFImg3DR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg3D -#define RWFImgCubeR8Snorm ast::type::ImageFormat::eR8Snorm, RWimgCube -#define RWFImgBufferR8Snorm ast::type::ImageFormat::eR8Snorm, RWimgBuffer -#define RWFImg1DArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg1DArray -#define RWFImg2DArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg2DArray -#define RWFImgCubeArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWimgCubeArray -#define RWFImg2DMSR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg2DMS -#define RWFImg2DMSArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWimg2DMSArray -#define RWFImg1DR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg1D -#define RWFImg2DR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg2D -#define RWFImg3DR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg3D -#define RWFImgCubeR16Unorm ast::type::ImageFormat::eR16Unorm, RWimgCube -#define RWFImgBufferR16Unorm ast::type::ImageFormat::eR16Unorm, RWimgBuffer -#define RWFImg1DArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg1DArray -#define RWFImg2DArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg2DArray -#define RWFImgCubeArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWimgCubeArray -#define RWFImg2DMSR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg2DMS -#define RWFImg2DMSArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWimg2DMSArray -#define RWFImg1DR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg1D -#define RWFImg2DR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg2D -#define RWFImg3DR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg3D -#define RWFImgCubeR8Unorm ast::type::ImageFormat::eR8Unorm, RWimgCube -#define RWFImgBufferR8Unorm ast::type::ImageFormat::eR8Unorm, RWimgBuffer -#define RWFImg1DArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg1DArray -#define RWFImg2DArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg2DArray -#define RWFImgCubeArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWimgCubeArray -#define RWFImg2DMSR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg2DMS -#define RWFImg2DMSArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWimg2DMSArray - -#define RWIImg1DR8 ast::type::ImageFormat::eR8i, RWimg1D -#define RWIImg2DR8 ast::type::ImageFormat::eR8i, RWimg2D -#define RWIImg3DR8 ast::type::ImageFormat::eR8i, RWimg3D -#define RWIImgCubeR8 ast::type::ImageFormat::eR8i, RWimgCube -#define RWIImgBufferR8 ast::type::ImageFormat::eR8i, RWimgBuffer -#define RWIImg1DArrayR8 ast::type::ImageFormat::eR8i, RWimg1DArray -#define RWIImg2DArrayR8 ast::type::ImageFormat::eR8i, RWimg2DArray -#define RWIImgCubeArrayR8 ast::type::ImageFormat::eR8i, RWimgCubeArray -#define RWIImg2DMSR8 ast::type::ImageFormat::eR8i, RWimg2DMS -#define RWIImg2DMSArrayR8 ast::type::ImageFormat::eR8i, RWimg2DMSArray -#define RWIImg1DR16 ast::type::ImageFormat::eR16i, RWimg1D -#define RWIImg2DR16 ast::type::ImageFormat::eR16i, RWimg2D -#define RWIImg3DR16 ast::type::ImageFormat::eR16i, RWimg3D -#define RWIImgCubeR16 ast::type::ImageFormat::eR16i, RWimgCube -#define RWIImgBufferR16 ast::type::ImageFormat::eR16i, RWimgBuffer -#define RWIImg1DArrayR16 ast::type::ImageFormat::eR16i, RWimg1DArray -#define RWIImg2DArrayR16 ast::type::ImageFormat::eR16i, RWimg2DArray -#define RWIImgCubeArrayR16 ast::type::ImageFormat::eR16i, RWimgCubeArray -#define RWIImg2DMSR16 ast::type::ImageFormat::eR16i, RWimg2DMS -#define RWIImg2DMSArrayR16 ast::type::ImageFormat::eR16i, RWimg2DMSArray -#define RWIImg1DR32 ast::type::ImageFormat::eR32i, RWimg1D -#define RWIImg2DR32 ast::type::ImageFormat::eR32i, RWimg2D -#define RWIImg3DR32 ast::type::ImageFormat::eR32i, RWimg3D -#define RWIImgCubeR32 ast::type::ImageFormat::eR32i, RWimgCube -#define RWIImgBufferR32 ast::type::ImageFormat::eR32i, RWimgBuffer -#define RWIImg1DArrayR32 ast::type::ImageFormat::eR32i, RWimg1DArray -#define RWIImg2DArrayR32 ast::type::ImageFormat::eR32i, RWimg2DArray -#define RWIImgCubeArrayR32 ast::type::ImageFormat::eR32i, RWimgCubeArray -#define RWIImg2DMSR32 ast::type::ImageFormat::eR32i, RWimg2DMS -#define RWIImg2DMSArrayR32 ast::type::ImageFormat::eR32i, RWimg2DMSArray - -#define RWUImg1DR8 ast::type::ImageFormat::eR8u, RWimg1D -#define RWUImg2DR8 ast::type::ImageFormat::eR8u, RWimg2D -#define RWUImg3DR8 ast::type::ImageFormat::eR8u, RWimg3D -#define RWUImgCubeR8 ast::type::ImageFormat::eR8u, RWimgCube -#define RWUImgBufferR8 ast::type::ImageFormat::eR8u, RWimgBuffer -#define RWUImg1DArrayR8 ast::type::ImageFormat::eR8u, RWimg1DArray -#define RWUImg2DArrayR8 ast::type::ImageFormat::eR8u, RWimg2DArray -#define RWUImgCubeArrayR8 ast::type::ImageFormat::eR8u, RWimgCubeArray -#define RWUImg2DMSR8 ast::type::ImageFormat::eR8u, RWimg2DMS -#define RWUImg2DMSArrayR8 ast::type::ImageFormat::eR8u, RWimg2DMSArray -#define RWUImg1DR16 ast::type::ImageFormat::eR16u, RWimg1D -#define RWUImg2DR16 ast::type::ImageFormat::eR16u, RWimg2D -#define RWUImg3DR16 ast::type::ImageFormat::eR16u, RWimg3D -#define RWUImgCubeR16 ast::type::ImageFormat::eR16u, RWimgCube -#define RWUImgBufferR16 ast::type::ImageFormat::eR16u, RWimgBuffer -#define RWUImg1DArrayR16 ast::type::ImageFormat::eR16u, RWimg1DArray -#define RWUImg2DArrayR16 ast::type::ImageFormat::eR16u, RWimg2DArray -#define RWUImgCubeArrayR16 ast::type::ImageFormat::eR16u, RWimgCubeArray -#define RWUImg2DMSR16 ast::type::ImageFormat::eR16u, RWimg2DMS -#define RWUImg2DMSArrayR16 ast::type::ImageFormat::eR16u, RWimg2DMSArray -#define RWUImg1DR32 ast::type::ImageFormat::eR32u, RWimg1D -#define RWUImg2DR32 ast::type::ImageFormat::eR32u, RWimg2D -#define RWUImg3DR32 ast::type::ImageFormat::eR32u, RWimg3D -#define RWUImgCubeR32 ast::type::ImageFormat::eR32u, RWimgCube -#define RWUImgBufferR32 ast::type::ImageFormat::eR32u, RWimgBuffer -#define RWUImg1DArrayR32 ast::type::ImageFormat::eR32u, RWimg1DArray -#define RWUImg2DArrayR32 ast::type::ImageFormat::eR32u, RWimg2DArray -#define RWUImgCubeArrayR32 ast::type::ImageFormat::eR32u, RWimgCubeArray -#define RWUImg2DMSR32 ast::type::ImageFormat::eR32u, RWimg2DMS -#define RWUImg2DMSArrayR32 ast::type::ImageFormat::eR32u, RWimg2DMSArray +#define RWImg1D ast::type::AccessKind::eReadWrite, Img1DBase +#define RWImg2D ast::type::AccessKind::eReadWrite, Img2DBase +#define RWImg3D ast::type::AccessKind::eReadWrite, Img3DBase +#define RWImgCube ast::type::AccessKind::eReadWrite, ImgCubeBase +#define RWImgBuffer ast::type::AccessKind::eReadWrite, ImgBufferBase +#define RWImg1DArray ast::type::AccessKind::eReadWrite, Img1DArrayBase +#define RWImg2DArray ast::type::AccessKind::eReadWrite, Img2DArrayBase +#define RWImgCubeArray ast::type::AccessKind::eReadWrite, ImgCubeArrayBase +#define RWImg2DMS ast::type::AccessKind::eReadWrite, Img2DMSBase +#define RWImg2DMSArray ast::type::AccessKind::eReadWrite, Img2DMSArrayBase + +#define RWFImg1DRgba16 ast::type::ImageFormat::eRgba16f, RWImg1D +#define RWFImg2DRgba16 ast::type::ImageFormat::eRgba16f, RWImg2D +#define RWFImg3DRgba16 ast::type::ImageFormat::eRgba16f, RWImg3D +#define RWFImgCubeRgba16 ast::type::ImageFormat::eRgba16f, RWImgCube +#define RWFImgBufferRgba16 ast::type::ImageFormat::eRgba16f, RWImgBuffer +#define RWFImg1DArrayRgba16 ast::type::ImageFormat::eRgba16f, RWImg1DArray +#define RWFImg2DArrayRgba16 ast::type::ImageFormat::eRgba16f, RWImg2DArray +#define RWFImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16f, RWImgCubeArray +#define RWFImg2DMSRgba16 ast::type::ImageFormat::eRgba16f, RWImg2DMS +#define RWFImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16f, RWImg2DMSArray +#define RWFImg1DRgba32 ast::type::ImageFormat::eRgba32f, RWImg1D +#define RWFImg2DRgba32 ast::type::ImageFormat::eRgba32f, RWImg2D +#define RWFImg3DRgba32 ast::type::ImageFormat::eRgba32f, RWImg3D +#define RWFImgCubeRgba32 ast::type::ImageFormat::eRgba32f, RWImgCube +#define RWFImgBufferRgba32 ast::type::ImageFormat::eRgba32f, RWImgBuffer +#define RWFImg1DArrayRgba32 ast::type::ImageFormat::eRgba32f, RWImg1DArray +#define RWFImg2DArrayRgba32 ast::type::ImageFormat::eRgba32f, RWImg2DArray +#define RWFImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32f, RWImgCubeArray +#define RWFImg2DMSRgba32 ast::type::ImageFormat::eRgba32f, RWImg2DMS +#define RWFImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32f, RWImg2DMSArray +#define RWFImg1DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg1D +#define RWFImg2DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg2D +#define RWFImg3DRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg3D +#define RWFImgCubeRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImgCube +#define RWFImgBufferRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImgBuffer +#define RWFImg1DArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg1DArray +#define RWFImg2DArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg2DArray +#define RWFImgCubeArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImgCubeArray +#define RWFImg2DMSRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg2DMS +#define RWFImg2DMSArrayRgba16Snorm ast::type::ImageFormat::eRgba16Snorm, RWImg2DMSArray +#define RWFImg1DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg1D +#define RWFImg2DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg2D +#define RWFImg3DRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg3D +#define RWFImgCubeRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImgCube +#define RWFImgBufferRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImgBuffer +#define RWFImg1DArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg1DArray +#define RWFImg2DArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg2DArray +#define RWFImgCubeArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImgCubeArray +#define RWFImg2DMSRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg2DMS +#define RWFImg2DMSArrayRgba8Snorm ast::type::ImageFormat::eRgba8Snorm, RWImg2DMSArray +#define RWFImg1DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg1D +#define RWFImg2DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg2D +#define RWFImg3DRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg3D +#define RWFImgCubeRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImgCube +#define RWFImgBufferRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImgBuffer +#define RWFImg1DArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg1DArray +#define RWFImg2DArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg2DArray +#define RWFImgCubeArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImgCubeArray +#define RWFImg2DMSRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg2DMS +#define RWFImg2DMSArrayRgba16Unorm ast::type::ImageFormat::eRgba16Unorm, RWImg2DMSArray +#define RWFImg1DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg1D +#define RWFImg2DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg2D +#define RWFImg3DRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg3D +#define RWFImgCubeRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImgCube +#define RWFImgBufferRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImgBuffer +#define RWFImg1DArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg1DArray +#define RWFImg2DArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg2DArray +#define RWFImgCubeArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImgCubeArray +#define RWFImg2DMSRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg2DMS +#define RWFImg2DMSArrayRgba8Unorm ast::type::ImageFormat::eRgba8Unorm, RWImg2DMSArray +#define RWFImg1DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg1D +#define RWFImg2DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg2D +#define RWFImg3DR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg3D +#define RWFImgCubeR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImgCube +#define RWFImgBufferR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImgBuffer +#define RWFImg1DArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg1DArray +#define RWFImg2DArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg2DArray +#define RWFImgCubeArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImgCubeArray +#define RWFImg2DMSR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg2DMS +#define RWFImg2DMSArrayR11fG11fB10f ast::type::ImageFormat::eR11fG11fB10f, RWImg2DMSArray +#define RWFImg1DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg1D +#define RWFImg2DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg2D +#define RWFImg3DRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg3D +#define RWFImgCubeRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImgCube +#define RWFImgBufferRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImgBuffer +#define RWFImg1DArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg1DArray +#define RWFImg2DArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg2DArray +#define RWFImgCubeArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImgCubeArray +#define RWFImg2DMSRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg2DMS +#define RWFImg2DMSArrayRgb10A2Unorm ast::type::ImageFormat::eRgb10A2Unorm, RWImg2DMSArray + +#define RWIImg1DRgba8 ast::type::ImageFormat::eRgba8i, RWImg1D +#define RWIImg2DRgba8 ast::type::ImageFormat::eRgba8i, RWImg2D +#define RWIImg3DRgba8 ast::type::ImageFormat::eRgba8i, RWImg3D +#define RWIImgCubeRgba8 ast::type::ImageFormat::eRgba8i, RWImgCube +#define RWIImgBufferRgba8 ast::type::ImageFormat::eRgba8i, RWImgBuffer +#define RWIImg1DArrayRgba8 ast::type::ImageFormat::eRgba8i, RWImg1DArray +#define RWIImg2DArrayRgba8 ast::type::ImageFormat::eRgba8i, RWImg2DArray +#define RWIImgCubeArrayRgba8 ast::type::ImageFormat::eRgba8i, RWImgCubeArray +#define RWIImg2DMSRgba8 ast::type::ImageFormat::eRgba8i, RWImg2DMS +#define RWIImg2DMSArrayRgba8 ast::type::ImageFormat::eRgba8i, RWImg2DMSArray +#define RWIImg1DRgba16 ast::type::ImageFormat::eRgba16i, RWImg1D +#define RWIImg2DRgba16 ast::type::ImageFormat::eRgba16i, RWImg2D +#define RWIImg3DRgba16 ast::type::ImageFormat::eRgba16i, RWImg3D +#define RWIImgCubeRgba16 ast::type::ImageFormat::eRgba16i, RWImgCube +#define RWIImgBufferRgba16 ast::type::ImageFormat::eRgba16i, RWImgBuffer +#define RWIImg1DArrayRgba16 ast::type::ImageFormat::eRgba16i, RWImg1DArray +#define RWIImg2DArrayRgba16 ast::type::ImageFormat::eRgba16i, RWImg2DArray +#define RWIImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16i, RWImgCubeArray +#define RWIImg2DMSRgba16 ast::type::ImageFormat::eRgba16i, RWImg2DMS +#define RWIImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16i, RWImg2DMSArray +#define RWIImg1DRgba32 ast::type::ImageFormat::eRgba32i, RWImg1D +#define RWIImg2DRgba32 ast::type::ImageFormat::eRgba32i, RWImg2D +#define RWIImg3DRgba32 ast::type::ImageFormat::eRgba32i, RWImg3D +#define RWIImgCubeRgba32 ast::type::ImageFormat::eRgba32i, RWImgCube +#define RWIImgBufferRgba32 ast::type::ImageFormat::eRgba32i, RWImgBuffer +#define RWIImg1DArrayRgba32 ast::type::ImageFormat::eRgba32i, RWImg1DArray +#define RWIImg2DArrayRgba32 ast::type::ImageFormat::eRgba32i, RWImg2DArray +#define RWIImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32i, RWImgCubeArray +#define RWIImg2DMSRgba32 ast::type::ImageFormat::eRgba32i, RWImg2DMS +#define RWIImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32i, RWImg2DMSArray + +#define RWUImg1DRgba8 ast::type::ImageFormat::eRgba8u, RWImg1D +#define RWUImg2DRgba8 ast::type::ImageFormat::eRgba8u, RWImg2D +#define RWUImg3DRgba8 ast::type::ImageFormat::eRgba8u, RWImg3D +#define RWUImgCubeRgba8 ast::type::ImageFormat::eRgba8u, RWImgCube +#define RWUImgBufferRgba8 ast::type::ImageFormat::eRgba8u, RWImgBuffer +#define RWUImg1DArrayRgba8 ast::type::ImageFormat::eRgba8u, RWImg1DArray +#define RWUImg2DArrayRgba8 ast::type::ImageFormat::eRgba8u, RWImg2DArray +#define RWUImgCubeArrayRgba8 ast::type::ImageFormat::eRgba8u, RWImgCubeArray +#define RWUImg2DMSRgba8 ast::type::ImageFormat::eRgba8u, RWImg2DMS +#define RWUImg2DMSArrayRgba8 ast::type::ImageFormat::eRgba8u, RWImg2DMSArray +#define RWUImg1DRgba16 ast::type::ImageFormat::eRgba16u, RWImg1D +#define RWUImg2DRgba16 ast::type::ImageFormat::eRgba16u, RWImg2D +#define RWUImg3DRgba16 ast::type::ImageFormat::eRgba16u, RWImg3D +#define RWUImgCubeRgba16 ast::type::ImageFormat::eRgba16u, RWImgCube +#define RWUImgBufferRgba16 ast::type::ImageFormat::eRgba16u, RWImgBuffer +#define RWUImg1DArrayRgba16 ast::type::ImageFormat::eRgba16u, RWImg1DArray +#define RWUImg2DArrayRgba16 ast::type::ImageFormat::eRgba16u, RWImg2DArray +#define RWUImgCubeArrayRgba16 ast::type::ImageFormat::eRgba16u, RWImgCubeArray +#define RWUImg2DMSRgba16 ast::type::ImageFormat::eRgba16u, RWImg2DMS +#define RWUImg2DMSArrayRgba16 ast::type::ImageFormat::eRgba16u, RWImg2DMSArray +#define RWUImg1DRgba32 ast::type::ImageFormat::eRgba32u, RWImg1D +#define RWUImg2DRgba32 ast::type::ImageFormat::eRgba32u, RWImg2D +#define RWUImg3DRgba32 ast::type::ImageFormat::eRgba32u, RWImg3D +#define RWUImgCubeRgba32 ast::type::ImageFormat::eRgba32u, RWImgCube +#define RWUImgBufferRgba32 ast::type::ImageFormat::eRgba32u, RWImgBuffer +#define RWUImg1DArrayRgba32 ast::type::ImageFormat::eRgba32u, RWImg1DArray +#define RWUImg2DArrayRgba32 ast::type::ImageFormat::eRgba32u, RWImg2DArray +#define RWUImgCubeArrayRgba32 ast::type::ImageFormat::eRgba32u, RWImgCubeArray +#define RWUImg2DMSRgba32 ast::type::ImageFormat::eRgba32u, RWImg2DMS +#define RWUImg2DMSArrayRgba32 ast::type::ImageFormat::eRgba32u, RWImg2DMSArray +#define RWUImg1DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg1D +#define RWUImg2DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg2D +#define RWUImg3DRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg3D +#define RWUImgCubeRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImgCube +#define RWUImgBufferRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImgBuffer +#define RWUImg1DArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg1DArray +#define RWUImg2DArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg2DArray +#define RWUImgCubeArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImgCubeArray +#define RWUImg2DMSRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg2DMS +#define RWUImg2DMSArrayRgb10A2 ast::type::ImageFormat::eRgb10A2u, RWImg2DMSArray + +#define RWFImg1DRg16 ast::type::ImageFormat::eRg16f, RWImg1D +#define RWFImg2DRg16 ast::type::ImageFormat::eRg16f, RWImg2D +#define RWFImg3DRg16 ast::type::ImageFormat::eRg16f, RWImg3D +#define RWFImgCubeRg16 ast::type::ImageFormat::eRg16f, RWImgCube +#define RWFImgBufferRg16 ast::type::ImageFormat::eRg16f, RWImgBuffer +#define RWFImg1DArrayRg16 ast::type::ImageFormat::eRg16f, RWImg1DArray +#define RWFImg2DArrayRg16 ast::type::ImageFormat::eRg16f, RWImg2DArray +#define RWFImgCubeArrayRg16 ast::type::ImageFormat::eRg16f, RWImgCubeArray +#define RWFImg2DMSRg16 ast::type::ImageFormat::eRg16f, RWImg2DMS +#define RWFImg2DMSArrayRg16 ast::type::ImageFormat::eRg16f, RWImg2DMSArray +#define RWFImg1DRg32 ast::type::ImageFormat::eRg32f, RWImg1D +#define RWFImg2DRg32 ast::type::ImageFormat::eRg32f, RWImg2D +#define RWFImg3DRg32 ast::type::ImageFormat::eRg32f, RWImg3D +#define RWFImgCubeRg32 ast::type::ImageFormat::eRg32f, RWImgCube +#define RWFImgBufferRg32 ast::type::ImageFormat::eRg32f, RWImgBuffer +#define RWFImg1DArrayRg32 ast::type::ImageFormat::eRg32f, RWImg1DArray +#define RWFImg2DArrayRg32 ast::type::ImageFormat::eRg32f, RWImg2DArray +#define RWFImgCubeArrayRg32 ast::type::ImageFormat::eRg32f, RWImgCubeArray +#define RWFImg2DMSRg32 ast::type::ImageFormat::eRg32f, RWImg2DMS +#define RWFImg2DMSArrayRg32 ast::type::ImageFormat::eRg32f, RWImg2DMSArray +#define RWFImg1DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg1D +#define RWFImg2DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg2D +#define RWFImg3DRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg3D +#define RWFImgCubeRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImgCube +#define RWFImgBufferRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImgBuffer +#define RWFImg1DArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg1DArray +#define RWFImg2DArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg2DArray +#define RWFImgCubeArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImgCubeArray +#define RWFImg2DMSRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg2DMS +#define RWFImg2DMSArrayRg16Snorm ast::type::ImageFormat::eRg16Snorm, RWImg2DMSArray +#define RWFImg1DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg1D +#define RWFImg2DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg2D +#define RWFImg3DRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg3D +#define RWFImgCubeRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImgCube +#define RWFImgBufferRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImgBuffer +#define RWFImg1DArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg1DArray +#define RWFImg2DArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg2DArray +#define RWFImgCubeArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImgCubeArray +#define RWFImg2DMSRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg2DMS +#define RWFImg2DMSArrayRg8Snorm ast::type::ImageFormat::eRg8Snorm, RWImg2DMSArray +#define RWFImg1DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg1D +#define RWFImg2DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg2D +#define RWFImg3DRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg3D +#define RWFImgCubeRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImgCube +#define RWFImgBufferRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImgBuffer +#define RWFImg1DArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg1DArray +#define RWFImg2DArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg2DArray +#define RWFImgCubeArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImgCubeArray +#define RWFImg2DMSRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg2DMS +#define RWFImg2DMSArrayRg16Unorm ast::type::ImageFormat::eRg16Unorm, RWImg2DMSArray +#define RWFImg1DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg1D +#define RWFImg2DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg2D +#define RWFImg3DRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg3D +#define RWFImgCubeRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImgCube +#define RWFImgBufferRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImgBuffer +#define RWFImg1DArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg1DArray +#define RWFImg2DArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg2DArray +#define RWFImgCubeArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImgCubeArray +#define RWFImg2DMSRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg2DMS +#define RWFImg2DMSArrayRg8Unorm ast::type::ImageFormat::eRg8Unorm, RWImg2DMSArray + +#define RWIImg1DRg8 ast::type::ImageFormat::eRg8i, RWImg1D +#define RWIImg2DRg8 ast::type::ImageFormat::eRg8i, RWImg2D +#define RWIImg3DRg8 ast::type::ImageFormat::eRg8i, RWImg3D +#define RWIImgCubeRg8 ast::type::ImageFormat::eRg8i, RWImgCube +#define RWIImgBufferRg8 ast::type::ImageFormat::eRg8i, RWImgBuffer +#define RWIImg1DArrayRg8 ast::type::ImageFormat::eRg8i, RWImg1DArray +#define RWIImg2DArrayRg8 ast::type::ImageFormat::eRg8i, RWImg2DArray +#define RWIImgCubeArrayRg8 ast::type::ImageFormat::eRg8i, RWImgCubeArray +#define RWIImg2DMSRg8 ast::type::ImageFormat::eRg8i, RWImg2DMS +#define RWIImg2DMSArrayRg8 ast::type::ImageFormat::eRg8i, RWImg2DMSArray +#define RWIImg1DRg16 ast::type::ImageFormat::eRg16i, RWImg1D +#define RWIImg2DRg16 ast::type::ImageFormat::eRg16i, RWImg2D +#define RWIImg3DRg16 ast::type::ImageFormat::eRg16i, RWImg3D +#define RWIImgCubeRg16 ast::type::ImageFormat::eRg16i, RWImgCube +#define RWIImgBufferRg16 ast::type::ImageFormat::eRg16i, RWImgBuffer +#define RWIImg1DArrayRg16 ast::type::ImageFormat::eRg16i, RWImg1DArray +#define RWIImg2DArrayRg16 ast::type::ImageFormat::eRg16i, RWImg2DArray +#define RWIImgCubeArrayRg16 ast::type::ImageFormat::eRg16i, RWImgCubeArray +#define RWIImg2DMSRg16 ast::type::ImageFormat::eRg16i, RWImg2DMS +#define RWIImg2DMSArrayRg16 ast::type::ImageFormat::eRg16i, RWImg2DMSArray +#define RWIImg1DRg32 ast::type::ImageFormat::eRg32i, RWImg1D +#define RWIImg2DRg32 ast::type::ImageFormat::eRg32i, RWImg2D +#define RWIImg3DRg32 ast::type::ImageFormat::eRg32i, RWImg3D +#define RWIImgCubeRg32 ast::type::ImageFormat::eRg32i, RWImgCube +#define RWIImgBufferRg32 ast::type::ImageFormat::eRg32i, RWImgBuffer +#define RWIImg1DArrayRg32 ast::type::ImageFormat::eRg32i, RWImg1DArray +#define RWIImg2DArrayRg32 ast::type::ImageFormat::eRg32i, RWImg2DArray +#define RWIImgCubeArrayRg32 ast::type::ImageFormat::eRg32i, RWImgCubeArray +#define RWIImg2DMSRg32 ast::type::ImageFormat::eRg32i, RWImg2DMS +#define RWIImg2DMSArrayRg32 ast::type::ImageFormat::eRg32i, RWImg2DMSArray + +#define RWUImg1DRg8 ast::type::ImageFormat::eRg8u, RWImg1D +#define RWUImg2DRg8 ast::type::ImageFormat::eRg8u, RWImg2D +#define RWUImg3DRg8 ast::type::ImageFormat::eRg8u, RWImg3D +#define RWUImgCubeRg8 ast::type::ImageFormat::eRg8u, RWImgCube +#define RWUImgBufferRg8 ast::type::ImageFormat::eRg8u, RWImgBuffer +#define RWUImg1DArrayRg8 ast::type::ImageFormat::eRg8u, RWImg1DArray +#define RWUImg2DArrayRg8 ast::type::ImageFormat::eRg8u, RWImg2DArray +#define RWUImgCubeArrayRg8 ast::type::ImageFormat::eRg8u, RWImgCubeArray +#define RWUImg2DMSRg8 ast::type::ImageFormat::eRg8u, RWImg2DMS +#define RWUImg2DMSArrayRg8 ast::type::ImageFormat::eRg8u, RWImg2DMSArray +#define RWUImg1DRg16 ast::type::ImageFormat::eRg16u, RWImg1D +#define RWUImg2DRg16 ast::type::ImageFormat::eRg16u, RWImg2D +#define RWUImg3DRg16 ast::type::ImageFormat::eRg16u, RWImg3D +#define RWUImgCubeRg16 ast::type::ImageFormat::eRg16u, RWImgCube +#define RWUImgBufferRg16 ast::type::ImageFormat::eRg16u, RWImgBuffer +#define RWUImg1DArrayRg16 ast::type::ImageFormat::eRg16u, RWImg1DArray +#define RWUImg2DArrayRg16 ast::type::ImageFormat::eRg16u, RWImg2DArray +#define RWUImgCubeArrayRg16 ast::type::ImageFormat::eRg16u, RWImgCubeArray +#define RWUImg2DMSRg16 ast::type::ImageFormat::eRg16u, RWImg2DMS +#define RWUImg2DMSArrayRg16 ast::type::ImageFormat::eRg16u, RWImg2DMSArray +#define RWUImg1DRg32 ast::type::ImageFormat::eRg32u, RWImg1D +#define RWUImg2DRg32 ast::type::ImageFormat::eRg32u, RWImg2D +#define RWUImg3DRg32 ast::type::ImageFormat::eRg32u, RWImg3D +#define RWUImgCubeRg32 ast::type::ImageFormat::eRg32u, RWImgCube +#define RWUImgBufferRg32 ast::type::ImageFormat::eRg32u, RWImgBuffer +#define RWUImg1DArrayRg32 ast::type::ImageFormat::eRg32u, RWImg1DArray +#define RWUImg2DArrayRg32 ast::type::ImageFormat::eRg32u, RWImg2DArray +#define RWUImgCubeArrayRg32 ast::type::ImageFormat::eRg32u, RWImgCubeArray +#define RWUImg2DMSRg32 ast::type::ImageFormat::eRg32u, RWImg2DMS +#define RWUImg2DMSArrayRg32 ast::type::ImageFormat::eRg32u, RWImg2DMSArray + +#define RWFImg1DR16 ast::type::ImageFormat::eR16f, RWImg1D +#define RWFImg2DR16 ast::type::ImageFormat::eR16f, RWImg2D +#define RWFImg3DR16 ast::type::ImageFormat::eR16f, RWImg3D +#define RWFImgCubeR16 ast::type::ImageFormat::eR16f, RWImgCube +#define RWFImgBufferR16 ast::type::ImageFormat::eR16f, RWImgBuffer +#define RWFImg1DArrayR16 ast::type::ImageFormat::eR16f, RWImg1DArray +#define RWFImg2DArrayR16 ast::type::ImageFormat::eR16f, RWImg2DArray +#define RWFImgCubeArrayR16 ast::type::ImageFormat::eR16f, RWImgCubeArray +#define RWFImg2DMSR16 ast::type::ImageFormat::eR16f, RWImg2DMS +#define RWFImg2DMSArrayR16 ast::type::ImageFormat::eR16f, RWImg2DMSArray +#define RWFImg1DR32 ast::type::ImageFormat::eR32f, RWImg1D +#define RWFImg2DR32 ast::type::ImageFormat::eR32f, RWImg2D +#define RWFImg3DR32 ast::type::ImageFormat::eR32f, RWImg3D +#define RWFImgCubeR32 ast::type::ImageFormat::eR32f, RWImgCube +#define RWFImgBufferR32 ast::type::ImageFormat::eR32f, RWImgBuffer +#define RWFImg1DArrayR32 ast::type::ImageFormat::eR32f, RWImg1DArray +#define RWFImg2DArrayR32 ast::type::ImageFormat::eR32f, RWImg2DArray +#define RWFImgCubeArrayR32 ast::type::ImageFormat::eR32f, RWImgCubeArray +#define RWFImg2DMSR32 ast::type::ImageFormat::eR32f, RWImg2DMS +#define RWFImg2DMSArrayR32 ast::type::ImageFormat::eR32f, RWImg2DMSArray +#define RWFImg1DR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg1D +#define RWFImg2DR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg2D +#define RWFImg3DR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg3D +#define RWFImgCubeR16Snorm ast::type::ImageFormat::eR16Snorm, RWImgCube +#define RWFImgBufferR16Snorm ast::type::ImageFormat::eR16Snorm, RWImgBuffer +#define RWFImg1DArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg1DArray +#define RWFImg2DArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg2DArray +#define RWFImgCubeArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWImgCubeArray +#define RWFImg2DMSR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg2DMS +#define RWFImg2DMSArrayR16Snorm ast::type::ImageFormat::eR16Snorm, RWImg2DMSArray +#define RWFImg1DR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg1D +#define RWFImg2DR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg2D +#define RWFImg3DR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg3D +#define RWFImgCubeR8Snorm ast::type::ImageFormat::eR8Snorm, RWImgCube +#define RWFImgBufferR8Snorm ast::type::ImageFormat::eR8Snorm, RWImgBuffer +#define RWFImg1DArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg1DArray +#define RWFImg2DArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg2DArray +#define RWFImgCubeArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWImgCubeArray +#define RWFImg2DMSR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg2DMS +#define RWFImg2DMSArrayR8Snorm ast::type::ImageFormat::eR8Snorm, RWImg2DMSArray +#define RWFImg1DR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg1D +#define RWFImg2DR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg2D +#define RWFImg3DR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg3D +#define RWFImgCubeR16Unorm ast::type::ImageFormat::eR16Unorm, RWImgCube +#define RWFImgBufferR16Unorm ast::type::ImageFormat::eR16Unorm, RWImgBuffer +#define RWFImg1DArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg1DArray +#define RWFImg2DArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg2DArray +#define RWFImgCubeArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWImgCubeArray +#define RWFImg2DMSR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg2DMS +#define RWFImg2DMSArrayR16Unorm ast::type::ImageFormat::eR16Unorm, RWImg2DMSArray +#define RWFImg1DR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg1D +#define RWFImg2DR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg2D +#define RWFImg3DR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg3D +#define RWFImgCubeR8Unorm ast::type::ImageFormat::eR8Unorm, RWImgCube +#define RWFImgBufferR8Unorm ast::type::ImageFormat::eR8Unorm, RWImgBuffer +#define RWFImg1DArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg1DArray +#define RWFImg2DArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg2DArray +#define RWFImgCubeArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWImgCubeArray +#define RWFImg2DMSR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg2DMS +#define RWFImg2DMSArrayR8Unorm ast::type::ImageFormat::eR8Unorm, RWImg2DMSArray + +#define RWIImg1DR8 ast::type::ImageFormat::eR8i, RWImg1D +#define RWIImg2DR8 ast::type::ImageFormat::eR8i, RWImg2D +#define RWIImg3DR8 ast::type::ImageFormat::eR8i, RWImg3D +#define RWIImgCubeR8 ast::type::ImageFormat::eR8i, RWImgCube +#define RWIImgBufferR8 ast::type::ImageFormat::eR8i, RWImgBuffer +#define RWIImg1DArrayR8 ast::type::ImageFormat::eR8i, RWImg1DArray +#define RWIImg2DArrayR8 ast::type::ImageFormat::eR8i, RWImg2DArray +#define RWIImgCubeArrayR8 ast::type::ImageFormat::eR8i, RWImgCubeArray +#define RWIImg2DMSR8 ast::type::ImageFormat::eR8i, RWImg2DMS +#define RWIImg2DMSArrayR8 ast::type::ImageFormat::eR8i, RWImg2DMSArray +#define RWIImg1DR16 ast::type::ImageFormat::eR16i, RWImg1D +#define RWIImg2DR16 ast::type::ImageFormat::eR16i, RWImg2D +#define RWIImg3DR16 ast::type::ImageFormat::eR16i, RWImg3D +#define RWIImgCubeR16 ast::type::ImageFormat::eR16i, RWImgCube +#define RWIImgBufferR16 ast::type::ImageFormat::eR16i, RWImgBuffer +#define RWIImg1DArrayR16 ast::type::ImageFormat::eR16i, RWImg1DArray +#define RWIImg2DArrayR16 ast::type::ImageFormat::eR16i, RWImg2DArray +#define RWIImgCubeArrayR16 ast::type::ImageFormat::eR16i, RWImgCubeArray +#define RWIImg2DMSR16 ast::type::ImageFormat::eR16i, RWImg2DMS +#define RWIImg2DMSArrayR16 ast::type::ImageFormat::eR16i, RWImg2DMSArray +#define RWIImg1DR32 ast::type::ImageFormat::eR32i, RWImg1D +#define RWIImg2DR32 ast::type::ImageFormat::eR32i, RWImg2D +#define RWIImg3DR32 ast::type::ImageFormat::eR32i, RWImg3D +#define RWIImgCubeR32 ast::type::ImageFormat::eR32i, RWImgCube +#define RWIImgBufferR32 ast::type::ImageFormat::eR32i, RWImgBuffer +#define RWIImg1DArrayR32 ast::type::ImageFormat::eR32i, RWImg1DArray +#define RWIImg2DArrayR32 ast::type::ImageFormat::eR32i, RWImg2DArray +#define RWIImgCubeArrayR32 ast::type::ImageFormat::eR32i, RWImgCubeArray +#define RWIImg2DMSR32 ast::type::ImageFormat::eR32i, RWImg2DMS +#define RWIImg2DMSArrayR32 ast::type::ImageFormat::eR32i, RWImg2DMSArray + +#define RWUImg1DR8 ast::type::ImageFormat::eR8u, RWImg1D +#define RWUImg2DR8 ast::type::ImageFormat::eR8u, RWImg2D +#define RWUImg3DR8 ast::type::ImageFormat::eR8u, RWImg3D +#define RWUImgCubeR8 ast::type::ImageFormat::eR8u, RWImgCube +#define RWUImgBufferR8 ast::type::ImageFormat::eR8u, RWImgBuffer +#define RWUImg1DArrayR8 ast::type::ImageFormat::eR8u, RWImg1DArray +#define RWUImg2DArrayR8 ast::type::ImageFormat::eR8u, RWImg2DArray +#define RWUImgCubeArrayR8 ast::type::ImageFormat::eR8u, RWImgCubeArray +#define RWUImg2DMSR8 ast::type::ImageFormat::eR8u, RWImg2DMS +#define RWUImg2DMSArrayR8 ast::type::ImageFormat::eR8u, RWImg2DMSArray +#define RWUImg1DR16 ast::type::ImageFormat::eR16u, RWImg1D +#define RWUImg2DR16 ast::type::ImageFormat::eR16u, RWImg2D +#define RWUImg3DR16 ast::type::ImageFormat::eR16u, RWImg3D +#define RWUImgCubeR16 ast::type::ImageFormat::eR16u, RWImgCube +#define RWUImgBufferR16 ast::type::ImageFormat::eR16u, RWImgBuffer +#define RWUImg1DArrayR16 ast::type::ImageFormat::eR16u, RWImg1DArray +#define RWUImg2DArrayR16 ast::type::ImageFormat::eR16u, RWImg2DArray +#define RWUImgCubeArrayR16 ast::type::ImageFormat::eR16u, RWImgCubeArray +#define RWUImg2DMSR16 ast::type::ImageFormat::eR16u, RWImg2DMS +#define RWUImg2DMSArrayR16 ast::type::ImageFormat::eR16u, RWImg2DMSArray +#define RWUImg1DR32 ast::type::ImageFormat::eR32u, RWImg1D +#define RWUImg2DR32 ast::type::ImageFormat::eR32u, RWImg2D +#define RWUImg3DR32 ast::type::ImageFormat::eR32u, RWImg3D +#define RWUImgCubeR32 ast::type::ImageFormat::eR32u, RWImgCube +#define RWUImgBufferR32 ast::type::ImageFormat::eR32u, RWImgBuffer +#define RWUImg1DArrayR32 ast::type::ImageFormat::eR32u, RWImg1DArray +#define RWUImg2DArrayR32 ast::type::ImageFormat::eR32u, RWImg2DArray +#define RWUImgCubeArrayR32 ast::type::ImageFormat::eR32u, RWImgCubeArray +#define RWUImg2DMSR32 ast::type::ImageFormat::eR32u, RWImg2DMS +#define RWUImg2DMSArrayR32 ast::type::ImageFormat::eR32u, RWImg2DMSArray #include "ImageConfiguration.inl" diff --git a/include/ShaderWriter/Intrinsics/Intrinsics.inl b/include/ShaderWriter/Intrinsics/Intrinsics.inl index 04a06a91..7251a84e 100644 --- a/include/ShaderWriter/Intrinsics/Intrinsics.inl +++ b/include/ShaderWriter/Intrinsics/Intrinsics.inl @@ -80,634 +80,472 @@ namespace sdw static constexpr type::Kind componentsTypeKindV = TypeKindGetterT< std::remove_cvref_t< ValuesT >... >::value; } - template< typename ... ValuesT > - inline Vec2 vec2( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Vec2T< ComponentT > vec2T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 2u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Vec2T< ComponentT > > + && ( details::componentsCountV< ValuesT... > == 3u || details::componentsCountV< ValuesT... > == 4u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Vec2 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Vec2T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Vec3 vec3( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Vec3T< ComponentT > vec3T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 3u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Vec3 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Vec3T< ComponentT > > && details::componentsCountV< ValuesT... > == 4u ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Vec3 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Vec3T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Vec4 vec4( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Vec4T< ComponentT > vec4T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 4u || details::componentsCountV< ValuesT... > == 1u ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Vec4 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Vec4T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Vec2 vec2( ValuesT && ... values ) + { + return vec2T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Vec3 vec3( ValuesT && ... values ) + { + return vec3T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Vec4 vec4( ValuesT && ... values ) + { + return vec4T< Float >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DVec2 dvec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DVec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DVec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DVec3 dvec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DVec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DVec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DVec4 dvec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DVec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline HVec2 f16vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< HVec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< HVec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Half >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline HVec4 f16vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< HVec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Half >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I8Vec2 i8vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I8Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I8Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Int8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I8Vec3 i8vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I8Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I8Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Int8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I8Vec4 i8vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I8Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Int8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I16Vec2 i16vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I16Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I16Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Int16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I16Vec3 i16vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I16Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I16Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Int16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I16Vec4 i16vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I16Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Int16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I32Vec2 i32vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I32Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I32Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Int32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I32Vec3 i32vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I32Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I32Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Int32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I32Vec4 i32vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I32Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Int32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I64Vec2 i64vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I64Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I64Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Int64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I64Vec3 i64vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< I64Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I64Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Int64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline I64Vec4 i64vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< I64Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Int64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U8Vec2 u8vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U8Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U8Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< UInt8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U8Vec3 u8vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U8Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U8Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< UInt8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U8Vec4 u8vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U8Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< UInt8 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U16Vec2 u16vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U16Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U16Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< UInt16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U16Vec3 u16vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U16Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U16Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< UInt16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U16Vec4 u16vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U16Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< UInt16 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U32Vec2 u32vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U32Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U32Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< UInt32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U32Vec3 u32vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U32Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U32Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< UInt32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U32Vec4 u32vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U32Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< UInt32 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U64Vec2 u64vec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U64Vec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U64Vec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< UInt64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U64Vec3 u64vec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< U64Vec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U64Vec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< UInt64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline U64Vec4 u64vec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< U64Vec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< UInt64 >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline BVec2 bvec2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 2u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< BVec2 > - && ( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 4u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< BVec2 >( writer, std::forward< ValuesT >( values )... ); + return vec2T< Boolean >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline BVec3 bvec3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 3u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< BVec3 > - && details::componentsCountV< ValuesT... > == 4u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< BVec3 >( writer, std::forward< ValuesT >( values )... ); + return vec3T< Boolean >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline BVec4 bvec4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< BVec4 >( writer, std::forward< ValuesT >( values )... ); + return vec4T< Boolean >( std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat2x2 mat2x2( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat2x2T< ComponentT > mat2x2T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 4u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x2 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x2T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 6u // 2x3 or 3x2 || details::componentsCountV< ValuesT... > == 8u // 2x4 or 4x2 || details::componentsCountV< ValuesT... > == 9u // 3x3 || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat2x2 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat2x2T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat2x3 mat2x3( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat2x3T< ComponentT > mat2x3T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 6u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x3 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x3T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 8u // 2x4 || details::componentsCountV< ValuesT... > == 9u // 3x3 || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat2x3 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat2x3T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat2x4 mat2x4( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat2x4T< ComponentT > mat2x4T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 8u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x4 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat2x4T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 12u // 3x4 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat2x4 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat2x4T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat3x2 mat3x2( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat3x2T< ComponentT > mat3x2T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 6u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x2 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x2T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 8u // 4x2 || details::componentsCountV< ValuesT... > == 9u // 3x3 || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat3x2 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat3x2T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat3x3 mat3x3( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat3x3T< ComponentT > mat3x3T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 9u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x3 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x3T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat3x3 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat3x3T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat3x4 mat3x4( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat3x4T< ComponentT > mat3x4T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 12u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x4 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat3x4T< ComponentT > > && details::componentsCountV< ValuesT... > == 16u ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat3x4 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat3x4T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat4x2 mat4x2( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat4x2T< ComponentT > mat4x2T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 8u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat4x2 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat4x2T< ComponentT > > && ( details::componentsCountV< ValuesT... > == 12u // 4x3 || details::componentsCountV< ValuesT... > == 16u ) ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat4x2 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat4x2T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat4x3 mat4x3( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat4x3T< ComponentT > mat4x3T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 12u || details::componentsCountV< ValuesT... > == 1u || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat4x3 > + && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< Mat4x3T< ComponentT > > && details::componentsCountV< ValuesT... > == 16u ) ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat4x3 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat4x3T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); } - template< typename ... ValuesT > - inline Mat4x4 mat4x4( ValuesT && ... values ) + template< typename ComponentT, typename ... ValuesT > + inline Mat4x4T< ComponentT > mat4x4T( ValuesT && ... values ) { static_assert( details::componentsCountV< ValuesT... > == 16u ); auto & writer = findWriterMandat( values... ); - return getCtorCall< Mat4x4 >( writer, std::forward< ValuesT >( values )... ); + return getCtorCall< Mat4x4T< ComponentT > >( writer, std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat2x2 mat2x2( ValuesT && ... values ) + { + return mat2x2T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat2x3 mat2x3( ValuesT && ... values ) + { + return mat2x3T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat2x4 mat2x4( ValuesT && ... values ) + { + return mat2x4T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat3x2 mat3x2( ValuesT && ... values ) + { + return mat3x2T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat3x3 mat3x3( ValuesT && ... values ) + { + return mat3x3T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat3x4 mat3x4( ValuesT && ... values ) + { + return mat3x4T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat4x2 mat4x2( ValuesT && ... values ) + { + return mat4x2T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat4x3 mat4x3( ValuesT && ... values ) + { + return mat4x3T< Float >( std::forward< ValuesT >( values )... ); + } + + template< typename ... ValuesT > + inline Mat4x4 mat4x4( ValuesT && ... values ) + { + return mat4x4T< Float >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat2x2 dmat2x2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 4u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat2x2 > - && ( details::componentsCountV< ValuesT... > == 6u // 2x3 or 3x2 - || details::componentsCountV< ValuesT... > == 8u // 2x4 or 4x2 - || details::componentsCountV< ValuesT... > == 9u // 3x3 - || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat2x2 >( writer, std::forward< ValuesT >( values )... ); + return mat2x2T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat2x3 dmat2x3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 6u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat2x3 > - && ( details::componentsCountV< ValuesT... > == 8u // 2x4 - || details::componentsCountV< ValuesT... > == 9u // 3x3 - || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat2x3 >( writer, std::forward< ValuesT >( values )... ); + return mat2x3T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat2x4 dmat2x4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 8u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat2x4 > - && ( details::componentsCountV< ValuesT... > == 12u // 3x4 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat2x4 >( writer, std::forward< ValuesT >( values )... ); + return mat2x4T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat3x2 dmat3x2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 6u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat3x2 > - && ( details::componentsCountV< ValuesT... > == 8u // 4x2 - || details::componentsCountV< ValuesT... > == 9u // 3x3 - || details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat3x2 >( writer, std::forward< ValuesT >( values )... ); + return mat3x2T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat3x3 dmat3x3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 9u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat3x3 > - && ( details::componentsCountV< ValuesT... > == 12u // 3x4 or 4x3 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat3x3 >( writer, std::forward< ValuesT >( values )... ); + return mat3x3T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat3x4 dmat3x4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 12u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat3x4 > - && details::componentsCountV< ValuesT... > == 16u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat3x4 >( writer, std::forward< ValuesT >( values )... ); + return mat3x4T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat4x2 dmat4x2( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 8u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat4x2 > - && ( details::componentsCountV< ValuesT... > == 12u // 4x3 - || details::componentsCountV< ValuesT... > == 16u ) ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat4x2 >( writer, std::forward< ValuesT >( values )... ); + return mat4x2T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat4x3 dmat4x3( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 12u - || details::componentsCountV< ValuesT... > == 1u - || ( details::valuesCountV< ValuesT... > == 1u - && details::componentsTypeKindV< ValuesT ... > == details::componentsTypeKindV< DMat4x3 > - && details::componentsCountV< ValuesT... > == 16u ) ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat4x3 >( writer, std::forward< ValuesT >( values )... ); + return mat4x3T< Double >( std::forward< ValuesT >( values )... ); } template< typename ... ValuesT > inline DMat4x4 dmat4x4( ValuesT && ... values ) { - static_assert( details::componentsCountV< ValuesT... > == 16u ); - auto & writer = findWriterMandat( values... ); - return getCtorCall< DMat4x4 >( writer, std::forward< ValuesT >( values )... ); + return mat4x4T< Double >( std::forward< ValuesT >( values )... ); } template< ValueT ValT >