render: fx_end() no longer takes fb handle
parent
0beb264e2b
commit
b44fd791a6
2
MAKE.bat
2
MAKE.bat
|
@ -608,7 +608,7 @@ if "!vis!"=="yes" echo !cc! engine\v4k.c !export! !args! ^&^& if "!dll!"=="dll"
|
||||||
|
|
||||||
rem editor
|
rem editor
|
||||||
if "!editor!"=="yes" (
|
if "!editor!"=="yes" (
|
||||||
set edit=-DCOOK_ON_DEMAND -DUI_LESSER_SPACING -DUI_ICONS_SMALL -DVFS_ALWAYS_PACK
|
set edit=-DCOOK_ON_DEMAND -DUI_LESSER_SPACING -DUI_ICONS_SMALL
|
||||||
rem if "!vis!"=="yes" echo !cc! !o! editor.exe tools\editor\editor.c !edit! !import! !args!
|
rem if "!vis!"=="yes" echo !cc! !o! editor.exe tools\editor\editor.c !edit! !import! !args!
|
||||||
rem !echo! editor && !cc! !o! editor.exe tools\editor\editor.c !edit! !import! !args! || set rc=1
|
rem !echo! editor && !cc! !o! editor.exe tools\editor\editor.c !edit! !import! !args! || set rc=1
|
||||||
rem !echo! editor2 && !cc! !o! editor2.exe tools\editor\editor2.c !edit! !args! || set rc=1
|
rem !echo! editor2 && !cc! !o! editor2.exe tools\editor\editor2.c !edit! !args! || set rc=1
|
||||||
|
|
|
@ -180,7 +180,7 @@ int main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// font demo
|
// font demo
|
||||||
do_once font_scales(FONT_FACE1, 48, 24, 18, 12, 9, 6);
|
do_once font_scales(FONT_FACE1, 48, 24, 18, 12, 9, 6);
|
||||||
|
|
|
@ -124,7 +124,7 @@ int main() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// ui
|
// ui
|
||||||
if( ui_panel("Audio", 0)) {
|
if( ui_panel("Audio", 0)) {
|
||||||
|
|
|
@ -88,7 +88,7 @@ int main() {
|
||||||
collide_demo();
|
collide_demo();
|
||||||
}
|
}
|
||||||
|
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// ui
|
// ui
|
||||||
if( ui_panel("App", 0) ) {
|
if( ui_panel("App", 0) ) {
|
||||||
|
|
|
@ -90,7 +90,7 @@ int main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
if( ui_panel("Animation", 0) ) {
|
if( ui_panel("Animation", 0) ) {
|
||||||
if( ui_bool("Show aabb", &do_showaabb) );
|
if( ui_bool("Show aabb", &do_showaabb) );
|
||||||
|
|
|
@ -125,7 +125,7 @@ int main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// queue ui
|
// queue ui
|
||||||
if( ui_panel("Camera", 0)) {
|
if( ui_panel("Camera", 0)) {
|
||||||
|
|
|
@ -69,7 +69,7 @@ int main() {
|
||||||
model_render(witch, cam.proj, cam.view, witch.pivot, 0);
|
model_render(witch, cam.proj, cam.view, witch.pivot, 0);
|
||||||
|
|
||||||
// render end (postfx)
|
// render end (postfx)
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// input controllers
|
// input controllers
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,7 @@ int main() {
|
||||||
skybox_render(&sky, cam.proj, cam.view);
|
skybox_render(&sky, cam.proj, cam.view);
|
||||||
|
|
||||||
draw_world();
|
draw_world();
|
||||||
fx_end(0);
|
fx_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -577,7 +577,7 @@ int main( int argc, const char *argv[] ) {
|
||||||
glDepthFunc( GL_LESS );
|
glDepthFunc( GL_LESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// UI
|
// UI
|
||||||
|
|
|
@ -70,6 +70,6 @@ int main() {
|
||||||
model_render(sponza, cam.proj, cam.view, M, 0);
|
model_render(sponza, cam.proj, cam.view, M, 0);
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,7 +191,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// draw pixel-art hud, 16x16 ui element, scaled and positioned in resolution-independant way
|
// draw pixel-art hud, 16x16 ui element, scaled and positioned in resolution-independant way
|
||||||
{
|
{
|
||||||
|
|
|
@ -584,7 +584,7 @@ void game_loop(void *userdata) {
|
||||||
|
|
||||||
//fx_begin();
|
//fx_begin();
|
||||||
//ddraw_flush();
|
//ddraw_flush();
|
||||||
//fx_end(0);
|
//fx_end();
|
||||||
|
|
||||||
if( ui_panel("Vis", 0) ) {
|
if( ui_panel("Vis", 0) ) {
|
||||||
ui_bool("Skybox render", &draw_skybox);
|
ui_bool("Skybox render", &draw_skybox);
|
||||||
|
|
|
@ -46,29 +46,26 @@ const int LIGHT_SPOT = 2;
|
||||||
uniform light_t u_lights[MAX_LIGHTS];
|
uniform light_t u_lights[MAX_LIGHTS];
|
||||||
|
|
||||||
vec3 calculate_light(light_t l, vec3 normal, vec3 fragPos, vec3 viewDir) {
|
vec3 calculate_light(light_t l, vec3 normal, vec3 fragPos, vec3 viewDir) {
|
||||||
vec3 lightColor = l.color;
|
|
||||||
|
|
||||||
vec3 lightDir;
|
vec3 lightDir;
|
||||||
float attenuation = 1.0;
|
float attenuation = 1.0;
|
||||||
|
|
||||||
if (l.type == LIGHT_DIRECTIONAL) {
|
if (l.type == LIGHT_DIRECTIONAL) {
|
||||||
lightDir = normalize(-l.dir);
|
lightDir = normalize(-l.dir);
|
||||||
} else if (l.type == LIGHT_POINT) {
|
} else if (l.type == LIGHT_POINT) {
|
||||||
vec3 toLight = fragPos - l.pos;
|
vec3 toLight = l.pos - fragPos;
|
||||||
lightDir = normalize(toLight);
|
lightDir = normalize(toLight);
|
||||||
float distance = length(toLight);
|
float distance = length(toLight);
|
||||||
float factor = distance / l.radius;
|
float factor = distance / (l.radius*l.radius);
|
||||||
attenuation = clamp(1.0 - factor, 0.0, 1.0);
|
attenuation = clamp(1.0 - factor, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
float diff = max(dot(normal, lightDir), 0.0);
|
float diff = max(dot(normal, lightDir), 0.0);
|
||||||
vec3 diffuse = diff * lightColor;
|
|
||||||
|
|
||||||
// vec3 reflectDir = reflect(-lightDir, normal);
|
// vec3 reflectDir = reflect(-lightDir, normal);
|
||||||
// float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
|
// float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
|
||||||
// vec3 specular = spec * lightColor;
|
// vec3 specular = spec * lightColor;
|
||||||
|
|
||||||
return (diffuse /* + specular */) * l.color;
|
return (diff /* + specular */) * l.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -95,9 +92,9 @@ void main() {
|
||||||
|
|
||||||
// analytical lights (phong shading)
|
// analytical lights (phong shading)
|
||||||
// @todo: support more shading models (blinn-phong, ue4 brdf, ...)
|
// @todo: support more shading models (blinn-phong, ue4 brdf, ...)
|
||||||
// for (int i=0; i<u_num_lights; i++) {
|
for (int i=0; i<u_num_lights; i++) {
|
||||||
// lit += vec4(calculate_light(u_lights[i], n, v_position, /* @todo: push vdeye */ vec3(1.0,1.0,1.0)), 0.0);
|
lit += vec4(calculate_light(u_lights[i], n, v_position, /* @todo: push vdeye */ vec3(1.0,1.0,1.0)), 0.0);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// base
|
// base
|
||||||
vec4 diffuse;
|
vec4 diffuse;
|
||||||
|
|
|
@ -2591,7 +2591,7 @@ float *pixels;
|
||||||
int fx_load_from_mem(const char *nameid, const char *content);
|
int fx_load_from_mem(const char *nameid, const char *content);
|
||||||
void fx_begin();
|
void fx_begin();
|
||||||
void fx_begin_res(int w, int h);
|
void fx_begin_res(int w, int h);
|
||||||
void fx_end(handle fb);
|
void fx_end();
|
||||||
void fx_enable(int pass, int enabled);
|
void fx_enable(int pass, int enabled);
|
||||||
int fx_enabled(int pass);
|
int fx_enabled(int pass);
|
||||||
void fx_enable_all(int enabled);
|
void fx_enable_all(int enabled);
|
||||||
|
|
|
@ -17014,7 +17014,7 @@ API int fx_load(const char *file);
|
||||||
API int fx_load_from_mem(const char *nameid, const char *content);
|
API int fx_load_from_mem(const char *nameid, const char *content);
|
||||||
API void fx_begin();
|
API void fx_begin();
|
||||||
API void fx_begin_res(int w, int h);
|
API void fx_begin_res(int w, int h);
|
||||||
API void fx_end(handle fb);
|
API void fx_end();
|
||||||
API void fx_enable(int pass, int enabled);
|
API void fx_enable(int pass, int enabled);
|
||||||
API int fx_enabled(int pass);
|
API int fx_enabled(int pass);
|
||||||
API void fx_enable_all(int enabled);
|
API void fx_enable_all(int enabled);
|
||||||
|
@ -342558,7 +342558,7 @@ void postfx_destroy(postfx *fx);
|
||||||
|
|
||||||
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
||||||
bool postfx_begin(postfx *fx, int width, int height);
|
bool postfx_begin(postfx *fx, int width, int height);
|
||||||
bool postfx_end(postfx *fx, handle fb);
|
bool postfx_end(postfx *fx);
|
||||||
|
|
||||||
bool postfx_enabled(postfx *fx, int pass_number);
|
bool postfx_enabled(postfx *fx, int pass_number);
|
||||||
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
||||||
|
@ -342709,6 +342709,8 @@ void postfx_clear(postfx *fx) {
|
||||||
fx->mask = fx->enabled = 0;
|
fx->mask = fx->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __thread array(handle) last_fb;
|
||||||
|
|
||||||
bool postfx_begin(postfx *fx, int width, int height) {
|
bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
||||||
glClearColor(0,0,0,0); // @transparent
|
glClearColor(0,0,0,0); // @transparent
|
||||||
|
@ -342716,9 +342718,9 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
width += !width;
|
width += !width;
|
||||||
height += !height;
|
height += !height;
|
||||||
|
|
||||||
int last_fb;
|
int fb;
|
||||||
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &last_fb);
|
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fb);
|
||||||
fbo_bind(last_fb);
|
array_push(last_fb, fb);
|
||||||
|
|
||||||
// resize if needed
|
// resize if needed
|
||||||
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
||||||
|
@ -342743,7 +342745,8 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
fbo_bind(last_fb);
|
array_pop(last_fb);
|
||||||
|
fbo_bind(fb);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342760,13 +342763,15 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool postfx_end(postfx *fx, handle fb) {
|
bool postfx_end(postfx *fx) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle fb = *array_back(last_fb);
|
||||||
|
array_pop(last_fb);
|
||||||
fbo_bind(fb);
|
fbo_bind(fb);
|
||||||
|
|
||||||
// disable depth test in 2d rendering
|
// disable depth test in 2d rendering
|
||||||
|
@ -342829,8 +342834,6 @@ bool postfx_end(postfx *fx, handle fb) {
|
||||||
if(is_depth_test_enabled);
|
if(is_depth_test_enabled);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
fbo_bind(fb);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342855,8 +342858,8 @@ void fx_begin() {
|
||||||
void fx_begin_res(int w, int h) {
|
void fx_begin_res(int w, int h) {
|
||||||
postfx_begin(&fx, w, h);
|
postfx_begin(&fx, w, h);
|
||||||
}
|
}
|
||||||
void fx_end(handle fb) {
|
void fx_end() {
|
||||||
postfx_end(&fx,fb);
|
postfx_end(&fx);
|
||||||
}
|
}
|
||||||
int fx_enabled(int pass) {
|
int fx_enabled(int pass) {
|
||||||
return postfx_enabled(&fx, pass);
|
return postfx_enabled(&fx, pass);
|
||||||
|
|
|
@ -2948,7 +2948,7 @@ void postfx_destroy(postfx *fx);
|
||||||
|
|
||||||
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
||||||
bool postfx_begin(postfx *fx, int width, int height);
|
bool postfx_begin(postfx *fx, int width, int height);
|
||||||
bool postfx_end(postfx *fx, handle fb);
|
bool postfx_end(postfx *fx);
|
||||||
|
|
||||||
bool postfx_enabled(postfx *fx, int pass_number);
|
bool postfx_enabled(postfx *fx, int pass_number);
|
||||||
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
||||||
|
@ -3099,6 +3099,8 @@ void postfx_clear(postfx *fx) {
|
||||||
fx->mask = fx->enabled = 0;
|
fx->mask = fx->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __thread array(handle) last_fb;
|
||||||
|
|
||||||
bool postfx_begin(postfx *fx, int width, int height) {
|
bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
||||||
glClearColor(0,0,0,0); // @transparent
|
glClearColor(0,0,0,0); // @transparent
|
||||||
|
@ -3106,9 +3108,9 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
width += !width;
|
width += !width;
|
||||||
height += !height;
|
height += !height;
|
||||||
|
|
||||||
int last_fb;
|
int fb;
|
||||||
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &last_fb);
|
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fb);
|
||||||
fbo_bind(last_fb);
|
array_push(last_fb, fb);
|
||||||
|
|
||||||
// resize if needed
|
// resize if needed
|
||||||
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
||||||
|
@ -3133,7 +3135,8 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
fbo_bind(last_fb);
|
array_pop(last_fb);
|
||||||
|
fbo_bind(fb);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3150,13 +3153,15 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool postfx_end(postfx *fx, handle fb) {
|
bool postfx_end(postfx *fx) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle fb = *array_back(last_fb);
|
||||||
|
array_pop(last_fb);
|
||||||
fbo_bind(fb);
|
fbo_bind(fb);
|
||||||
|
|
||||||
// disable depth test in 2d rendering
|
// disable depth test in 2d rendering
|
||||||
|
@ -3219,8 +3224,6 @@ bool postfx_end(postfx *fx, handle fb) {
|
||||||
if(is_depth_test_enabled);
|
if(is_depth_test_enabled);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
fbo_bind(fb);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3245,8 +3248,8 @@ void fx_begin() {
|
||||||
void fx_begin_res(int w, int h) {
|
void fx_begin_res(int w, int h) {
|
||||||
postfx_begin(&fx, w, h);
|
postfx_begin(&fx, w, h);
|
||||||
}
|
}
|
||||||
void fx_end(handle fb) {
|
void fx_end() {
|
||||||
postfx_end(&fx,fb);
|
postfx_end(&fx);
|
||||||
}
|
}
|
||||||
int fx_enabled(int pass) {
|
int fx_enabled(int pass) {
|
||||||
return postfx_enabled(&fx, pass);
|
return postfx_enabled(&fx, pass);
|
||||||
|
|
|
@ -664,7 +664,7 @@ API int fx_load(const char *file);
|
||||||
API int fx_load_from_mem(const char *nameid, const char *content);
|
API int fx_load_from_mem(const char *nameid, const char *content);
|
||||||
API void fx_begin();
|
API void fx_begin();
|
||||||
API void fx_begin_res(int w, int h);
|
API void fx_begin_res(int w, int h);
|
||||||
API void fx_end(handle fb);
|
API void fx_end();
|
||||||
API void fx_enable(int pass, int enabled);
|
API void fx_enable(int pass, int enabled);
|
||||||
API int fx_enabled(int pass);
|
API int fx_enabled(int pass);
|
||||||
API void fx_enable_all(int enabled);
|
API void fx_enable_all(int enabled);
|
||||||
|
|
23
engine/v4k.c
23
engine/v4k.c
|
@ -13212,7 +13212,7 @@ void postfx_destroy(postfx *fx);
|
||||||
|
|
||||||
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
bool postfx_load(postfx *fx, const char *name, const char *fragment);
|
||||||
bool postfx_begin(postfx *fx, int width, int height);
|
bool postfx_begin(postfx *fx, int width, int height);
|
||||||
bool postfx_end(postfx *fx, handle fb);
|
bool postfx_end(postfx *fx);
|
||||||
|
|
||||||
bool postfx_enabled(postfx *fx, int pass_number);
|
bool postfx_enabled(postfx *fx, int pass_number);
|
||||||
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
bool postfx_enable(postfx *fx, int pass_number, bool enabled);
|
||||||
|
@ -13363,6 +13363,8 @@ void postfx_clear(postfx *fx) {
|
||||||
fx->mask = fx->enabled = 0;
|
fx->mask = fx->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __thread array(handle) last_fb;
|
||||||
|
|
||||||
bool postfx_begin(postfx *fx, int width, int height) {
|
bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
// reset clear color: needed in case transparent window is being used (alpha != 0)
|
||||||
glClearColor(0,0,0,0); // @transparent
|
glClearColor(0,0,0,0); // @transparent
|
||||||
|
@ -13370,9 +13372,9 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
width += !width;
|
width += !width;
|
||||||
height += !height;
|
height += !height;
|
||||||
|
|
||||||
int last_fb;
|
int fb;
|
||||||
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &last_fb);
|
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fb);
|
||||||
fbo_bind(last_fb);
|
array_push(last_fb, fb);
|
||||||
|
|
||||||
// resize if needed
|
// resize if needed
|
||||||
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
if( fx->diffuse[0].w != width || fx->diffuse[0].h != height ) {
|
||||||
|
@ -13397,7 +13399,8 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
fbo_bind(last_fb);
|
array_pop(last_fb);
|
||||||
|
fbo_bind(fb);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13414,13 +13417,15 @@ bool postfx_begin(postfx *fx, int width, int height) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool postfx_end(postfx *fx, handle fb) {
|
bool postfx_end(postfx *fx) {
|
||||||
uint64_t num_active_passes = popcnt64(fx->mask);
|
uint64_t num_active_passes = popcnt64(fx->mask);
|
||||||
bool active = fx->enabled && num_active_passes;
|
bool active = fx->enabled && num_active_passes;
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle fb = *array_back(last_fb);
|
||||||
|
array_pop(last_fb);
|
||||||
fbo_bind(fb);
|
fbo_bind(fb);
|
||||||
|
|
||||||
// disable depth test in 2d rendering
|
// disable depth test in 2d rendering
|
||||||
|
@ -13483,8 +13488,6 @@ bool postfx_end(postfx *fx, handle fb) {
|
||||||
if(is_depth_test_enabled);
|
if(is_depth_test_enabled);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
fbo_bind(fb);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13509,8 +13512,8 @@ void fx_begin() {
|
||||||
void fx_begin_res(int w, int h) {
|
void fx_begin_res(int w, int h) {
|
||||||
postfx_begin(&fx, w, h);
|
postfx_begin(&fx, w, h);
|
||||||
}
|
}
|
||||||
void fx_end(handle fb) {
|
void fx_end() {
|
||||||
postfx_end(&fx,fb);
|
postfx_end(&fx);
|
||||||
}
|
}
|
||||||
int fx_enabled(int pass) {
|
int fx_enabled(int pass) {
|
||||||
return postfx_enabled(&fx, pass);
|
return postfx_enabled(&fx, pass);
|
||||||
|
|
|
@ -3097,7 +3097,7 @@ API int fx_load(const char *file);
|
||||||
API int fx_load_from_mem(const char *nameid, const char *content);
|
API int fx_load_from_mem(const char *nameid, const char *content);
|
||||||
API void fx_begin();
|
API void fx_begin();
|
||||||
API void fx_begin_res(int w, int h);
|
API void fx_begin_res(int w, int h);
|
||||||
API void fx_end(handle fb);
|
API void fx_end();
|
||||||
API void fx_enable(int pass, int enabled);
|
API void fx_enable(int pass, int enabled);
|
||||||
API int fx_enabled(int pass);
|
API int fx_enabled(int pass);
|
||||||
API void fx_enable_all(int enabled);
|
API void fx_enable_all(int enabled);
|
||||||
|
|
2
hello.c
2
hello.c
|
@ -80,7 +80,7 @@ int main() {
|
||||||
model_render(girl, cam.proj, cam.view, girl.pivot, 0);
|
model_render(girl, cam.proj, cam.view, girl.pivot, 0);
|
||||||
|
|
||||||
// post-fxs end here
|
// post-fxs end here
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
gizmo(&pos, &rot, &sca);
|
gizmo(&pos, &rot, &sca);
|
||||||
model_render_skeleton(girl, girl.pivot);
|
model_render_skeleton(girl, girl.pivot);
|
||||||
|
|
|
@ -1772,7 +1772,7 @@ int main() {
|
||||||
|
|
||||||
editor_obj_call0(obj, fn_draw);
|
editor_obj_call0(obj, fn_draw);
|
||||||
}
|
}
|
||||||
fx_end(0);
|
fx_end();
|
||||||
|
|
||||||
// draw gizmos, aabbs, markers, etc
|
// draw gizmos, aabbs, markers, etc
|
||||||
for each_set_ptr(editor_selection, void*, o) {
|
for each_set_ptr(editor_selection, void*, o) {
|
||||||
|
|
|
@ -133,7 +133,7 @@ __declspec(dllexport) int plug_tick(asset_t *f) {
|
||||||
ddraw_grid(0);
|
ddraw_grid(0);
|
||||||
ddraw_flush();
|
ddraw_flush();
|
||||||
model_render(models[s->model], cam.proj, cam.view, models[s->model].pivot, 0);
|
model_render(models[s->model], cam.proj, cam.view, models[s->model].pivot, 0);
|
||||||
fx_end(s->fb);
|
fx_end();
|
||||||
|
|
||||||
// fbo_bind(s->fb);
|
// fbo_bind(s->fb);
|
||||||
// fullscreen_quad_rgb(s->tex, 1.0);
|
// fullscreen_quad_rgb(s->tex, 1.0);
|
||||||
|
|
|
@ -115,11 +115,11 @@ int main() {
|
||||||
}
|
}
|
||||||
ui_panel_end();
|
ui_panel_end();
|
||||||
|
|
||||||
static bool show_main_window = 1;
|
// static bool show_main_window = 1;
|
||||||
if ( ui_window("Workbench", &show_main_window) ) {
|
// if ( ui_window("Workbench", &show_main_window) ) {
|
||||||
ui_label("v4.games");
|
// ui_label("v4.games");
|
||||||
}
|
// }
|
||||||
ui_window_end();
|
// ui_window_end();
|
||||||
|
|
||||||
for (int i=0; i<array_count(assets); i++) {
|
for (int i=0; i<array_count(assets); i++) {
|
||||||
asset_t *f = (assets+i);
|
asset_t *f = (assets+i);
|
||||||
|
|
Loading…
Reference in New Issue