• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 460 core
2#extension GL_ARB_separate_shader_objects : enable
3#extension GL_ARB_shading_language_420pack : enable
4
5// includes
6#include "render/shaders/common/render_compatibility_common.h"
7
8// sets
9#include "3d/shaders/common/3d_dm_env_frag_layout_common.h"
10
11struct CustomEnvProperties {
12    mat4 transMat;
13};
14layout(set = 1, binding = 0) uniform sampler2D uCustomSampler;
15layout(set = 1, binding = 1) uniform uCustomBuffer
16{
17    CustomEnvProperties customProperties;
18};
19layout(set = 1, binding = 2) uniform uCustomBuffer2
20{
21    CustomEnvProperties customProperties2;
22};
23layout(set = 1, binding = 3) uniform uCustomBuffer3
24{
25    CustomEnvProperties customProperties3;
26};
27
28// in / out
29
30layout(location = 0) out vec2 outUv;
31layout(location = 1) out flat uint outIndices; // packed camera
32
33/*
34 * Fullscreen env triangle.
35 */
36void main(void)
37{
38    float x = -1.0 + float((gl_VertexIndex & 1) << 2);
39    float y = 1.0 - float((gl_VertexIndex & 2) << 1);
40    CORE_VERTEX_OUT(vec4(x, y, 1.0, 1.0));
41    outUv = vec2(x, y);
42
43    const uint cameraIdx = GetUnpackCameraIndex(uGeneralData);
44    outIndices = GetPackFlatIndices(cameraIdx, 0);
45
46    vec4 normCoord = vec4((outUv + 1.0) * 0.5, 0.0, 1.0);
47    normCoord = transpose(customProperties.transMat) * normCoord;
48    outUv = normCoord.xy;
49}
50