mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-04 12:47:56 +03:00
Fixed some inconsistencies caused by previous commits
This commit is contained in:
@@ -204,8 +204,8 @@ namespace Glitter {
|
||||
}
|
||||
}
|
||||
|
||||
void F2EffectInst::Disp(GPM, render_data_context& rend_data_ct, DispType disp_type) {
|
||||
render_scene.Disp(GPM_VAL, rend_data_ct, disp_type);
|
||||
void F2EffectInst::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
render_scene.Disp(GPM_VAL, rend_data_ctx, disp_type, cam);
|
||||
}
|
||||
|
||||
void F2EffectInst::DispMesh(GPM) {
|
||||
@@ -784,8 +784,8 @@ namespace Glitter {
|
||||
}
|
||||
}
|
||||
|
||||
void XEffectInst::Disp(GPM, render_data_context& rend_data_ct, DispType disp_type) {
|
||||
render_scene.Disp(GPM_VAL, rend_data_ct, disp_type);
|
||||
void XEffectInst::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
render_scene.Disp(GPM_VAL, rend_data_ctx, disp_type, cam);
|
||||
}
|
||||
|
||||
void XEffectInst::DispMesh(GPM) {
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
#include "../data.hpp"
|
||||
#include "../gl_state.hpp"
|
||||
#include "../object.hpp"
|
||||
#if SHARED_GLITTER_BUFFER
|
||||
#include "../gl_rend_state.hpp"
|
||||
#endif
|
||||
|
||||
namespace Glitter {
|
||||
static void effect_group_msgpack_read(const char* path, const char* file, EffectGroup* eff_group);
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#define SHARED_GLITTER_BUFFER (1)
|
||||
|
||||
struct cam_data;
|
||||
struct render_data_context;
|
||||
|
||||
namespace Glitter {
|
||||
@@ -858,8 +859,8 @@ namespace Glitter {
|
||||
void CalcDispQuadNormal(GPM,
|
||||
F2RenderGroup* rend_group, mat4* model_mat, mat4* dir_mat);
|
||||
void Ctrl(GLT, float_t delta_frame);
|
||||
void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type);
|
||||
void Disp(GPM, render_data_context& rend_data_ct, F2RenderGroup* rend_group);
|
||||
void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam);
|
||||
void Disp(GPM, render_data_context& rend_data_ctx, F2RenderGroup* rend_group, const cam_data& cam);
|
||||
};
|
||||
|
||||
class XRenderScene : public RenderScene {
|
||||
@@ -880,8 +881,8 @@ namespace Glitter {
|
||||
bool CanDisp(DispType disp_type, bool a3);
|
||||
void CheckUseCamera();
|
||||
void Ctrl(float_t delta_frame, bool copy_mats);
|
||||
void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type);
|
||||
void Disp(GPM, render_data_context& rend_data_ct, XRenderGroup* rend_group);
|
||||
void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam);
|
||||
void Disp(GPM, render_data_context& rend_data_ctx, XRenderGroup* rend_group, const cam_data& cam);
|
||||
void DispMesh(GPM);
|
||||
void DispMesh(GPM, XRenderGroup* rend_group);
|
||||
};
|
||||
@@ -914,7 +915,7 @@ namespace Glitter {
|
||||
|
||||
virtual void CalcDisp(GPM) = 0;
|
||||
virtual void Copy(EffectInst* dst, float_t emission) = 0;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type) = 0;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) = 0;
|
||||
virtual void DispMesh(GPM) = 0;
|
||||
virtual void Free(GPM, GLT, float_t emission, bool free) = 0;
|
||||
virtual size_t GetCtrlCount(ParticleType type) = 0;
|
||||
@@ -967,7 +968,7 @@ namespace Glitter {
|
||||
|
||||
virtual void CalcDisp(GPM) override;
|
||||
virtual void Copy(EffectInst* dst, float_t emission) override;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type) override;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) override;
|
||||
virtual void DispMesh(GPM) override;
|
||||
virtual void Free(GPM, GLT, float_t emission, bool free) override;
|
||||
virtual size_t GetCtrlCount(ParticleType type) override;
|
||||
@@ -1033,7 +1034,7 @@ namespace Glitter {
|
||||
|
||||
virtual void CalcDisp(GPM) override;
|
||||
virtual void Copy(EffectInst* dst, float_t emission) override;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type) override;
|
||||
virtual void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) override;
|
||||
virtual void DispMesh(GPM) override;
|
||||
virtual void Free(GPM, GLT, float_t emission, bool free) override;
|
||||
virtual size_t GetCtrlCount(ParticleType type) override;
|
||||
@@ -1625,7 +1626,7 @@ namespace Glitter {
|
||||
void CheckUpdate(float_t delta_frame);
|
||||
bool Copy(EffectInst* eff_inst, Scene* dst);
|
||||
void Ctrl(GPM, float_t delta_frame);
|
||||
void Disp(GPM, render_data_context& rend_data_ct, DispType disp_type);
|
||||
void Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam);
|
||||
void DispMesh(GPM);
|
||||
size_t GetCtrlCount(ParticleType ptcl_type);
|
||||
size_t GetDispCount(ParticleType ptcl_type);
|
||||
@@ -1689,7 +1690,7 @@ namespace Glitter {
|
||||
void CheckSceneHasLocalEffect(Scene* sc);
|
||||
void CtrlScenes();
|
||||
void DecrementInitBuffersByCount(int32_t count = 1);
|
||||
void DispScenes(render_data_context& rend_data_ct, DispType disp_type);
|
||||
void DispScenes(render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam);
|
||||
void FreeEffects();
|
||||
void FreeSceneEffect(SceneCounter scene_counter, bool force_kill = true);
|
||||
void FreeSceneEffect(uint64_t effect_group_hash, uint64_t effect_hash, bool force_kill = true);
|
||||
|
||||
@@ -272,7 +272,7 @@ namespace Glitter {
|
||||
init_buffers = max_def(init_buffers - count, 0);
|
||||
}
|
||||
|
||||
void GltParticleManager::DispScenes(render_data_context& rend_data_ctx, DispType disp_type) {
|
||||
void GltParticleManager::DispScenes(render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
if (flags & PARTICLE_MANAGER_NOT_DISP)
|
||||
return;
|
||||
|
||||
@@ -281,7 +281,7 @@ namespace Glitter {
|
||||
&& selected_effect_group != i->effect_group)
|
||||
continue;
|
||||
|
||||
i->Disp(this, rend_data_ctx, disp_type);
|
||||
i->Disp(this, rend_data_ctx, disp_type, cam);
|
||||
}
|
||||
|
||||
rend_data_ctx.state.bind_vertex_array(0);
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
|
||||
extern render_context* rctx_ptr;
|
||||
|
||||
extern bool reflect_draw;
|
||||
extern mat4 reflect_mat;
|
||||
|
||||
namespace Glitter {
|
||||
RenderScene::RenderScene() : ctrl_quad(), ctrl_line(), ctrl_locus(),
|
||||
ctrl_mesh(), disp_quad(), disp_line(), disp_locus(), disp_mesh() {
|
||||
@@ -310,7 +307,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -461,7 +458,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -655,7 +652,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -878,7 +875,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -908,7 +905,7 @@ namespace Glitter {
|
||||
}
|
||||
}
|
||||
|
||||
void F2RenderScene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type) {
|
||||
void F2RenderScene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
Effect* eff = GPM_VAL->selected_effect;
|
||||
Emitter* emit = GPM_VAL->selected_emitter;
|
||||
Particle* ptcl = GPM_VAL->selected_particle;
|
||||
@@ -922,11 +919,11 @@ namespace Glitter {
|
||||
continue;
|
||||
|
||||
if (!GPM_VAL->draw_selected || !eff) {
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
else if ((eff && ptcl) || (eff && !emit)) {
|
||||
if (!ptcl || rend_group->particle->particle == ptcl)
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
else if (emit)
|
||||
for (Particle*& j : emit->particles) {
|
||||
@@ -935,12 +932,12 @@ namespace Glitter {
|
||||
|
||||
Particle* particle = j;
|
||||
if (rend_group->particle->particle == particle)
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void F2RenderScene::Disp(GPM, render_data_context& rend_data_ctx, F2RenderGroup* rend_group) {
|
||||
void F2RenderScene::Disp(GPM, render_data_context& rend_data_ctx, F2RenderGroup* rend_group, const cam_data& cam) {
|
||||
switch (rend_group->type) {
|
||||
case PARTICLE_QUAD:
|
||||
case PARTICLE_LINE:
|
||||
@@ -954,8 +951,8 @@ namespace Glitter {
|
||||
return;
|
||||
|
||||
mat4 mat;
|
||||
mat4_mul(&rend_group->mat_draw, &rctx_ptr->camera->view, &mat);
|
||||
mat4_mul(&mat, &rctx_ptr->camera->projection, &mat);
|
||||
mat4_mul(&rend_group->mat_draw, &cam.get_view_mat(), &mat);
|
||||
mat4_mul(&mat, &cam.get_proj_mat(), &mat);
|
||||
|
||||
float_t emission = 1.0f;
|
||||
if (rend_group->flags & PARTICLE_EMISSION || rend_group->blend_mode == PARTICLE_BLEND_TYPICAL)
|
||||
@@ -1287,7 +1284,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1436,7 +1433,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1623,7 +1620,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1837,7 +1834,7 @@ namespace Glitter {
|
||||
rend_group->disp = disp;
|
||||
|
||||
#if !SHARED_GLITTER_BUFFER
|
||||
rend_group->vbo.WriteMemory(0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
rend_group->vbo.WriteMemory(gl_state, 0, (buf - rend_group->buffer) * sizeof(Buffer), rend_group->buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1883,7 +1880,7 @@ namespace Glitter {
|
||||
}
|
||||
}
|
||||
|
||||
void XRenderScene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type) {
|
||||
void XRenderScene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
Effect* eff = GPM_VAL->selected_effect;
|
||||
Emitter* emit = GPM_VAL->selected_emitter;
|
||||
Particle* ptcl = GPM_VAL->selected_particle;
|
||||
@@ -1896,11 +1893,11 @@ namespace Glitter {
|
||||
continue;
|
||||
|
||||
if (!GPM_VAL->draw_selected || !eff) {
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
else if ((eff && ptcl) || (eff && !emit)) {
|
||||
if (!ptcl || rend_group->particle->particle == ptcl)
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
else if (emit)
|
||||
for (Particle*& j : emit->particles) {
|
||||
@@ -1909,12 +1906,12 @@ namespace Glitter {
|
||||
|
||||
Particle* particle = j;
|
||||
if (rend_group->particle->particle == particle)
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group);
|
||||
Disp(GPM_VAL, rend_data_ctx, rend_group, cam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void XRenderScene::Disp(GPM, render_data_context& rend_data_ctx, XRenderGroup* rend_group) {
|
||||
void XRenderScene::Disp(GPM, render_data_context& rend_data_ctx, XRenderGroup* rend_group, const cam_data& cam) {
|
||||
switch (rend_group->type) {
|
||||
case PARTICLE_QUAD:
|
||||
case PARTICLE_LINE:
|
||||
@@ -1928,13 +1925,9 @@ namespace Glitter {
|
||||
if (!rend_group->vao || rend_group->disp < 1)
|
||||
return;
|
||||
|
||||
mat4 cam_view = rctx_ptr->camera->view;
|
||||
if (reflect_draw)
|
||||
mat4_mul(&reflect_mat, &cam_view, &cam_view);
|
||||
|
||||
mat4 mat;
|
||||
mat4_mul(&rend_group->mat_draw, &cam_view, &mat);
|
||||
mat4_mul(&mat, &rctx_ptr->camera->projection, &mat);
|
||||
mat4_mul(&rend_group->mat_draw, &cam.get_view_mat(), &mat);
|
||||
mat4_mul(&mat, &cam.get_proj_mat(), &mat);
|
||||
|
||||
float_t emission = 1.0f;
|
||||
if (rend_group->flags & PARTICLE_EMISSION || rend_group->blend_mode == PARTICLE_BLEND_TYPICAL)
|
||||
|
||||
@@ -164,7 +164,7 @@ namespace Glitter {
|
||||
}
|
||||
}
|
||||
|
||||
void Scene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type) {
|
||||
void Scene::Disp(GPM, render_data_context& rend_data_ctx, DispType disp_type, const cam_data& cam) {
|
||||
if (flags & SCENE_NOT_DISP)
|
||||
return;
|
||||
|
||||
@@ -174,7 +174,7 @@ namespace Glitter {
|
||||
&& GPM_VAL->selected_effect != i.ptr->effect)
|
||||
continue;
|
||||
|
||||
i.ptr->Disp(GPM_VAL, rend_data_ctx, disp_type);
|
||||
i.ptr->Disp(GPM_VAL, rend_data_ctx, disp_type, cam);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -1414,14 +1414,14 @@ void snow_particle_draw(render_data_context& rend_data_ctx, const cam_data& cam)
|
||||
return;
|
||||
|
||||
stage_param_snow* snow = stage_param_data_snow_current;
|
||||
rend_data_ctx.set_batch_scene_camera(cam);
|
||||
|
||||
rend_data_ctx.state.enable_blend();
|
||||
rend_data_ctx.state.set_blend_func(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
rend_data_ctx.state.set_depth_mask(GL_FALSE);
|
||||
|
||||
float_t point_attenuation = powf(tanf((float_t)rctx_ptr->camera->get_fov()
|
||||
* 0.5f * DEG_TO_RAD_FLOAT) * 3.4f, 2.0f) * 0.1f;
|
||||
float_t point_attenuation = powf(tanf(cam.get_fov() * 0.5f) * 3.4f, 2.0f) * 0.1f;
|
||||
|
||||
snow_particle_scene_shader_data snow_scene = {};
|
||||
mat4 temp;
|
||||
@@ -1471,8 +1471,7 @@ void snow_particle_draw(render_data_context& rend_data_ctx, const cam_data& cam)
|
||||
rend_data_ctx.state.bind_uniform_buffer_base(0, snow_particle_scene_ubo);
|
||||
rend_data_ctx.state.bind_uniform_buffer_base(1, snow_particle_batch_ubo);
|
||||
|
||||
point_attenuation = powf(tanf((float_t)rctx_ptr->camera->get_fov()
|
||||
* 0.5f * DEG_TO_RAD_FLOAT) * 3.4f, 2.0f) * 0.06f;
|
||||
point_attenuation = powf(tanf(cam.get_fov() * 0.5f) * 3.4f, 2.0f) * 0.06f;
|
||||
|
||||
snow_scene.g_state_point_attenuation = { 0.0f, 0.0f, point_attenuation, 0.0f };
|
||||
snow_particle_scene_ubo.WriteMemory(rend_data_ctx.state, snow_scene);
|
||||
@@ -3152,6 +3151,7 @@ void EffectRipple::draw(render_data_context& rend_data_ctx, const cam_data& cam)
|
||||
|
||||
rend_data_ctx.state.set_viewport(1, 1, width - 2, height - 2);
|
||||
|
||||
rend_data_ctx.set_batch_scene_camera(cam);
|
||||
rend_data_ctx.state.clear(GL_DEPTH_BUFFER_BIT);
|
||||
if (rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_USER)) {
|
||||
rend_data_ctx.state.active_bind_texture_2d(7, rt[counter % 3]->GetColorTex());
|
||||
|
||||
@@ -37,7 +37,7 @@ static const GLuint BONE_INDEX_INDEX = 15;
|
||||
static void object_data_get_vertex_attrib_buffer_bindings(const mdl::ObjSubMeshArgs* args,
|
||||
int32_t texcoord_array[2], GLuint vertex_attrib_buffer_binding[16]);
|
||||
|
||||
static void sub_140436760();
|
||||
static void sub_140436760(const cam_data& cam);
|
||||
|
||||
material_list_struct::material_list_struct() : blend_color(), has_blend_color(), emission(), has_emission() {
|
||||
hash = (uint32_t)-1;
|
||||
@@ -2101,7 +2101,7 @@ namespace mdl {
|
||||
float_t alpha_threshold = 0.0f;
|
||||
bool reflect = rend_data_ctx.shader_flags.arr[U_REFLECT] == 1;
|
||||
void(*func)(render_data_context & rend_data_ctx, const ObjSubMeshArgs * args,
|
||||
const cam_data & cam, const mat4* mat) = draw_sub_mesh_default;
|
||||
const cam_data & cam, const mat4 * mat) = draw_sub_mesh_default;
|
||||
|
||||
for (int32_t i = 0; i < 5; i++)
|
||||
rend_data_ctx.state.active_bind_texture_2d(i, rctx_ptr->empty_texture_2d->glid);
|
||||
@@ -3457,7 +3457,7 @@ namespace mdl {
|
||||
return;
|
||||
|
||||
if (a3 && type == mdl::OBJ_TYPE_TRANSLUCENT)
|
||||
sub_140436760();
|
||||
sub_140436760(cam);
|
||||
|
||||
calc_obj_radius(cam, type);
|
||||
|
||||
@@ -3703,10 +3703,7 @@ static void object_data_get_vertex_attrib_buffer_bindings(const mdl::ObjSubMeshA
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_140436760() {
|
||||
camera* cam = rctx_ptr->camera;
|
||||
mat4* view = &cam->view;
|
||||
|
||||
static void sub_140436760(const cam_data& cam) {
|
||||
for (auto& i : rctx_ptr->disp_manager->obj[mdl::OBJ_TYPE_TRANSLUCENT]) {
|
||||
if (i->kind != mdl::OBJ_KIND_NORMAL)
|
||||
continue;
|
||||
@@ -3738,7 +3735,7 @@ static void sub_140436760() {
|
||||
|
||||
mat4 mat;
|
||||
mat4_mul_translate(&i->mat, &aabb->center, &mat);
|
||||
mat4_mul(&mat, view, &mat);
|
||||
mat4_mul(&mat, &cam.get_view_mat(), &mat);
|
||||
mat4_transpose(&mat, &mat);
|
||||
|
||||
vec4 t;
|
||||
|
||||
+135
-138
@@ -14,21 +14,21 @@ static bool draw_object_blend_set(render_data_context& rend_data_ctx,
|
||||
static bool draw_object_blend_set_check_use_default_blend(int32_t index);
|
||||
static void draw_object_chara_color_fog_set(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, bool disable_fog);
|
||||
static void draw_object_material_reset_cheap(render_data_context& rend_data_ctx);
|
||||
static void draw_object_material_reset_default(
|
||||
render_data_context& rend_data_ctx, const obj_material_data* mat_data);
|
||||
static void draw_object_material_reset_cheap(render_data_context& rend_data_ctx);
|
||||
static void draw_object_material_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, bool use_shader);
|
||||
static void draw_object_material_set_parameter(
|
||||
render_data_context& rend_data_ctx, const obj_material_data* mat_data);
|
||||
static void draw_object_material_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_material_set_uniform(render_data_context& rend_data_ctx,
|
||||
const obj_material_data* mat_data, bool disable_color_l);
|
||||
static void draw_object_vertex_attrib_reset_default(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_vertex_attrib_reset_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_vertex_attrib_reset_default(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_vertex_attrib_set_default(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_vertex_attrib_set_cheap(
|
||||
@@ -188,9 +188,10 @@ namespace mdl {
|
||||
if (args->mats) {
|
||||
rend_data_ctx.set_skinning_data(rend_data_ctx.state, args->mats, args->mat_count);
|
||||
|
||||
rend_data_ctx.set_batch_worlds(mat4_identity);
|
||||
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 1;
|
||||
rend_data_ctx.state.bind_vertex_array(vao);
|
||||
rend_data_ctx.set_batch_worlds(mat4_identity);
|
||||
func(rend_data_ctx, args, cam, mat);
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 0;
|
||||
}
|
||||
@@ -217,7 +218,6 @@ namespace mdl {
|
||||
|
||||
void draw_sub_mesh_cheap(render_data_context& rend_data_ctx,
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
|
||||
const obj_material_data* material = args->material;
|
||||
draw_object_vertex_attrib_set_cheap(rend_data_ctx, args);
|
||||
obj_material_shader_lighting_type lighting_type
|
||||
@@ -245,7 +245,6 @@ namespace mdl {
|
||||
|
||||
void draw_sub_mesh_cheap_reflect_map(render_data_context& rend_data_ctx,
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
|
||||
draw_object_vertex_attrib_set_cheap(rend_data_ctx, args);
|
||||
draw_object_material_set_cheap(rend_data_ctx, args);
|
||||
|
||||
@@ -267,7 +266,6 @@ namespace mdl {
|
||||
|
||||
void draw_sub_mesh_default(render_data_context& rend_data_ctx,
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
|
||||
if (args->set_blend_color)
|
||||
rend_data_ctx.set_batch_blend_color_offset_color(args->blend_color, 0.0f);
|
||||
|
||||
@@ -297,7 +295,6 @@ namespace mdl {
|
||||
|
||||
void draw_sub_mesh_default_instanced(render_data_context& rend_data_ctx,
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
|
||||
if (args->set_blend_color)
|
||||
rend_data_ctx.set_batch_blend_color_offset_color(args->blend_color, 0.0f);
|
||||
|
||||
@@ -333,7 +330,6 @@ namespace mdl {
|
||||
|
||||
void draw_sub_mesh_no_mat(render_data_context& rend_data_ctx,
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
|
||||
const obj_material_data* material = args->material;
|
||||
const std::vector<GLuint>* textures = args->textures;
|
||||
if (rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shader_index != -1) {
|
||||
@@ -614,6 +610,12 @@ static void draw_object_chara_color_fog_set(render_data_context& rend_data_ctx,
|
||||
}
|
||||
}
|
||||
|
||||
static void draw_object_material_reset_cheap(render_data_context& rend_data_ctx) {
|
||||
rend_data_ctx.state.active_bind_texture_2d(0, rctx_ptr->empty_texture_2d->glid);
|
||||
rend_data_ctx.state.enable_cull_face();
|
||||
rend_data_ctx.reset_shader_flags();
|
||||
}
|
||||
|
||||
static void draw_object_material_reset_default(
|
||||
render_data_context& rend_data_ctx, const obj_material_data* mat_data) {
|
||||
if (mat_data) {
|
||||
@@ -625,10 +627,79 @@ static void draw_object_material_reset_default(
|
||||
rend_data_ctx.reset_shader_flags();
|
||||
}
|
||||
|
||||
static void draw_object_material_reset_cheap(render_data_context& rend_data_ctx) {
|
||||
rend_data_ctx.state.active_bind_texture_2d(0, rctx_ptr->empty_texture_2d->glid);
|
||||
rend_data_ctx.state.enable_cull_face();
|
||||
rend_data_ctx.reset_shader_flags();
|
||||
static void draw_object_material_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_material_data* material = args->material;
|
||||
const std::vector<GLuint>* textures = args->textures;
|
||||
if (material->material.attrib.m.double_sided)
|
||||
rend_data_ctx.state.disable_cull_face();
|
||||
|
||||
const obj_material_texture_data* texdata = material->material.texdata;
|
||||
for (int32_t i = 0; i < 1; i++, texdata++) {
|
||||
uint32_t texture_id = texdata->tex_index;
|
||||
if (texdata->tex_index == -1)
|
||||
break;
|
||||
|
||||
GLuint tex_id = -1;
|
||||
for (int32_t j = 0; j < args->texture_pattern_count; j++)
|
||||
if (args->texture_pattern_array[j].src == ::texture_id(0x00, texture_id)) {
|
||||
texture* tex = texture_manager_get_texture(args->texture_pattern_array[j].dst);
|
||||
if (tex)
|
||||
tex_id = tex->glid;
|
||||
break;
|
||||
}
|
||||
|
||||
if (tex_id == -1)
|
||||
tex_id = (*textures)[texdata->texture_index];
|
||||
|
||||
if (tex_id == -1)
|
||||
tex_id = rctx_ptr->empty_texture_2d->glid;
|
||||
|
||||
rend_data_ctx.state.active_bind_texture_2d(i, tex_id);
|
||||
|
||||
int32_t wrap_s;
|
||||
if (texdata->attrib.m.mirror_u)
|
||||
wrap_s = 2;
|
||||
else if (texdata->attrib.m.repeat_u)
|
||||
wrap_s = 1;
|
||||
else
|
||||
wrap_s = 0;
|
||||
|
||||
int32_t wrap_t;
|
||||
if (texdata->attrib.m.mirror_v)
|
||||
wrap_t = 2;
|
||||
else if (texdata->attrib.m.repeat_v)
|
||||
wrap_t = 1;
|
||||
else
|
||||
wrap_t = 0;
|
||||
|
||||
texture* tex = texture_manager_get_texture(texture_id);
|
||||
rend_data_ctx.state.bind_sampler(i, rctx_ptr->samplers[(wrap_t * 3 + wrap_s) * 2
|
||||
+ (!tex || tex->max_mipmap_level > 0 ? 1 : 0)]);
|
||||
}
|
||||
|
||||
vec4 ambient;
|
||||
vec4 diffuse;
|
||||
vec4 emission;
|
||||
vec4 specular;
|
||||
if (material->material.shader.index == -1) {
|
||||
ambient = 1.0f;
|
||||
diffuse = material->material.color.diffuse;
|
||||
emission = 1.0f;
|
||||
specular = material->material.color.specular;
|
||||
}
|
||||
else {
|
||||
ambient = material->material.color.ambient;
|
||||
diffuse = material->material.color.diffuse;
|
||||
emission = args->emission;
|
||||
specular = material->material.color.specular;
|
||||
}
|
||||
|
||||
draw_object_material_set_uniform(rend_data_ctx, material, true);
|
||||
rend_data_ctx.set_shader(rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shader_index);
|
||||
rend_data_ctx.set_batch_material_color(diffuse, ambient, emission,
|
||||
0.0f, specular, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
draw_object_material_set_parameter(rend_data_ctx, args->material);
|
||||
}
|
||||
|
||||
static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
@@ -649,7 +720,8 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
rend_data_ctx.shader_flags.arr[U_STAGE_SHADOW] = 1;
|
||||
|
||||
rend_data_ctx.shader_flags.arr[U_CHARA_SHADOW2] = args->shadow > SHADOW_CHARA ? 1 : 0;
|
||||
rend_data_ctx.shader_flags.arr[U_CHARA_SHADOW] = rctx_ptr->draw_state->rend_data[rend_data_ctx.index].self_shadow ? 1 : 0;
|
||||
rend_data_ctx.shader_flags.arr[U_CHARA_SHADOW]
|
||||
= rctx_ptr->draw_state->rend_data[rend_data_ctx.index].self_shadow ? 1 : 0;
|
||||
|
||||
const obj_material_texture_data* texdata = material->material.texdata;
|
||||
for (int32_t i = 0, j = 0; i < 8; i++, texdata++) {
|
||||
@@ -884,81 +956,6 @@ static void draw_object_material_set_parameter(
|
||||
reflect_uv_scale, refract_uv_scale);
|
||||
}
|
||||
|
||||
static void draw_object_material_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_material_data* material = args->material;
|
||||
const std::vector<GLuint>* textures = args->textures;
|
||||
if (material->material.attrib.m.double_sided)
|
||||
rend_data_ctx.state.disable_cull_face();
|
||||
|
||||
const obj_material_texture_data* texdata = material->material.texdata;
|
||||
for (int32_t i = 0; i < 1; i++, texdata++) {
|
||||
uint32_t texture_id = texdata->tex_index;
|
||||
if (texdata->tex_index == -1)
|
||||
break;
|
||||
|
||||
GLuint tex_id = -1;
|
||||
for (int32_t j = 0; j < args->texture_pattern_count; j++)
|
||||
if (args->texture_pattern_array[j].src == ::texture_id(0x00, texture_id)) {
|
||||
texture* tex = texture_manager_get_texture(args->texture_pattern_array[j].dst);
|
||||
if (tex)
|
||||
tex_id = tex->glid;
|
||||
break;
|
||||
}
|
||||
|
||||
if (tex_id == -1)
|
||||
tex_id = (*textures)[texdata->texture_index];
|
||||
|
||||
if (tex_id == -1)
|
||||
tex_id = rctx_ptr->empty_texture_2d->glid;
|
||||
|
||||
rend_data_ctx.state.active_bind_texture_2d(i, tex_id);
|
||||
|
||||
int32_t wrap_s;
|
||||
if (texdata->attrib.m.mirror_u)
|
||||
wrap_s = 2;
|
||||
else if (texdata->attrib.m.repeat_u)
|
||||
wrap_s = 1;
|
||||
else
|
||||
wrap_s = 0;
|
||||
|
||||
int32_t wrap_t;
|
||||
if (texdata->attrib.m.mirror_v)
|
||||
wrap_t = 2;
|
||||
else if (texdata->attrib.m.repeat_v)
|
||||
wrap_t = 1;
|
||||
else
|
||||
wrap_t = 0;
|
||||
|
||||
texture* tex = texture_manager_get_texture(texture_id);
|
||||
rend_data_ctx.state.bind_sampler(i, rctx_ptr->samplers[(wrap_t * 3 + wrap_s) * 2
|
||||
+ (!tex || tex->max_mipmap_level > 0 ? 1 : 0)]);
|
||||
}
|
||||
|
||||
vec4 ambient;
|
||||
vec4 diffuse;
|
||||
vec4 emission;
|
||||
vec4 specular;
|
||||
if (material->material.shader.index == -1) {
|
||||
ambient = 1.0f;
|
||||
diffuse = material->material.color.diffuse;
|
||||
emission = 1.0f;
|
||||
specular = material->material.color.specular;
|
||||
}
|
||||
else {
|
||||
ambient = material->material.color.ambient;
|
||||
diffuse = material->material.color.diffuse;
|
||||
emission = args->emission;
|
||||
specular = material->material.color.specular;
|
||||
}
|
||||
|
||||
draw_object_material_set_uniform(rend_data_ctx, material, true);
|
||||
rend_data_ctx.set_shader(rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shader_index);
|
||||
rend_data_ctx.set_batch_material_color(diffuse, ambient, emission,
|
||||
0.0f, specular, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
draw_object_material_set_parameter(rend_data_ctx, args->material);
|
||||
}
|
||||
|
||||
static void draw_object_material_set_uniform(render_data_context& rend_data_ctx,
|
||||
const obj_material_data* mat_data, bool disable_color_l) {
|
||||
obj_shader_compo_member shader_compo = mat_data->material.shader_compo.m;
|
||||
@@ -1013,6 +1010,22 @@ static void draw_object_material_set_uniform(render_data_context& rend_data_ctx,
|
||||
rend_data_ctx.shader_flags.arr[U45] = 1;
|
||||
}
|
||||
|
||||
static void draw_object_vertex_attrib_reset_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_mesh* mesh = args->mesh;
|
||||
obj_vertex_format vertex_format = mesh->vertex_format;
|
||||
|
||||
if (vertex_format & OBJ_VERTEX_BONE_DATA)
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 0;
|
||||
|
||||
if (args->morph_vertex_buffer) {
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH] = 0;
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 0;
|
||||
}
|
||||
|
||||
rend_data_ctx.state.active_texture(0);
|
||||
}
|
||||
|
||||
static void draw_object_vertex_attrib_reset_default(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_mesh* mesh = args->mesh;
|
||||
@@ -1032,20 +1045,48 @@ static void draw_object_vertex_attrib_reset_default(
|
||||
rend_data_ctx.state.active_texture(0);
|
||||
}
|
||||
|
||||
static void draw_object_vertex_attrib_reset_cheap(
|
||||
static void draw_object_vertex_attrib_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_mesh* mesh = args->mesh;
|
||||
obj_vertex_format vertex_format = mesh->vertex_format;
|
||||
|
||||
mat4 mats[2];
|
||||
mats[0] = mat4_identity;
|
||||
mats[1] = mat4_identity;
|
||||
const obj_material_data* material = args->material;
|
||||
if (material->material.texdata[0].tex_index != -1) {
|
||||
uint32_t tex_index = material->material.texdata[0].tex_index;
|
||||
|
||||
mats[0] = material->material.texdata[0].tex_coord_mat;
|
||||
if (material->material.texdata[0].shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
for (int32_t j = 0; j < args->texture_transform_count; j++)
|
||||
if (args->texture_transform_array[j].id == tex_index) {
|
||||
mats[0] = args->texture_transform_array[j].mat;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rend_data_ctx.set_batch_texcoord_transforms(mats);
|
||||
|
||||
if (vertex_format & OBJ_VERTEX_BONE_DATA)
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 1;
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 0;
|
||||
|
||||
if (args->morph_vertex_buffer) {
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH] = 1;
|
||||
|
||||
if (vertex_format & OBJ_VERTEX_COLOR0)
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 1;
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 0;
|
||||
|
||||
rend_data_ctx.set_batch_morph_weight(args->morph_weight);
|
||||
}
|
||||
else {
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH] = 0;
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 0;
|
||||
}
|
||||
|
||||
rend_data_ctx.state.active_texture(0);
|
||||
}
|
||||
|
||||
static void draw_object_vertex_attrib_set_default(
|
||||
@@ -1115,47 +1156,3 @@ static void draw_object_vertex_attrib_set_default(
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_INSTANCE] = 0;*/
|
||||
}
|
||||
|
||||
static void draw_object_vertex_attrib_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args) {
|
||||
const obj_mesh* mesh = args->mesh;
|
||||
obj_vertex_format vertex_format = mesh->vertex_format;
|
||||
|
||||
mat4 mats[2];
|
||||
mats[0] = mat4_identity;
|
||||
mats[1] = mat4_identity;
|
||||
const obj_material_data* material = args->material;
|
||||
if (material->material.texdata[0].tex_index != -1) {
|
||||
uint32_t tex_index = material->material.texdata[0].tex_index;
|
||||
|
||||
mats[0] = material->material.texdata[0].tex_coord_mat;
|
||||
if (material->material.texdata[0].shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
for (int32_t j = 0; j < args->texture_transform_count; j++)
|
||||
if (args->texture_transform_array[j].id == tex_index) {
|
||||
mats[0] = args->texture_transform_array[j].mat;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rend_data_ctx.set_batch_texcoord_transforms(mats);
|
||||
|
||||
if (vertex_format & OBJ_VERTEX_BONE_DATA)
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 1;
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_SKINNING] = 0;
|
||||
|
||||
if (args->morph_vertex_buffer) {
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH] = 1;
|
||||
|
||||
if (vertex_format & OBJ_VERTEX_COLOR0)
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 1;
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 0;
|
||||
|
||||
rend_data_ctx.set_batch_morph_weight(args->morph_weight);
|
||||
}
|
||||
else {
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH] = 0;
|
||||
rend_data_ctx.shader_flags.arr[U_MORPH_COLOR] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
+18
-11
@@ -403,7 +403,7 @@ namespace rndr {
|
||||
if (!tex)
|
||||
return;
|
||||
|
||||
float_t v5 = tanf(cam.get_fov() * 0.5f);
|
||||
float_t v5 = tanf(cam.get_fov() * 0.5f * DEG_TO_RAD_FLOAT);
|
||||
light_set* set = &rctx_ptr->light_set[LIGHT_SET_MAIN];
|
||||
light_data* data = &set->lights[LIGHT_SUN];
|
||||
|
||||
@@ -1104,6 +1104,12 @@ namespace rndr {
|
||||
rend_data_ctx.state.bind_framebuffer(0);
|
||||
}
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < GL_REND_STATE_COUNT; i++) {
|
||||
render_data_context rend_data_ctx((gl_rend_state_index)i);
|
||||
rend_data_ctx.set_scene_framebuffer_size(
|
||||
render_width[0], render_height[0], render_width[0], render_height[0]);
|
||||
}
|
||||
}
|
||||
|
||||
int32_t Render::render_texture_set(texture* render_texture, bool task_photo) {
|
||||
@@ -1196,7 +1202,6 @@ namespace rndr {
|
||||
gl_state.bind_texture_2d(rend_texture[0].GetDepthTex());
|
||||
GLint swizzle[] = { GL_RED, GL_RED, GL_RED, GL_ONE };
|
||||
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle);
|
||||
gl_state.bind_texture_2d(0);
|
||||
|
||||
for (int32_t i = 0; i < 3; i++) {
|
||||
texture_id id = taa_tex[i]->id;
|
||||
@@ -1226,8 +1231,6 @@ namespace rndr {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
}
|
||||
|
||||
gl_state.bind_texture_2d(0);
|
||||
|
||||
dof->resize(render_post_width[0], render_post_height[0]);
|
||||
|
||||
for (int32_t i = 0; i < 1; i++) {
|
||||
@@ -1543,6 +1546,12 @@ namespace rndr {
|
||||
render_post_width_scale = (float_t)render_width[0] / (float_t)render_post_width[0];
|
||||
render_post_height_scale = (float_t)render_height[0] / (float_t)render_post_height[0];
|
||||
|
||||
for (int32_t i = 0; i < GL_REND_STATE_COUNT; i++) {
|
||||
render_data_context rend_data_ctx((gl_rend_state_index)i);
|
||||
rend_data_ctx.set_scene_framebuffer_size(
|
||||
render_width[0], render_height[0], render_width[0], render_height[0]);
|
||||
}
|
||||
|
||||
taa_blend = -1.0f;
|
||||
}
|
||||
|
||||
@@ -1604,7 +1613,7 @@ namespace rndr {
|
||||
|
||||
rend_data_ctx.state.begin_event("PostProcess::tone_map");
|
||||
|
||||
update_tone_map_lut();
|
||||
update_tone_map_lut(rend_data_ctx.state);
|
||||
|
||||
rend_data_ctx.shader_flags.arr[U_TONE_MAP] = (int32_t)tone_map;
|
||||
rend_data_ctx.shader_flags.arr[U_FLARE] = 0;
|
||||
@@ -1857,11 +1866,9 @@ namespace rndr {
|
||||
|
||||
rend_data_ctx.state.active_bind_texture_2d(0, exposure_history->glid);
|
||||
if (reset_exposure)
|
||||
rend_data_ctx.state.copy_tex_sub_image_2d(GL_TEXTURE_2D,
|
||||
0, 0, 0, 0, 0, 32, 1);
|
||||
rend_data_ctx.state.copy_tex_sub_image_2d(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 32, 1);
|
||||
else
|
||||
rend_data_ctx.state.copy_tex_sub_image_2d(GL_TEXTURE_2D,
|
||||
0, exposure_history_counter, 0, 0, 0, 1, 1);
|
||||
rend_data_ctx.state.copy_tex_sub_image_2d(GL_TEXTURE_2D, 0, exposure_history_counter, 0, 0, 0, 1, 1);
|
||||
exposure_history_counter = (exposure_history_counter + 1) % 32;
|
||||
}
|
||||
|
||||
@@ -2145,7 +2152,7 @@ namespace rndr {
|
||||
reduce_tex_draw = reduce_tex[0]->glid;
|
||||
}
|
||||
|
||||
void Render::update_tone_map_lut() {
|
||||
void Render::update_tone_map_lut(p_gl_rend_state& p_gl_rend_st) {
|
||||
if (!update_lut)
|
||||
return;
|
||||
|
||||
@@ -2181,7 +2188,7 @@ namespace rndr {
|
||||
glTextureSubImage2D(tonemap_lut_texture, 0, 0, 0,
|
||||
16 * TONE_MAP_SAT_GAMMA_SAMPLES, 1, GL_RG, GL_FLOAT, tex_data);
|
||||
else {
|
||||
gl_state.bind_texture_2d(tonemap_lut_texture);
|
||||
p_gl_rend_st.bind_texture_2d(tonemap_lut_texture);
|
||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
|
||||
16 * TONE_MAP_SAT_GAMMA_SAMPLES, 1, GL_RG, GL_FLOAT, tex_data);
|
||||
}
|
||||
|
||||
+3
-2
@@ -266,7 +266,8 @@ namespace rndr {
|
||||
void update_res(bool set, int32_t base_downsample);
|
||||
|
||||
private:
|
||||
void apply_mlaa(render_data_context& rend_data_ctx, int32_t destination, int32_t source, int32_t ss_alpha_mask);
|
||||
void apply_mlaa(render_data_context& rend_data_ctx,
|
||||
int32_t destination, int32_t source, int32_t ss_alpha_mask);
|
||||
void apply_tone_map(render_data_context& rend_data_ctx, texture* light_proj_tex, int32_t npr_param);
|
||||
void calc_exposure(render_data_context& rend_data_ctx, const cam_data& cam);
|
||||
void calc_gaussian_blur(render_data_context& rend_data_ctx, float_t start, float_t step,
|
||||
@@ -278,7 +279,7 @@ namespace rndr {
|
||||
void downsample(render_data_context& rend_data_ctx);
|
||||
void generate_mlaa_area_texture();
|
||||
void get_blur(render_data_context& rend_data_ctx);
|
||||
void update_tone_map_lut();
|
||||
void update_tone_map_lut(p_gl_rend_state& p_gl_rend_st);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+35
-53
@@ -39,7 +39,8 @@ static void draw_pass_shadow_filter(render_data_context& rend_data_ctx,
|
||||
static void draw_pass_shadow_esm_filter(render_data_context& rend_data_ctx,
|
||||
RenderTexture* dst, RenderTexture* buf, RenderTexture* src);
|
||||
static bool draw_pass_shadow_litproj(render_data_context& rend_data_ctx, light_proj* litproj, cam_data& cam);
|
||||
static void draw_pass_sss_contour(render_data_context& rend_data_ctx, render_context* rctx, rndr::Render* rend);
|
||||
static void draw_pass_sss_contour(render_data_context& rend_data_ctx,
|
||||
render_context* rctx, rndr::Render* rend, cam_data& cam);
|
||||
static void draw_pass_sss_filter(render_data_context& rend_data_ctx, render_context* rctx, sss_data* sss);
|
||||
static int32_t draw_pass_3d_get_translucent_count(render_context* rctx);
|
||||
static void draw_pass_3d_shadow_reset(render_data_context& rend_data_ctx, render_context* rctx);
|
||||
@@ -290,17 +291,12 @@ namespace rndr {
|
||||
gl_state.get();
|
||||
sprite_manager_pre_draw();
|
||||
|
||||
static const vec4 color_clear = 0.0f;
|
||||
|
||||
{
|
||||
render_data_context rend_data_ctx(GL_REND_STATE_PRE_3D);
|
||||
rend_data_ctx.state.get();
|
||||
rend_data_ctx.state.bind_framebuffer(0);
|
||||
static const vec4 color_clear = 0.0f;
|
||||
rend_data_ctx.state.clear_buffer(GL_COLOR, 0, (float_t*)&color_clear);
|
||||
|
||||
rend_data_ctx.set_scene_framebuffer_size(render->render_width[0],
|
||||
render->render_height[0], render->render_width[0], render->render_height[0]);
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
rend_data_ctx.state.set_depth_func(GL_LEQUAL);
|
||||
@@ -573,7 +569,7 @@ namespace rndr {
|
||||
if (npr_param == 1) {
|
||||
if (sss->enable && sss->npr_contour) {
|
||||
rend_data_ctx.shader_flags.arr[U_NPR] = 1;
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend);
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend, reflect_cam);
|
||||
}
|
||||
else if (npr) {
|
||||
refl_tex.Bind(rend_data_ctx.state);
|
||||
@@ -587,7 +583,7 @@ namespace rndr {
|
||||
rctx->draw_state->rend_data[rend_data_ctx.index].shader_index = -1;
|
||||
rend_data_ctx.state.bind_framebuffer(0);
|
||||
rend_data_ctx.shader_flags.arr[U_NPR] = 1;
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend);
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend, reflect_cam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,8 +622,7 @@ namespace rndr {
|
||||
|
||||
//if (sss->npr_contour) {
|
||||
rend->rend_texture[0].Bind(rend_data_ctx.state);
|
||||
rend_data_ctx.state.set_viewport(0, 0,
|
||||
rend->rend_texture[0].GetWidth(), rend->rend_texture[0].GetHeight());
|
||||
rend->rend_texture[0].SetViewport(rend_data_ctx.state);
|
||||
//}
|
||||
//else {
|
||||
// sss->textures[0].Bind(rend_data_ctx.state);
|
||||
@@ -660,7 +655,7 @@ namespace rndr {
|
||||
if (npr_param == 1) {
|
||||
if (sss->enable && sss->npr_contour) {
|
||||
rend_data_ctx.shader_flags.arr[U_NPR] = 1;
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend);
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend, cam);
|
||||
}
|
||||
else if (npr) {
|
||||
rend->rend_texture[0].Bind(rend_data_ctx.state);
|
||||
@@ -674,7 +669,7 @@ namespace rndr {
|
||||
rctx->draw_state->rend_data[rend_data_ctx.index].shader_index = -1;
|
||||
rend_data_ctx.state.bind_framebuffer(0);
|
||||
rend_data_ctx.shader_flags.arr[U_NPR] = 1;
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend);
|
||||
draw_pass_sss_contour(rend_data_ctx, rctx, rend, cam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -764,10 +759,6 @@ namespace rndr {
|
||||
reflect_draw = true;
|
||||
rctx->draw_state->rend_data[rend_data_ctx.index].shader_index = -1;
|
||||
|
||||
int32_t render_width = refl_tex.GetWidth();
|
||||
int32_t render_height = refl_tex.GetHeight();
|
||||
rend_data_ctx.set_scene_framebuffer_size(render_width, render_height, render_width, render_height);
|
||||
|
||||
if (shadow)
|
||||
draw_pass_3d_shadow_set(rend_data_ctx, shadow_ptr, rctx);
|
||||
else
|
||||
@@ -816,9 +807,6 @@ namespace rndr {
|
||||
|
||||
if (shadow)
|
||||
draw_pass_3d_shadow_reset(rend_data_ctx, rctx);
|
||||
|
||||
rend_data_ctx.set_scene_framebuffer_size(render->render_width[0],
|
||||
render->render_height[0], render->render_width[0], render->render_height[0]);
|
||||
reflect_draw = false;
|
||||
}
|
||||
else if (reflect_type == STAGE_DATA_REFLECT_REFLECT_MAP) {
|
||||
@@ -856,8 +844,8 @@ namespace rndr {
|
||||
if (rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_REFRACT_OPAQUE)
|
||||
|| rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_REFRACT_TRANSPARENT)
|
||||
|| rctx->disp_manager->get_obj_count(mdl::OBJ_TYPE_REFRACT_TRANSLUCENT)) {
|
||||
texture* refr_tex = refract_texture.color_texture;
|
||||
rend_data_ctx.state.set_viewport(0, 0, refr_tex->width, refr_tex->height);
|
||||
refract_texture.SetViewport(rend_data_ctx.state);
|
||||
rend_data_ctx.set_batch_scene_camera(cam);
|
||||
|
||||
for (int32_t i = LIGHT_SET_MAIN; i < LIGHT_SET_MAX; i++)
|
||||
rctx->light_set[i].data_set(rend_data_ctx, rctx->face, (light_set_id)i);
|
||||
@@ -1047,7 +1035,7 @@ namespace rndr {
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
}
|
||||
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_OPAQUE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_OPAQUE, cam);
|
||||
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
rend_data_ctx.state.set_depth_mask(GL_TRUE);
|
||||
@@ -1076,13 +1064,13 @@ namespace rndr {
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_ALPHA);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_ALPHA, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
/*if (npr_param == 1) {
|
||||
rend_data_ctx.state.set_color_mask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
rend_data_ctx.state.clear_color(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
rend_data_ctx.state.clear(GL_COLOR_BUFFER_BIT);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
}*/
|
||||
|
||||
@@ -1098,7 +1086,7 @@ namespace rndr {
|
||||
}
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); // X
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_TYPE_2);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_TYPE_2, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
rend_data_ctx.state.set_depth_mask(GL_TRUE);
|
||||
@@ -1109,7 +1097,7 @@ namespace rndr {
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_NORMAL);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_NORMAL, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
@@ -1124,6 +1112,8 @@ namespace rndr {
|
||||
|
||||
cam_data local_cam = cam;
|
||||
local_cam.set_fov(32.2673416137695f);
|
||||
local_cam.calc_persp_proj_mat_offset(1.0f, rctx->render.get_taa_offset());
|
||||
local_cam.calc_view_proj_mat();
|
||||
rend_data_ctx.set_batch_scene_camera(local_cam);
|
||||
|
||||
if (alpha_z_sort)
|
||||
@@ -1139,7 +1129,7 @@ namespace rndr {
|
||||
rend_data_ctx.state.disable_blend();
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_LOCAL);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_LOCAL, local_cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
rend_data_ctx.state.end_event();
|
||||
@@ -1253,8 +1243,8 @@ namespace rndr {
|
||||
rctx->quad_ubo.WriteMemory(rend_data_ctx.state, quad_data);
|
||||
|
||||
contour_params_shader_data contour_params_data = {};
|
||||
const float_t max_distance = rctx->camera->max_distance;
|
||||
const float_t min_distance = rctx->camera->min_distance;
|
||||
const float_t max_distance = cam.get_max_distance();
|
||||
const float_t min_distance = cam.get_min_distance();
|
||||
contour_params_data.g_near_far = {
|
||||
(float_t)(max_distance / (max_distance - min_distance)),
|
||||
(float_t)(-(max_distance * min_distance) / (max_distance - min_distance)),
|
||||
@@ -1302,7 +1292,8 @@ namespace rndr {
|
||||
}
|
||||
}
|
||||
|
||||
void image_filter_scale(render_data_context& rend_data_ctx, RenderTexture* dst, texture* src, const vec4& scale) {
|
||||
void image_filter_scale(render_data_context& rend_data_ctx,
|
||||
RenderTexture* dst, texture* src, const vec4& scale) {
|
||||
if (!dst || !dst->color_texture->glid || !dst->color_texture || !src || !src->glid)
|
||||
return;
|
||||
|
||||
@@ -1421,7 +1412,6 @@ static void draw_pass_shadow_end_make_shadowmap(Shadow* shad,
|
||||
|
||||
RenderTexture* rend_tex = shad->curr_render_textures[1 + index];
|
||||
RenderTexture& rend_buf_tex = rctx_ptr->shadow_buffer;
|
||||
rend_tex->Bind(rend_data_ctx.state);
|
||||
|
||||
image_filter_scale(rend_data_ctx, rend_tex,
|
||||
shad->curr_render_textures[0]->color_texture);
|
||||
@@ -1592,7 +1582,8 @@ static bool draw_pass_shadow_litproj(render_data_context& rend_data_ctx, light_p
|
||||
return true;
|
||||
}
|
||||
|
||||
static void draw_pass_sss_contour(render_data_context& rend_data_ctx, render_context* rctx, rndr::Render* rend) {
|
||||
static void draw_pass_sss_contour(render_data_context& rend_data_ctx,
|
||||
render_context* rctx, rndr::Render* rend, cam_data& cam) {
|
||||
if (reflect_draw)
|
||||
rctx->reflect_buffer.Bind(rend_data_ctx.state);
|
||||
else
|
||||
@@ -1618,10 +1609,9 @@ static void draw_pass_sss_contour(render_data_context& rend_data_ctx, render_con
|
||||
}
|
||||
rend_data_ctx.state.active_texture(0);
|
||||
|
||||
camera* cam = rctx->camera;
|
||||
float_t v3 = 1.0f / tanf(cam->fov * 0.5f * DEG_TO_RAD_FLOAT);
|
||||
float_t v3 = 1.0f / tanf(cam.get_fov() * 0.5f);
|
||||
|
||||
vec3 direction = cam->interest - cam->view_point;
|
||||
vec3 direction = cam.get_interest() - cam.get_view_point();
|
||||
float_t length = vec3::length(direction);
|
||||
float_t v7 = direction.y;
|
||||
if (length != 0.0f)
|
||||
@@ -1633,8 +1623,8 @@ static void draw_pass_sss_contour(render_data_context& rend_data_ctx, render_con
|
||||
|
||||
contour_coef_shader_data shader_data = {};
|
||||
shader_data.g_contour = { v9 * 0.004f + 0.0027f, 0.003f, v3 * 0.35f, 0.0008f };
|
||||
const float_t max_distance = rctx->camera->max_distance;
|
||||
const float_t min_distance = rctx->camera->min_distance;
|
||||
const float_t max_distance = cam.get_max_distance();
|
||||
const float_t min_distance = cam.get_min_distance();
|
||||
shader_data.g_near_far = {
|
||||
(float_t)(max_distance / (max_distance - min_distance)),
|
||||
(float_t)(-(max_distance * min_distance) / (max_distance - min_distance)),
|
||||
@@ -2007,10 +1997,6 @@ static void draw_pass_reflect_full(render_data_context& rend_data_ctx, rndr::Ren
|
||||
reflect_draw = true;
|
||||
rctx->draw_state->rend_data[rend_data_ctx.index].shader_index = -1;
|
||||
|
||||
int32_t render_width = refl_tex.GetWidth();
|
||||
int32_t render_height = refl_tex.GetHeight();
|
||||
rend_data_ctx.set_scene_framebuffer_size(render_width, render_height, render_width, render_height);
|
||||
|
||||
if (render_manager->shadow)
|
||||
draw_pass_3d_shadow_set(rend_data_ctx, render_manager->shadow_ptr, rctx);
|
||||
else
|
||||
@@ -2052,7 +2038,7 @@ static void draw_pass_reflect_full(render_data_context& rend_data_ctx, rndr::Ren
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
}
|
||||
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_OPAQUE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_OPAQUE, cam);
|
||||
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
rend_data_ctx.state.set_depth_mask(GL_TRUE);
|
||||
@@ -2067,13 +2053,13 @@ static void draw_pass_reflect_full(render_data_context& rend_data_ctx, rndr::Ren
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_ALPHA);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_ALPHA, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
/*if (npr_param == 1) {
|
||||
rend_data_ctx.state.set_color_mask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
rend_data_ctx.state.clear_color(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
rend_data_ctx.state.clear(GL_COLOR_BUFFER_BIT);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
}*/
|
||||
|
||||
@@ -2090,12 +2076,12 @@ static void draw_pass_reflect_full(render_data_context& rend_data_ctx, rndr::Ren
|
||||
}
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); // X
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_TYPE_2);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_TYPE_2, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
rend_data_ctx.state.disable_depth_test();
|
||||
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_NORMAL);
|
||||
Glitter::glt_particle_manager->DispScenes(rend_data_ctx, Glitter::DISP_NORMAL, cam);
|
||||
rend_data_ctx.state.set_color_mask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
|
||||
rend_data_ctx.state.active_bind_texture_2d(14, 0);
|
||||
@@ -2103,10 +2089,6 @@ static void draw_pass_reflect_full(render_data_context& rend_data_ctx, rndr::Ren
|
||||
|
||||
if (render_manager->shadow)
|
||||
draw_pass_3d_shadow_reset(rend_data_ctx, rctx);
|
||||
|
||||
rndr::Render* render = render_manager->render;
|
||||
rend_data_ctx.set_scene_framebuffer_size(render->render_width[0],
|
||||
render->render_height[0], render->render_width[0], render->render_height[0]);
|
||||
reflect_draw = false;
|
||||
|
||||
rend_data_ctx.state.set_cull_face_mode(GL_BACK);
|
||||
|
||||
@@ -81,8 +81,8 @@ namespace renderer {
|
||||
shaders_ft.set(rend_data_ctx.state, rend_data_ctx.shader_flags, SHADER_FT_REDUCE);
|
||||
rend_data_ctx.state.active_bind_texture_2d(0, texture);
|
||||
rend_data_ctx.state.bind_sampler(0, rctx_ptr->render_samplers[1]);
|
||||
rctx_ptr->render.draw_quad(rend_data_ctx, fbo.width, fbo.height, 1.0f, 1.0f,
|
||||
0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
rctx_ptr->render.draw_quad(rend_data_ctx, fbo.width, fbo.height,
|
||||
1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
rend_data_ctx.state.enable_depth_test();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -191,8 +191,8 @@ namespace spr {
|
||||
spr::SprArgsInner& args_inner, std::vector<sprite_draw_param>& draw_param_buffer,
|
||||
std::vector<sprite_draw_vertex>& vertex_buffer, std::vector<uint32_t>& index_buffer);
|
||||
static void draw_sprite(render_data_context& rend_data_ctx,
|
||||
spr::SpriteManager* sprite_manager, const SprArgs& args,
|
||||
const mat4& mat, int32_t x_min, int32_t y_min, int32_t x_max, int32_t y_max, texture* overlay_tex);
|
||||
spr::SpriteManager* sprite_manager, const SprArgs& args, const mat4& mat,
|
||||
int32_t x_min, int32_t y_min, int32_t x_max, int32_t y_max, texture* overlay_tex);
|
||||
static void draw_sprite_begin(render_data_context& rend_data_ctx);
|
||||
static void draw_sprite_copy_overlay_texture(
|
||||
render_data_context& rend_data_ctx, const SprArgs& args, const mat4& mat, const vec3* vtx,
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ const __m128 vec2_neg = { -0.0f, -0.0f, 0.0f, 0.0f };
|
||||
const __m128 vec3_neg = { -0.0f, -0.0f, -0.0f, 0.0f };
|
||||
const __m128 vec4_neg = { -0.0f, -0.0f, -0.0f, -0.0f };
|
||||
|
||||
extern const __m128d vec2d_neg = { -0.0, -0.0f };
|
||||
const __m128d vec2d_neg = { -0.0, -0.0f };
|
||||
|
||||
const __m128i vec2i_abs = {
|
||||
(char)0xFF, (char)0xFF, (char)0xFF, (char)0x7F,
|
||||
|
||||
Reference in New Issue
Block a user