[Vulkan]GLSL language integration 支持

下载插件

请直接参考这个教程:

Visual Studio 设置 shader(CG 、GLSL)语法提示及高亮和显示行号 使用 GLSL language integration 插件_shader 使用 studio 显示行数-CSDN 博客

添加 Vulkan 支持

配置完插件后,插件只支持 OpenGL 相关的关键字/变量

想要支持 Vulkan 相关的(比如:gl_VertexIndex、推送常量等等)

在工具->选项中按照以下内容进行配置

这里方便你直接复制:

TEXT
–target-env vulkan1.2
%VK_SDK_PATH%\Bin\glslangValidator.exe

注意: VK_SDK_PATH 这个环境变量要装了 LunarG 的 SDK 才有(装的时候自动生成的)。总之给出 glslangValidator 的路径就是了

Vulkan

[Vulkan]应用开发指南勘误

以下提及的内容来自李晓波翻译版本(19 年印)

2.3.4 稀疏资源(P62)

调用 vkGetImageSparseMemoryRequirements 时,参数中的图像创建时除了带有 VK_IMAGE_CREATE_SPARSE_BINDING_BIT 以外,还需要带有 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT (以及实例创建时需要指定相关的 Feature)

Vulkan

[OpenGL]纹理数组的一些小细节

以二维纹理数组为例

GLSL
texture(tex, vec3(x, y, index))

实际会取到的纹理由 index 四舍五入得到。此外,index 使用时会被限制在 0~数组大小–1 之间

如果有一个三层的纹理数组

index 为-1 则取第一个;为 1.2 取第二个;为 1.9 取第三个(你可以理解为强制 GL_NEAREST)

OpenGL


[GLSL]HSV 转为 RGB

GLSL
vec3 rgb(float h, float s, float v)
{
    int hi = int(mod(floor(h / 60), 6));
    float f = h / 60 - hi;
    float p = v * (1 - s);
    float q = v * (1 - f * s);
    float t = v * (1 - (1 - f) * s);
    switch(hi)
    {
    case 0:
        return vec3(v, t, p);
    case 1:
        return vec3(q, v, p);
    case 2:
        return vec3(p, v, t);
    case 3:
        return vec3(p, q, v);
    case 4:
        return vec3(t, p, v);
    case 5:
        return vec3(v, p, q);
    }
}

参考:颜色空间 RGB 与 HSV(HSL)的转换_hsb 色彩模式圆椎形-CSDN 博客

OpenGL