projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
03aada7
)
fix some errors
author
hgn
<hgodden00@gmail.com>
Sat, 28 Jan 2023 04:46:11 +0000
(
04:46
+0000)
committer
hgn
<hgodden00@gmail.com>
Sat, 28 Jan 2023 04:46:11 +0000
(
04:46
+0000)
common.h
patch
|
blob
|
history
player_device_skate.h
patch
|
blob
|
history
player_interface.h
patch
|
blob
|
history
shaders/fscolour.h
patch
|
blob
|
history
shaders/gate.h
patch
|
blob
|
history
shaders/planeinf.h
patch
|
blob
|
history
shaders/viewchar.fs
patch
|
blob
|
history
shaders/viewchar.h
patch
|
blob
|
history
diff --git
a/common.h
b/common.h
index a7cb78fc7c1d89f490945cf9cfa0a3a7b69a481b..a8d0e868e9dfafa729a4c748f7e41e1ae1baabff 100644
(file)
--- a/
common.h
+++ b/
common.h
@@
-117,7
+117,7
@@
VG_STATIC float
k_pitch_limit = 1.5f,
k_look_speed = 2.0f,
k_pitch_limit = 1.5f,
k_look_speed = 2.0f,
- k_spin_boost =
1.5
f,
+ k_spin_boost =
2.2
f,
k_cog_spring = 0.2f,
k_cog_damp = 0.02f,
k_cog_spring = 0.2f,
k_cog_damp = 0.02f,
diff --git
a/player_device_skate.h
b/player_device_skate.h
index 62c21210b9bd29fd9e89950ec57058c54fe51b59..5370c291d7e98b384b99cfa156f9e50e9f414666 100644
(file)
--- a/
player_device_skate.h
+++ b/
player_device_skate.h
@@
-1149,6
+1149,14
@@
VG_STATIC void player_skate_update( player_interface *player,
skate_apply_air_model( player, s );
skate_integrate( player, s );
skate_apply_air_model( player, s );
skate_integrate( player, s );
+
+ vg_line_pt3( s->state.cog, 0.1f, VG__WHITE );
+ vg_line_pt3( s->state.cog, 0.11f, VG__WHITE );
+ vg_line_pt3( s->state.cog, 0.12f, VG__WHITE );
+ vg_line_pt3( s->state.cog, 0.13f, VG__WHITE );
+ vg_line_pt3( s->state.cog, 0.14f, VG__WHITE );
+
+ vg_line( player->rb.co, s->state.cog, VG__RED );
}
VG_STATIC void player_skate_post_update( player_interface *player,
}
VG_STATIC void player_skate_post_update( player_interface *player,
@@
-1211,6
+1219,9
@@
VG_STATIC void player_skate_pose( player_interface *player,
v3f offset;
v3_zero( offset );
v3f offset;
v3_zero( offset );
+ m4x3_mulv( player->rb.to_local, s->state.cog, offset );
+ v3_muls( offset, -4.0f, offset );
+
#if 0
m3x3_mulv( player.inv_visual_transform, phys->bob, offset );
#endif
#if 0
m3x3_mulv( player.inv_visual_transform, phys->bob, offset );
#endif
@@
-1428,7
+1439,7
@@
VG_STATIC void player_skate_get_camera( player_interface *player,
look_dir;
v3_copy( player->rb.v, vel_dir );
look_dir;
v3_copy( player->rb.v, vel_dir );
- v3_normalize( vel_dir );
+
//
v3_normalize( vel_dir );
float tti = s->land_dist;
v3f norm;
float tti = s->land_dist;
v3f norm;
@@
-1440,12
+1451,11
@@
VG_STATIC void player_skate_get_camera( player_interface *player,
v3_copy( player->rb.to_world[1], norm );
}
v3_copy( player->rb.to_world[1], norm );
}
-
v3_muladds( vel_dir, norm, -v3_dot(vel_dir,norm), flat_dir );
v3_muladds( vel_dir, norm, -v3_dot(vel_dir,norm), flat_dir );
- v3_normalize( flat_dir );
+
//
v3_normalize( flat_dir );
v3_lerp( flat_dir, vel_dir, vg_clampf( tti / 2.0f, 0.4f, 1.0f ), look_dir );
v3_lerp( flat_dir, vel_dir, vg_clampf( tti / 2.0f, 0.4f, 1.0f ), look_dir );
- v3_lerp( s->state.vl, look_dir,
8
.0f*vg.time_delta, s->state.vl );
+ v3_lerp( s->state.vl, look_dir,
4
.0f*vg.time_delta, s->state.vl );
float *v = s->state.vl,
yaw = atan2f( v[0], -v[2] ),
float *v = s->state.vl,
yaw = atan2f( v[0], -v[2] ),
@@
-1470,18
+1480,28
@@
VG_STATIC void player_skate_transport( player_interface *player,
struct player_device_skate *s = at->storage;
m4x3_mulv( gate->transport, player->rb.co, player->rb.co );
struct player_device_skate *s = at->storage;
m4x3_mulv( gate->transport, player->rb.co, player->rb.co );
+ m3x3_mulv( gate->transport, player->rb.v, player->rb.v );
m4x3_mulv( gate->transport, s->state.cog, s->state.cog );
m3x3_mulv( gate->transport, s->state.cog_v, s->state.cog_v );
m4x3_mulv( gate->transport, s->state.cog, s->state.cog );
m3x3_mulv( gate->transport, s->state.cog_v, s->state.cog_v );
- m3x3_mulv( gate->transport, player->rb.v, player->rb.v );
m3x3_mulv( gate->transport, s->state.vl, s->state.vl );
m3x3_mulv( gate->transport, s->state.vl, s->state.vl );
+ m3x3_mulv( gate->transport, s->state.throw_v, s->state.throw_v );
v4f transport_rotation;
m3x3_q( gate->transport, transport_rotation );
q_mul( transport_rotation, player->rb.q, player->rb.q );
v4f transport_rotation;
m3x3_q( gate->transport, transport_rotation );
q_mul( transport_rotation, player->rb.q, player->rb.q );
+ rb_update_transform( &player->rb );
s->state_gate_storage = s->state;
}
s->state_gate_storage = s->state;
}
+VG_STATIC void player_skate_reset( player_interface *player,
+ player_attachment *at,
+ struct respawn_point *rp )
+{
+ struct player_device_skate *s = at->storage;
+ v3_muladds( player->rb.co, player->rb.to_world[1], 1.0f, s->state.cog );
+}
+
VG_STATIC player_device player_device_skate =
{
.pre_update = player_skate_pre_update,
VG_STATIC player_device player_device_skate =
{
.pre_update = player_skate_pre_update,
@@
-1491,7
+1511,8
@@
VG_STATIC player_device player_device_skate =
.debug_ui = player_skate_ui,
.bind = player_skate_bind,
.pose = player_skate_pose,
.debug_ui = player_skate_ui,
.bind = player_skate_bind,
.pose = player_skate_pose,
- .gate_transport= player_skate_transport
+ .gate_transport= player_skate_transport,
+ .reset = player_skate_reset
};
#endif /* PLAYER_DEVICE_SKATE_H */
};
#endif /* PLAYER_DEVICE_SKATE_H */
diff --git
a/player_interface.h
b/player_interface.h
index 1b9e16bc6b59528681d277fc0caee1b1a1c43846..a4be40ed5177fe1a0fde9048a7c18d25740c9490 100644
(file)
--- a/
player_interface.h
+++ b/
player_interface.h
@@
-310,6
+310,9
@@
VG_STATIC void player_spawn( player_interface *player,
v3_zero( player->rb.w );
q_identity( player->rb.q );
rb_update_transform( &player->rb );
v3_zero( player->rb.w );
q_identity( player->rb.q );
rb_update_transform( &player->rb );
+
+ if( player->dev.device->reset )
+ player->dev.device->reset( player, &player->dev, rp );
}
/*
}
/*
diff --git
a/shaders/fscolour.h
b/shaders/fscolour.h
index 7318cac89d044434f05b4ef95c683ce35e3b3962..08fe21edb838ab280fde040862da9265845dd59f 100644
(file)
--- a/
shaders/fscolour.h
+++ b/
shaders/fscolour.h
@@
-7,6
+7,7
@@
static struct vg_shader _shader_fscolour = {
.link = shader_fscolour_link,
.vs =
{
.link = shader_fscolour_link,
.vs =
{
+.orig_file = "../../shaders/blit.vs",
.static_src =
"layout (location=0) in vec2 a_co;\n"
"out vec2 aUv;\n"
.static_src =
"layout (location=0) in vec2 a_co;\n"
"out vec2 aUv;\n"
@@
-19,6
+20,7
@@
static struct vg_shader _shader_fscolour = {
""},
.fs =
{
""},
.fs =
{
+.orig_file = "../../shaders/colour.fs",
.static_src =
"out vec4 FragColor;\n"
"uniform vec4 uColour;\n"
.static_src =
"out vec4 FragColor;\n"
"uniform vec4 uColour;\n"
@@
-34,7
+36,7
@@
static struct vg_shader _shader_fscolour = {
static GLuint _uniform_fscolour_uColour;
static void shader_fscolour_uColour(v4f v){
static GLuint _uniform_fscolour_uColour;
static void shader_fscolour_uColour(v4f v){
- glUniform4fv(
_uniform_fscolour_uColour,1,v
);
+ glUniform4fv(
_uniform_fscolour_uColour, 1, v
);
}
static void shader_fscolour_register(void){
vg_shader_register( &_shader_fscolour );
}
static void shader_fscolour_register(void){
vg_shader_register( &_shader_fscolour );
diff --git
a/shaders/gate.h
b/shaders/gate.h
index 7b5b31f4dd2d31a0a44bf1e55a64db6b55ceb8ce..51eb312d2af53053f600b08fa3d982855c522b14 100644
(file)
--- a/
shaders/gate.h
+++ b/
shaders/gate.h
@@
-7,6
+7,7
@@
static struct vg_shader _shader_gate = {
.link = shader_gate_link,
.vs =
{
.link = shader_gate_link,
.vs =
{
+.orig_file = "../../shaders/gate.vs",
.static_src =
"layout (location=0) in vec3 a_co;\n"
"layout (location=1) in vec3 a_norm;\n"
.static_src =
"layout (location=0) in vec3 a_co;\n"
"layout (location=1) in vec3 a_norm;\n"
@@
-35,6
+36,7
@@
static struct vg_shader _shader_gate = {
""},
.fs =
{
""},
.fs =
{
+.orig_file = "../../shaders/gate.fs",
.static_src =
"out vec4 FragColor;\n"
"\n"
.static_src =
"out vec4 FragColor;\n"
"\n"
@@
-74,25
+76,25
@@
static GLuint _uniform_gate_uInvRes;
static GLuint _uniform_gate_uTime;
static GLuint _uniform_gate_uCam;
static void shader_gate_uPv(m4x4f m){
static GLuint _uniform_gate_uTime;
static GLuint _uniform_gate_uCam;
static void shader_gate_uPv(m4x4f m){
- glUniformMatrix4fv(
_uniform_gate_uPv,1,GL_FALSE,(float*)m
);
+ glUniformMatrix4fv(
_uniform_gate_uPv, 1, GL_FALSE, (float *)m
);
}
static void shader_gate_uMdl(m4x3f m){
}
static void shader_gate_uMdl(m4x3f m){
- glUniformMatrix4x3fv(
_uniform_gate_uMdl,1,GL_FALSE,(float*)m
);
+ glUniformMatrix4x3fv(
_uniform_gate_uMdl, 1, GL_FALSE, (float *)m
);
}
static void shader_gate_uTexMain(int i){
}
static void shader_gate_uTexMain(int i){
- glUniform1i(
_uniform_gate_uTexMain,i
);
+ glUniform1i(
_uniform_gate_uTexMain, i
);
}
static void shader_gate_uTexWater(int i){
}
static void shader_gate_uTexWater(int i){
- glUniform1i(
_uniform_gate_uTexWater,i
);
+ glUniform1i(
_uniform_gate_uTexWater, i
);
}
static void shader_gate_uInvRes(v2f v){
}
static void shader_gate_uInvRes(v2f v){
- glUniform2fv(
_uniform_gate_uInvRes,1,v
);
+ glUniform2fv(
_uniform_gate_uInvRes, 1, v
);
}
static void shader_gate_uTime(float f){
}
static void shader_gate_uTime(float f){
- glUniform1f(
_uniform_gate_uTime,f
);
+ glUniform1f(
_uniform_gate_uTime, f
);
}
static void shader_gate_uCam(v3f v){
}
static void shader_gate_uCam(v3f v){
- glUniform3fv(
_uniform_gate_uCam,1,v
);
+ glUniform3fv(
_uniform_gate_uCam, 1, v
);
}
static void shader_gate_register(void){
vg_shader_register( &_shader_gate );
}
static void shader_gate_register(void){
vg_shader_register( &_shader_gate );
diff --git
a/shaders/planeinf.h
b/shaders/planeinf.h
index e61776898ba2336214378d90d1de6ca594f2ab4d..4bd7e86eb06b1824dff68abc9e1fc48f4bb5d3ef 100644
(file)
--- a/
shaders/planeinf.h
+++ b/
shaders/planeinf.h
@@
-7,6
+7,7
@@
static struct vg_shader _shader_planeinf = {
.link = shader_planeinf_link,
.vs =
{
.link = shader_planeinf_link,
.vs =
{
+.orig_file = "../../shaders/standard.vs",
.static_src =
"layout (location=0) in vec3 a_co;\n"
"layout (location=1) in vec3 a_norm;\n"
.static_src =
"layout (location=0) in vec3 a_co;\n"
"layout (location=1) in vec3 a_norm;\n"
@@
-16,11
+17,29
@@
static struct vg_shader _shader_planeinf = {
"layout (location=5) in ivec4 a_groups;\n"
"\n"
"#line 2 0 \n"
"layout (location=5) in ivec4 a_groups;\n"
"\n"
"#line 2 0 \n"
+"#line 1 2 \n"
+"const float k_motion_lerp_amount = 0.01;\n"
+"\n"
+"#line 2 0 \n"
+"\n"
+"out vec3 aMotionVec0;\n"
+"out vec3 aMotionVec1;\n"
+"\n"
+"void vs_motion_out( vec4 vproj0, vec4 vproj1 )\n"
+"{\n"
+" // This magically solves some artifacting errors!\n"
+" //\n"
+" vproj1 = vproj0*(1.0-k_motion_lerp_amount) + vproj1*k_motion_lerp_amount;\n"
+"\n"
+" aMotionVec0 = vec3( vproj0.xy, vproj0.w );\n"
+" aMotionVec1 = vec3( vproj1.xy, vproj1.w );\n"
+"}\n"
+"\n"
+"#line 3 0 \n"
"\n"
"uniform mat4x3 uMdl;\n"
"uniform mat4 uPv;\n"
"\n"
"uniform mat4x3 uMdl;\n"
"uniform mat4 uPv;\n"
-"\n"
-"uniform mat4x3 uMotion;\n"
+"uniform mat4 uPvmPrev;\n"
"\n"
"out vec4 aColour;\n"
"out vec2 aUv;\n"
"\n"
"out vec4 aColour;\n"
"out vec2 aUv;\n"
@@
-28,19
+47,13
@@
static struct vg_shader _shader_planeinf = {
"out vec3 aCo;\n"
"out vec3 aWorldCo;\n"
"\n"
"out vec3 aCo;\n"
"out vec3 aWorldCo;\n"
"\n"
-"out vec3 aMotionVec0;\n"
-"out vec3 aMotionVec1;\n"
-"\n"
"void main()\n"
"{\n"
"void main()\n"
"{\n"
-" vec3 world_pos0 = uMdl * vec4(a_co,1.0);\n"
-" vec3 world_pos1 = uMotion * vec4(world_pos0,1.0);\n"
-" \n"
-" vec4 vproj0 = uPv * vec4( world_pos0, 1.0 );\n"
-" vec4 vproj1 = uPv * vec4( world_pos1, 1.0 );\n"
+" vec3 world_pos0 = uMdl * vec4( a_co, 1.0 );\n"
+" vec4 vproj0 = uPv * vec4( world_pos0, 1.0 );\n"
+" vec4 vproj1 = uPvmPrev * vec4( a_co, 1.0 );\n"
"\n"
"\n"
-" aMotionVec0 = vec3( vproj0.xy, vproj0.w );\n"
-" aMotionVec1 = vec3( vproj1.xy, vproj1.w );\n"
+" vs_motion_out( vproj0, vproj1 );\n"
"\n"
" gl_Position = vproj0;\n"
" aWorldCo = world_pos0;\n"
"\n"
" gl_Position = vproj0;\n"
" aWorldCo = world_pos0;\n"
@@
-52,6
+65,7
@@
static struct vg_shader _shader_planeinf = {
""},
.fs =
{
""},
.fs =
{
+.orig_file = "../../shaders/planeinf.fs",
.static_src =
"\n"
"#line 2 0 \n"
.static_src =
"\n"
"#line 2 0 \n"
@@
-85,23
+99,23
@@
static struct vg_shader _shader_planeinf = {
static GLuint _uniform_planeinf_uMdl;
static GLuint _uniform_planeinf_uPv;
static GLuint _uniform_planeinf_uMdl;
static GLuint _uniform_planeinf_uPv;
-static GLuint _uniform_planeinf_u
Motion
;
+static GLuint _uniform_planeinf_u
PvmPrev
;
static GLuint _uniform_planeinf_uCamera;
static GLuint _uniform_planeinf_uPlane;
static void shader_planeinf_uMdl(m4x3f m){
static GLuint _uniform_planeinf_uCamera;
static GLuint _uniform_planeinf_uPlane;
static void shader_planeinf_uMdl(m4x3f m){
- glUniformMatrix4x3fv(
_uniform_planeinf_uMdl,1,GL_FALSE,(float*)m
);
+ glUniformMatrix4x3fv(
_uniform_planeinf_uMdl, 1, GL_FALSE, (float *)m
);
}
static void shader_planeinf_uPv(m4x4f m){
}
static void shader_planeinf_uPv(m4x4f m){
- glUniformMatrix4fv(
_uniform_planeinf_uPv,1,GL_FALSE,(float*)m
);
+ glUniformMatrix4fv(
_uniform_planeinf_uPv, 1, GL_FALSE, (float *)m
);
}
}
-static void shader_planeinf_u
Motion(m4x3
f m){
- glUniformMatrix4
x3fv(_uniform_planeinf_uMotion,1,GL_FALSE,(float*)m
);
+static void shader_planeinf_u
PvmPrev(m4x4
f m){
+ glUniformMatrix4
fv( _uniform_planeinf_uPvmPrev, 1, GL_FALSE, (float *)m
);
}
static void shader_planeinf_uCamera(v3f v){
}
static void shader_planeinf_uCamera(v3f v){
- glUniform3fv(
_uniform_planeinf_uCamera,1,v
);
+ glUniform3fv(
_uniform_planeinf_uCamera, 1, v
);
}
static void shader_planeinf_uPlane(v4f v){
}
static void shader_planeinf_uPlane(v4f v){
- glUniform4fv(
_uniform_planeinf_uPlane,1,v
);
+ glUniform4fv(
_uniform_planeinf_uPlane, 1, v
);
}
static void shader_planeinf_register(void){
vg_shader_register( &_shader_planeinf );
}
static void shader_planeinf_register(void){
vg_shader_register( &_shader_planeinf );
@@
-110,7
+124,7
@@
static void shader_planeinf_use(void){ glUseProgram(_shader_planeinf.id); }
static void shader_planeinf_link(void){
_uniform_planeinf_uMdl = glGetUniformLocation( _shader_planeinf.id, "uMdl" );
_uniform_planeinf_uPv = glGetUniformLocation( _shader_planeinf.id, "uPv" );
static void shader_planeinf_link(void){
_uniform_planeinf_uMdl = glGetUniformLocation( _shader_planeinf.id, "uMdl" );
_uniform_planeinf_uPv = glGetUniformLocation( _shader_planeinf.id, "uPv" );
- _uniform_planeinf_u
Motion = glGetUniformLocation( _shader_planeinf.id, "uMotion
" );
+ _uniform_planeinf_u
PvmPrev = glGetUniformLocation( _shader_planeinf.id, "uPvmPrev
" );
_uniform_planeinf_uCamera = glGetUniformLocation( _shader_planeinf.id, "uCamera" );
_uniform_planeinf_uPlane = glGetUniformLocation( _shader_planeinf.id, "uPlane" );
}
_uniform_planeinf_uCamera = glGetUniformLocation( _shader_planeinf.id, "uCamera" );
_uniform_planeinf_uPlane = glGetUniformLocation( _shader_planeinf.id, "uPlane" );
}
diff --git
a/shaders/viewchar.fs
b/shaders/viewchar.fs
index f7e0370a06aeaa2c73a93d63198d166cef711968..fb98283b0d6dd080679f1074783fe9bf49d62f64 100644
(file)
--- a/
shaders/viewchar.fs
+++ b/
shaders/viewchar.fs
@@
-20,6
+20,7
@@
void main()
vec3 halfview = uCamera - aWorldCo;
float fdist = length( halfview );
halfview /= fdist;
vec3 halfview = uCamera - aWorldCo;
float fdist = length( halfview );
halfview /= fdist;
+ fdist -= 0.08;
vec3 qnorm = normalize(floor(aNorm*2.0)*0.5) + vec3(0.001,0.0,0.0);
vec3 qnorm = normalize(floor(aNorm*2.0)*0.5) + vec3(0.001,0.0,0.0);
@@
-28,6
+29,6
@@
void main()
vfrag = do_light_shadowing( vfrag );
vfrag = apply_fog( vfrag, fdist );
vfrag = do_light_shadowing( vfrag );
vfrag = apply_fog( vfrag, fdist );
- float opacity = clamp( fdist*fdist, 0.
1
, 1.0 );
+ float opacity = clamp( fdist*fdist, 0.
0
, 1.0 );
oColour = vec4(vfrag,opacity);
}
oColour = vec4(vfrag,opacity);
}
diff --git
a/shaders/viewchar.h
b/shaders/viewchar.h
index 604cae2534ba85af4b973e54d2d565de9b5e614e..f65b5eaa3eb27c02dc54c72855b65cf1978c3a28 100644
(file)
--- a/
shaders/viewchar.h
+++ b/
shaders/viewchar.h
@@
-223,6
+223,7
@@
static struct vg_shader _shader_viewchar = {
" vec3 halfview = uCamera - aWorldCo;\n"
" float fdist = length( halfview );\n"
" halfview /= fdist;\n"
" vec3 halfview = uCamera - aWorldCo;\n"
" float fdist = length( halfview );\n"
" halfview /= fdist;\n"
+" fdist -= 0.08;\n"
"\n"
" vec3 qnorm = normalize(floor(aNorm*2.0)*0.5) + vec3(0.001,0.0,0.0);\n"
"\n"
"\n"
" vec3 qnorm = normalize(floor(aNorm*2.0)*0.5) + vec3(0.001,0.0,0.0);\n"
"\n"
@@
-231,7
+232,7
@@
static struct vg_shader _shader_viewchar = {
" vfrag = do_light_shadowing( vfrag );\n"
" vfrag = apply_fog( vfrag, fdist );\n"
"\n"
" vfrag = do_light_shadowing( vfrag );\n"
" vfrag = apply_fog( vfrag, fdist );\n"
"\n"
-" float opacity = clamp( fdist*fdist, 0.
1
, 1.0 );\n"
+" float opacity = clamp( fdist*fdist, 0.
0
, 1.0 );\n"
" oColour = vec4(vfrag,opacity);\n"
"}\n"
""},
" oColour = vec4(vfrag,opacity);\n"
"}\n"
""},