diff options
Diffstat (limited to 'assets/shaders/generated/sphere.glsl')
| -rw-r--r-- | assets/shaders/generated/sphere.glsl | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/assets/shaders/generated/sphere.glsl b/assets/shaders/generated/sphere.glsl new file mode 100644 index 0000000..8580c9e --- /dev/null +++ b/assets/shaders/generated/sphere.glsl @@ -0,0 +1,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); +} + + |
