aboutsummaryrefslogtreecommitdiff
path: root/assets/shaders/generated/sphere.glsl
blob: 8580c9e005c53d3fb4d64bdd870cece8b892fec6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#type vertex
#version 410

layout(std140) uniform Sphere
{
    layout(row_major) mat4 u_view_projection;
    layout(row_major) mat4 u_transform;
    vec3 u_color;
    float u_specular;
    float u_emission;
    vec3 u_light_pos;
    vec3 u_camera_pos;
    int u_is_selected;
    vec3 u_outline_color;
    float u_outline_width;
} su;

layout(location = 0) in vec3 input_position;
layout(location = 1) in vec3 input_normal;
layout(location = 0) out vec3 _v0;
layout(location = 1) out vec3 _v1;

mat4 spvWorkaroundRowMajor(mat4 wrap) { return wrap; }

void main()
{
    vec3 _29 = (vec4(input_position, 1.0) * spvWorkaroundRowMajor(su.u_transform)).xyz;
    gl_Position = vec4(_29, 1.0) * spvWorkaroundRowMajor(su.u_view_projection);
    _v0 = input_normal * mat3(spvWorkaroundRowMajor(su.u_transform)[0].xyz, spvWorkaroundRowMajor(su.u_transform)[1].xyz, spvWorkaroundRowMajor(su.u_transform)[2].xyz);
    _v1 = _29;
}


#type fragment
#version 410

layout(std140) uniform Sphere
{
    layout(row_major) mat4 u_view_projection;
    layout(row_major) mat4 u_transform;
    vec3 u_color;
    float u_specular;
    float u_emission;
    vec3 u_light_pos;
    vec3 u_camera_pos;
    int u_is_selected;
    vec3 u_outline_color;
    float u_outline_width;
} su;

uniform samplerCube u_HDRIEnvironment;

layout(location = 0) in vec3 _v0;
layout(location = 1) in vec3 _v1;
layout(location = 0) out vec4 entryPointParam_fragmentMain;

void main()
{
    vec3 _15 = normalize(_v0);
    vec3 _30 = normalize(su.u_light_pos - _v1);
    vec3 _36 = normalize(su.u_camera_pos - _v1);
    vec4 _sampled = texture(u_HDRIEnvironment, _15);
    vec3 result_1 = ((su.u_color * (vec3(max(dot(_15, _30), 0.0)) + (_sampled.xyz * 0.300000011920928955078125))) + (vec3(su.u_specular, su.u_specular, su.u_specular) * pow(max(dot(_36, reflect(-_30, _15)), 0.0), 32.0))) + (su.u_color * su.u_emission);
    vec3 result;
    if (su.u_is_selected > 0)
    {
        result = mix(result_1, su.u_outline_color, vec3(step(1.0 - su.u_outline_width, 1.0 - max(dot(_15, _36), 0.0))));
    }
    else
    {
        result = result_1;
    }
    entryPointParam_fragmentMain = vec4(result, 1.0);
}