mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
demos/gears: Add a gears demo.
This commit is contained in:
40
demos/gears.vert
Normal file
40
demos/gears.vert
Normal file
@@ -0,0 +1,40 @@
|
||||
#version 150
|
||||
#extension GL_ARB_separate_shader_objects : enable
|
||||
|
||||
layout(location = 0) in vec4 position_in;
|
||||
layout(location = 1) in vec3 normal_in;
|
||||
layout(location = 2) in vec3 diffuse_in;
|
||||
layout(location = 3) in vec4 transform_in;
|
||||
|
||||
layout(location = 0) out vec4 colour_out;
|
||||
|
||||
uniform gear_block
|
||||
{
|
||||
uniform mat4 mvp_matrix;
|
||||
uniform mat3 normal_matrix;
|
||||
} gear;
|
||||
|
||||
void main()
|
||||
{
|
||||
const vec3 l_pos = vec3(5.0, 5.0, 10.0);
|
||||
vec3 dir, normal;
|
||||
vec4 position;
|
||||
float att;
|
||||
|
||||
position.x = transform_in.x * position_in.x - transform_in.y * position_in.y + transform_in.z;
|
||||
position.y = transform_in.x * position_in.y + transform_in.y * position_in.x + transform_in.w;
|
||||
position.zw = position_in.zw;
|
||||
|
||||
gl_Position = gear.mvp_matrix * position;
|
||||
dir = normalize(l_pos - gl_Position.xyz / gl_Position.w);
|
||||
|
||||
normal.x = transform_in.x * normal_in.x - transform_in.y * normal_in.y;
|
||||
normal.y = transform_in.x * normal_in.y + transform_in.y * normal_in.x;
|
||||
normal.z = normal_in.z;
|
||||
att = 0.2 + dot(dir, normalize(gear.normal_matrix * normal));
|
||||
|
||||
colour_out.xyz = diffuse_in.xyz * att;
|
||||
colour_out.w = 1.0;
|
||||
|
||||
gl_Position.y = -gl_Position.y;
|
||||
}
|
||||
Reference in New Issue
Block a user