projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
formatting
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world_water.h
diff --git
a/world_water.h
b/world_water.h
index 85f4b5debd4766d7ee81f1fb3f379d8454653347..a4f69672973a2676ce520756f7494e4158b7d7f1 100644
(file)
--- a/
world_water.h
+++ b/
world_water.h
@@
-1,3
+1,7
@@
+/*
+ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
+ */
+
#ifndef WATER_H
#define WATER_H
#ifndef WATER_H
#define WATER_H
@@
-26,18
+30,27
@@
wrender =
.fbdepth = { .format = GL_RGBA, .div = 4 }
};
.fbdepth = { .format = GL_RGBA, .div = 4 }
};
-static void world_water_
register
(void)
+static void world_water_
init
(void)
{
{
+ vg_info( "world_water_init\n" );
shader_water_register();
shader_water_register();
+
+ vg_acquire_thread_sync();
+ {
+ fb_init( &wrender.fbreflect );
+ fb_init( &wrender.fbdepth );
+
+ vg_tex2d_init( (vg_tex2d *[]){&tex_water_surf}, 1 );
+ vg_success( "done\n" );
+ }
+ vg_release_thread_sync();
}
}
-static void world_water_
init(void
)
+static void world_water_
free(void *_
)
{
{
- /* TODO: probably dont do this every time */
- wrender.enabled = 1;
-
- fb_init( &wrender.fbreflect );
- fb_init( &wrender.fbdepth );
+ vg_tex2d_free( (vg_tex2d *[]){&tex_water_surf}, 1 );
+ fb_free( &wrender.fbreflect );
+ fb_free( &wrender.fbdepth );
}
static void water_fb_resize(void)
}
static void water_fb_resize(void)
@@
-53,6
+66,7
@@
static void water_set_surface( glmesh *surf, float height )
{
wrender.mdl = *surf;
wrender.height = height;
{
wrender.mdl = *surf;
wrender.height = height;
+ wrender.enabled = 1;
v4_copy( (v4f){ 0.0f, 1.0f, 0.0f, height }, wrender.plane );
}
v4_copy( (v4f){ 0.0f, 1.0f, 0.0f, height }, wrender.plane );
}
@@
-94,7
+108,7
@@
static void render_water_texture( m4x3f camera )
m4x4f projection;
m4x4_projection( projection,
gpipeline.fov,
m4x4f projection;
m4x4_projection( projection,
gpipeline.fov,
- (float)vg
_window_x / (float)vg_
window_y,
+ (float)vg
.window_x / (float)vg.
window_y,
0.1f, 900.0f );
plane_clip_projection( projection, clippa );
m4x4_mul( projection, view, projection );
0.1f, 900.0f );
plane_clip_projection( projection, clippa );
m4x4_mul( projection, view, projection );
@@
-118,14
+132,14
@@
static void render_water_texture( m4x3f camera )
m4x4_projection( projection,
gpipeline.fov,
m4x4_projection( projection,
gpipeline.fov,
- (float)vg
_window_x / (float)vg_
window_y,
+ (float)vg
.window_x / (float)vg.
window_y,
0.1f, 900.0f );
plane_clip_projection( projection, clippb );
m4x4_mul( projection, view, projection );
render_world_depth( projection, camera );
0.1f, 900.0f );
plane_clip_projection( projection, clippb );
m4x4_mul( projection, view, projection );
render_world_depth( projection, camera );
- glViewport( 0, 0, vg
_window_x, vg_
window_y );
+ glViewport( 0, 0, vg
.window_x, vg.
window_y );
}
static void render_water_surface( m4x4f pv, m4x3f camera )
}
static void render_water_surface( m4x4f pv, m4x3f camera )
@@
-142,14
+156,14
@@
static void render_water_surface( m4x4f pv, m4x3f camera )
vg_tex2d_bind( &tex_water_surf, 1 );
shader_water_uTexDudv( 1 );
shader_water_uInvRes( (v2f){
vg_tex2d_bind( &tex_water_surf, 1 );
shader_water_uTexDudv( 1 );
shader_water_uInvRes( (v2f){
- 1.0f / (float)vg
_
window_x,
- 1.0f / (float)vg
_
window_y });
+ 1.0f / (float)vg
.
window_x,
+ 1.0f / (float)vg
.
window_y });
shader_link_standard_ub( _shader_water.id, 2 );
fb_bindtex( &wrender.fbdepth, 3 );
shader_water_uTexBack( 3 );
shader_link_standard_ub( _shader_water.id, 2 );
fb_bindtex( &wrender.fbdepth, 3 );
shader_water_uTexBack( 3 );
- shader_water_uTime( vg
_
time );
+ shader_water_uTime( vg
.
time );
shader_water_uCamera( camera[3] );
shader_water_uSurfaceY( wrender.height );
shader_water_uCamera( camera[3] );
shader_water_uSurfaceY( wrender.height );