projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
A complete workshop implementation, I guess
[carveJwlIkooP6JGAAIwe30JlM.git]
/
world_water.h
diff --git
a/world_water.h
b/world_water.h
index 22de2c9bfb01ee4c9b5c37ce0f55adf18277a403..14e3cd76409d3c472e7b22374982652f631d8de0 100644
(file)
--- a/
world_water.h
+++ b/
world_water.h
@@
-11,7
+11,7
@@
#include "shaders/scene_water_fast.h"
#include "scene.h"
#include "shaders/scene_water_fast.h"
#include "scene.h"
-
vg_tex2d tex_water_surf = { .path = "textures/water_surf.qoi" }
;
+
VG_STATIC GLuint tex_water_surf
;
VG_STATIC void world_water_init(void)
{
VG_STATIC void world_water_init(void)
{
@@
-19,11
+19,9
@@
VG_STATIC void world_water_init(void)
shader_scene_water_register();
shader_scene_water_fast_register();
shader_scene_water_register();
shader_scene_water_fast_register();
- vg_acquire_thread_sync();
- {
- vg_tex2d_init( (vg_tex2d *[]){&tex_water_surf}, 1 );
- }
- vg_release_thread_sync();
+ vg_tex2d_load_qoi_async_file( "textures/water_surf.qoi",
+ VG_TEX2D_LINEAR|VG_TEX2D_REPEAT,
+ &tex_water_surf );
vg_success( "done\n" );
}
vg_success( "done\n" );
}
@@
-48,13
+46,14
@@
VG_STATIC void world_bind_light_index( world_instance *world,
/*
* Does not write motion vectors
*/
/*
* Does not write motion vectors
*/
-VG_STATIC void render_water_texture( world_instance *world, camera *cam )
+VG_STATIC void render_water_texture( world_instance *world, camera *cam,
+ int layer_depth )
{
if( !world->water.enabled || (vg.quality_profile == k_quality_profile_low) )
return;
/* Draw reflection buffa */
{
if( !world->water.enabled || (vg.quality_profile == k_quality_profile_low) )
return;
/* Draw reflection buffa */
- render_fb_bind( gpipeline.fb_water_reflection );
+ render_fb_bind( gpipeline.fb_water_reflection
, 1
);
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
/*
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
/*
@@
-90,15
+89,17
@@
VG_STATIC void render_water_texture( world_instance *world, camera *cam )
/*
* Draw world
*/
/*
* Draw world
*/
+ glEnable( GL_DEPTH_TEST );
+ glDisable( GL_BLEND );
glCullFace( GL_FRONT );
glCullFace( GL_FRONT );
- render_world( world, &water_cam );
+ render_world( world, &water_cam
, layer_depth
);
glCullFace( GL_BACK );
/*
* Create beneath view matrix
*/
camera beneath_cam;
glCullFace( GL_BACK );
/*
* Create beneath view matrix
*/
camera beneath_cam;
- render_fb_bind( gpipeline.fb_water_beneath );
+ render_fb_bind( gpipeline.fb_water_beneath
, 1
);
glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
@@
-115,8
+116,10
@@
VG_STATIC void render_water_texture( world_instance *world, camera *cam )
m4x4_clip_projection( beneath_cam.mtx.p, clippb );
camera_finalize( &beneath_cam );
m4x4_clip_projection( beneath_cam.mtx.p, clippb );
camera_finalize( &beneath_cam );
+ glEnable( GL_DEPTH_TEST );
+ glDisable( GL_BLEND );
render_world_depth( world, &beneath_cam );
render_world_depth( world, &beneath_cam );
-
glViewport( 0, 0, vg.window_x, vg.window
_y );
+
//glViewport( 0,0, g_render_x, g_render
_y );
}
VG_STATIC void render_water_surface( world_instance *world, camera *cam )
}
VG_STATIC void render_water_surface( world_instance *world, camera *cam )
@@
-130,9
+133,11
@@
VG_STATIC void render_water_surface( world_instance *world, camera *cam )
render_fb_bind_texture( gpipeline.fb_water_reflection, 0, 0 );
shader_scene_water_uTexMain( 0 );
render_fb_bind_texture( gpipeline.fb_water_reflection, 0, 0 );
shader_scene_water_uTexMain( 0 );
-
- vg_tex2d_bind( &tex_water_surf, 1 );
+
+ glActiveTexture( GL_TEXTURE1 );
+ glBindTexture( GL_TEXTURE_2D, tex_water_surf );
shader_scene_water_uTexDudv( 1 );
shader_scene_water_uTexDudv( 1 );
+
shader_scene_water_uInvRes( (v2f){
1.0f / (float)vg.window_x,
1.0f / (float)vg.window_y });
shader_scene_water_uInvRes( (v2f){
1.0f / (float)vg.window_x,
1.0f / (float)vg.window_y });
@@
-180,8
+185,10
@@
VG_STATIC void render_water_surface( world_instance *world, camera *cam )
else if( vg.quality_profile == k_quality_profile_low ){
shader_scene_water_fast_use();
else if( vg.quality_profile == k_quality_profile_low ){
shader_scene_water_fast_use();
- vg_tex2d_bind( &tex_water_surf, 1 );
+ glActiveTexture( GL_TEXTURE1 );
+ glBindTexture( GL_TEXTURE_2D, tex_water_surf );
shader_scene_water_fast_uTexDudv( 1 );
shader_scene_water_fast_uTexDudv( 1 );
+
shader_scene_water_fast_uTime( world_global.time );
shader_scene_water_fast_uCamera( cam->transform[3] );
shader_scene_water_fast_uSurfaceY( world->water.height );
shader_scene_water_fast_uTime( world_global.time );
shader_scene_water_fast_uCamera( cam->transform[3] );
shader_scene_water_fast_uSurfaceY( world->water.height );