mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-06 13:48:01 +03:00
Adapt new findings about Texture
This commit is contained in:
+41
-41
@@ -118,7 +118,7 @@ namespace rndr {
|
||||
|
||||
Render::~Render() {
|
||||
if (aet_back_tex)
|
||||
texture_free(aet_back_tex);
|
||||
texture_release(aet_back_tex);
|
||||
|
||||
if (dof) {
|
||||
delete dof;
|
||||
@@ -165,7 +165,7 @@ namespace rndr {
|
||||
uniform_value[U_REDUCE] = 0;
|
||||
|
||||
glViewport(0, 0, t->width, t->height);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[0]);
|
||||
shaders_ft.set(SHADER_FT_REDUCE);
|
||||
draw_quad(render_post_width[0], render_post_height[0],
|
||||
@@ -174,14 +174,14 @@ namespace rndr {
|
||||
}
|
||||
|
||||
copy_to_frame_texture(rend_texture[0].GetColorTex(),
|
||||
render_width[0], render_height[0], taa_tex[2]->tex);
|
||||
render_width[0], render_height[0], taa_tex[2]->glid);
|
||||
|
||||
frame_texture_reset_capture();
|
||||
|
||||
rctx->screen_buffer.Bind();
|
||||
glViewport(0, 0, rctx->sprite_width, rctx->sprite_height);
|
||||
if (ssaa) {
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[0]);
|
||||
uniform_value[U_ALPHA_MASK] = ss_alpha_mask ? 1 : 0;
|
||||
uniform_value[U_REDUCE] = 0;
|
||||
@@ -192,7 +192,7 @@ namespace rndr {
|
||||
uniform_value[U_ALPHA_MASK] = 0;
|
||||
}
|
||||
else {
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
|
||||
if (mag_filter == MAG_FILTER_NEAREST)
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[1]);
|
||||
else
|
||||
@@ -596,7 +596,7 @@ namespace rndr {
|
||||
|
||||
for (Render::FrameTextureData& i : frame_texture[slot].data)
|
||||
if (!i.texture) {
|
||||
i.render_texture.SetColorDepthTextures(tex->tex);
|
||||
i.render_texture.SetColorDepthTextures(tex->glid);
|
||||
i.texture = tex;
|
||||
i.type = type;
|
||||
return (int32_t)(&i - frame_texture[slot].data);
|
||||
@@ -645,7 +645,7 @@ namespace rndr {
|
||||
|
||||
for (int32_t i = 0; i < 1; i++)
|
||||
if (transparency_tex[i]) {
|
||||
texture_free(transparency_tex[i]);
|
||||
texture_release(transparency_tex[i]);
|
||||
transparency_tex[i] = 0;
|
||||
texture_counter--;
|
||||
}
|
||||
@@ -665,7 +665,7 @@ namespace rndr {
|
||||
taa_buffer[i].Free();
|
||||
|
||||
if (taa_tex[i]) {
|
||||
texture_free(taa_tex[i]);
|
||||
texture_release(taa_tex[i]);
|
||||
taa_tex[i] = 0;
|
||||
texture_counter--;
|
||||
}
|
||||
@@ -674,7 +674,7 @@ namespace rndr {
|
||||
aet_back_texture.Free();
|
||||
|
||||
if (aet_back_tex) {
|
||||
texture_free(aet_back_tex);
|
||||
texture_release(aet_back_tex);
|
||||
aet_back_tex = 0;
|
||||
texture_counter--;
|
||||
}
|
||||
@@ -692,13 +692,13 @@ namespace rndr {
|
||||
|
||||
for (int32_t i = 0; i < 5; i++)
|
||||
if (reduce_tex[i]) {
|
||||
texture_free(reduce_tex[i]);
|
||||
texture_release(reduce_tex[i]);
|
||||
reduce_tex[i] = 0;
|
||||
texture_counter--;
|
||||
}
|
||||
|
||||
if (exposure_history) {
|
||||
texture_free(exposure_history);
|
||||
texture_release(exposure_history);
|
||||
exposure_history = 0;
|
||||
texture_counter--;
|
||||
}
|
||||
@@ -887,12 +887,12 @@ namespace rndr {
|
||||
for (int32_t i = 0; i < 3; i++) {
|
||||
taa_tex[i] = texture_load_tex_2d(texture_id(0x25, texture_counter++),
|
||||
GL_RGBA8, render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
taa_buffer[i].SetColorDepthTextures(taa_tex[i]->tex, 0, rend_texture[0].GetDepthTex());
|
||||
taa_buffer[i].SetColorDepthTextures(taa_tex[i]->glid, 0, rend_texture[0].GetDepthTex());
|
||||
}
|
||||
|
||||
aet_back_tex = texture_load_tex_2d(texture_id(0x25, texture_counter++),
|
||||
GL_RGBA8, render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
aet_back_texture.SetColorDepthTextures(aet_back_tex->tex, 0, rend_texture[0].GetDepthTex());
|
||||
aet_back_texture.SetColorDepthTextures(aet_back_tex->glid, 0, rend_texture[0].GetDepthTex());
|
||||
|
||||
mlaa_buffer.Init(render_post_width[0], render_post_height[0], 0, GL_RGBA8, GL_DEPTH_COMPONENT24);
|
||||
temp_buffer.Init(render_post_width[0], render_post_height[0], 0, GL_RGBA8, GL_ZERO);
|
||||
@@ -925,7 +925,7 @@ namespace rndr {
|
||||
transparency_tex[i] = texture_load_tex_2d(texture_id(0x25, texture_counter++),
|
||||
GL_RGBA16F, render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
|
||||
transparency = new renderer::Transparency(transparency_tex[0]->tex,
|
||||
transparency = new renderer::Transparency(transparency_tex[0]->glid,
|
||||
rend_texture[0].GetDepthTex(), render_post_width[0], render_post_height[0]);
|
||||
}
|
||||
|
||||
@@ -933,7 +933,7 @@ namespace rndr {
|
||||
for (int32_t i = 0; i < 5; i++) {
|
||||
reduce_tex[i] = texture_load_tex_2d(texture_id(0x25, texture_counter++),
|
||||
GL_RGBA16F, reduce_width[i], reduce_height[i], 0, 0, 0);
|
||||
gl_state_bind_texture_2d(reduce_tex[i]->tex);
|
||||
gl_state_bind_texture_2d(reduce_tex[i]->glid);
|
||||
|
||||
const vec4 border_color = 0.0f;
|
||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, (GLfloat*)&border_color);
|
||||
@@ -941,7 +941,7 @@ namespace rndr {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
}
|
||||
|
||||
reduce_texture[0].SetColorDepthTextures(reduce_tex[0]->tex);
|
||||
reduce_texture[0].SetColorDepthTextures(reduce_tex[0]->glid);
|
||||
|
||||
exposure_history = texture_load_tex_2d(texture_id(0x25, texture_counter++),
|
||||
GL_RGBA16F, 32, 2, 0, 0, 0);
|
||||
@@ -996,7 +996,7 @@ namespace rndr {
|
||||
return -1;
|
||||
|
||||
movie_textures_data[index] = movie_texture;
|
||||
movie_textures[index].SetColorDepthTextures(movie_texture->tex);
|
||||
movie_textures[index].SetColorDepthTextures(movie_texture->glid);
|
||||
return index;
|
||||
}
|
||||
|
||||
@@ -1026,7 +1026,7 @@ namespace rndr {
|
||||
return -1;
|
||||
|
||||
render_textures_data[index] = render_texture;
|
||||
render_textures[index].SetColorDepthTextures(render_texture->tex);
|
||||
render_textures[index].SetColorDepthTextures(render_texture->glid);
|
||||
return index;
|
||||
}
|
||||
|
||||
@@ -1106,17 +1106,17 @@ namespace rndr {
|
||||
|
||||
for (int32_t i = 0; i < 3; i++) {
|
||||
texture_id id = taa_tex[i]->id;
|
||||
texture_free(taa_tex[i]);
|
||||
texture_release(taa_tex[i]);
|
||||
taa_tex[i] = texture_load_tex_2d(id, GL_RGBA8,
|
||||
render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
taa_buffer[i].SetColorDepthTextures(taa_tex[i]->tex, 0, rend_texture[0].GetDepthTex());
|
||||
taa_buffer[i].SetColorDepthTextures(taa_tex[i]->glid, 0, rend_texture[0].GetDepthTex());
|
||||
}
|
||||
|
||||
texture_id aet_back_tex_id = aet_back_tex->id;
|
||||
texture_free(aet_back_tex);
|
||||
texture_release(aet_back_tex);
|
||||
aet_back_tex = texture_load_tex_2d(aet_back_tex_id, GL_RGBA8,
|
||||
render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
aet_back_texture.SetColorDepthTextures(aet_back_tex->tex, 0, rend_texture[0].GetDepthTex());
|
||||
aet_back_texture.SetColorDepthTextures(aet_back_tex->glid, 0, rend_texture[0].GetDepthTex());
|
||||
|
||||
mlaa_buffer.Init(render_post_width[0], render_post_height[0], 0, GL_RGBA8, GL_DEPTH_COMPONENT24);
|
||||
temp_buffer.Init(render_post_width[0], render_post_height[0], 0, GL_RGBA8, GL_ZERO);
|
||||
@@ -1136,12 +1136,12 @@ namespace rndr {
|
||||
|
||||
for (int32_t i = 0; i < 1; i++) {
|
||||
texture_id id = transparency_tex[i]->id;
|
||||
texture_free(transparency_tex[i]);
|
||||
texture_release(transparency_tex[i]);
|
||||
transparency_tex[i] = texture_load_tex_2d(id, GL_RGBA16F,
|
||||
render_post_width[0], render_post_height[0], 0, 0, 0);
|
||||
}
|
||||
|
||||
transparency->resize(transparency_tex[0]->tex, rend_texture[0].GetDepthTex(),
|
||||
transparency->resize(transparency_tex[0]->glid, rend_texture[0].GetDepthTex(),
|
||||
render_post_width[0], render_post_height[0]);
|
||||
}
|
||||
|
||||
@@ -1344,7 +1344,7 @@ namespace rndr {
|
||||
0.0f, 0.0f, 1.0f, 1.1f, 1.1f, 1.1f, 0.0f);
|
||||
|
||||
downsample_texture.Bind();
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[0]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[0]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
for (int32_t i = 1; i < 5; i++) {
|
||||
float_t scale;
|
||||
@@ -1363,7 +1363,7 @@ namespace rndr {
|
||||
glViewport(0, 0, reduce_width[i], reduce_height[i]);
|
||||
draw_quad(reduce_width[i - 1], reduce_height[i - 1],
|
||||
1.0f, 1.0f, 0.0f, 0.0f, scale, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, reduce_width[i], reduce_height[i]);
|
||||
}
|
||||
@@ -1454,7 +1454,7 @@ namespace rndr {
|
||||
|
||||
gl_state_begin_event("PostProcess::mlaa");
|
||||
mlaa_buffer.Bind();
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[1]);
|
||||
uniform_value[U_MLAA] = 0;
|
||||
shaders_ft.set(SHADER_FT_MLAA);
|
||||
@@ -1476,7 +1476,7 @@ namespace rndr {
|
||||
|
||||
RenderTexture& buf_texture = rctx->render_buffer;
|
||||
buf_texture.Bind();
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, taa_tex[2]->glid);
|
||||
gl_state_active_bind_texture_2d(1, temp_buffer.GetColorTex());
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[1]);
|
||||
gl_state_bind_sampler(1, rctx->render_samplers[1]);
|
||||
@@ -1526,12 +1526,12 @@ namespace rndr {
|
||||
gl_state_bind_sampler(6, rctx->render_samplers[2]);
|
||||
|
||||
if (aet_back) {
|
||||
gl_state_active_bind_texture_2d(6, aet_back_tex->tex);
|
||||
gl_state_active_bind_texture_2d(6, aet_back_tex->glid);
|
||||
uniform_value[U_AET_BACK] = 1;
|
||||
}
|
||||
|
||||
if (light_proj_tex) {
|
||||
gl_state_active_bind_texture_2d(6, light_proj_tex->tex);
|
||||
gl_state_active_bind_texture_2d(6, light_proj_tex->glid);
|
||||
uniform_value[U_LIGHT_PROJ] = 1;
|
||||
}
|
||||
|
||||
@@ -1750,14 +1750,14 @@ namespace rndr {
|
||||
uniform_value[U_EXPOSURE] = 1;
|
||||
shaders_ft.set(SHADER_FT_EXPOSURE);
|
||||
rctx->exposure_measure_ubo.Bind(1);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[4]->tex);
|
||||
gl_state_active_bind_texture_2d(1, reduce_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[4]->glid);
|
||||
gl_state_active_bind_texture_2d(1, reduce_tex[2]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
gl_state_bind_sampler(1, rctx->render_samplers[2]);
|
||||
draw_quad(1, 1, 1.0f, 1.0f,
|
||||
0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
gl_state_active_bind_texture_2d(0, exposure_history->tex);
|
||||
gl_state_active_bind_texture_2d(0, exposure_history->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
if (reset_exposure)
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 32, 1);
|
||||
@@ -1770,7 +1770,7 @@ namespace rndr {
|
||||
exposure_texture.Bind();
|
||||
uniform_value[U_EXPOSURE] = 2;
|
||||
shaders_ft.set(SHADER_FT_EXPOSURE);
|
||||
gl_state_active_bind_texture_2d(0, exposure_history->tex);
|
||||
gl_state_active_bind_texture_2d(0, exposure_history->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[0]);
|
||||
draw_quad(1, 1, 1.0f, 1.0f,
|
||||
0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
@@ -1985,7 +1985,7 @@ namespace rndr {
|
||||
downsample_texture.Bind();
|
||||
for (int32_t i = 1; i < 4; i++) {
|
||||
glViewport(0, 0, reduce_width[i], reduce_height[i]);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
draw_quad(reduce_width[i], reduce_height[i],
|
||||
1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f);
|
||||
@@ -1994,7 +1994,7 @@ namespace rndr {
|
||||
|
||||
for (int32_t i = 1; i < 4; i++) {
|
||||
glViewport(0, 0, reduce_width[i], reduce_height[i]);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[i]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
draw_quad(reduce_width[i], reduce_height[i],
|
||||
1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
|
||||
@@ -2005,7 +2005,7 @@ namespace rndr {
|
||||
shaders_ft.set(SHADER_FT_GAUSS);
|
||||
|
||||
glViewport(0, 0, reduce_width[0], reduce_height[0]);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[0]->tex);
|
||||
gl_state_active_bind_texture_2d(0, reduce_tex[0]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
draw_quad(reduce_width[0], reduce_height[0],
|
||||
1.0f, 1.0f, 0.0f, 0.0f, 1.0f,
|
||||
@@ -2017,16 +2017,16 @@ namespace rndr {
|
||||
glViewport(0, 0, reduce_width[0], reduce_height[0]);
|
||||
reduce_texture[0].Bind();
|
||||
gl_state_active_bind_texture_2d(0, downsample_texture.GetColorTex());
|
||||
gl_state_active_bind_texture_2d(1, reduce_tex[1]->tex);
|
||||
gl_state_active_bind_texture_2d(2, reduce_tex[2]->tex);
|
||||
gl_state_active_bind_texture_2d(3, reduce_tex[3]->tex);
|
||||
gl_state_active_bind_texture_2d(1, reduce_tex[1]->glid);
|
||||
gl_state_active_bind_texture_2d(2, reduce_tex[2]->glid);
|
||||
gl_state_active_bind_texture_2d(3, reduce_tex[3]->glid);
|
||||
gl_state_bind_sampler(0, rctx->render_samplers[2]);
|
||||
gl_state_bind_sampler(1, rctx->render_samplers[2]);
|
||||
gl_state_bind_sampler(2, rctx->render_samplers[2]);
|
||||
gl_state_bind_sampler(3, rctx->render_samplers[2]);
|
||||
draw_quad(reduce_width[3], reduce_height[3],
|
||||
1.0f, 1.0f, 0.0f, 0.0f, 0.25f, 0.15f, 0.25f, 0.25f, 0.25f);
|
||||
reduce_tex_draw = reduce_tex[0]->tex;
|
||||
reduce_tex_draw = reduce_tex[0]->glid;
|
||||
}
|
||||
|
||||
void Render::update_tone_map_lut() {
|
||||
|
||||
Reference in New Issue
Block a user