mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-09 23:58:26 +03:00
Shader: total overhaul of permutations and shader flags
This commit is contained in:
+19
-19
@@ -13,7 +13,7 @@ extern render_context* rctx_ptr;
|
||||
Shadow::Shadow() : curr_render_textures(), shadow_range(), shadow_range_factor(), field_1C0(), field_1C8(),
|
||||
field_200(), field_208(), near_blur(), blur_filter(), far_blur(), field_2BC(), distance(), field_2C4(),
|
||||
z_near(), z_far(), field_2D0(), field_2D4(), field_2D8(), field_2DC(), field_2E0(), shadow_ambient(),
|
||||
show_texture(), num_light(), light_enable(), self_shadow(), blur_filter_enable(), separate() {
|
||||
show_texture(), num_shadow(), shadow_enable(), self_shadow(), blur_filter_enable(), separate() {
|
||||
reset();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ Shadow::~Shadow() {
|
||||
|
||||
void Shadow::ctrl() {
|
||||
for (int32_t i = 0; i < 2; i++)
|
||||
light_enable[i] = false;
|
||||
shadow_enable[i] = false;
|
||||
|
||||
if (rctx_ptr->render_manager->shadow) {
|
||||
view_mat[0] = rctx_ptr->camera->view;
|
||||
@@ -41,24 +41,24 @@ void Shadow::ctrl() {
|
||||
|
||||
for (int32_t i = 0; i < 2; i++)
|
||||
if (rctx_ptr->disp_manager->get_obj_count((mdl::ObjType)((int32_t)mdl::OBJ_TYPE_SHADOW_CHARA + i)))
|
||||
light_enable[i] = true;
|
||||
shadow_enable[i] = true;
|
||||
}
|
||||
|
||||
int32_t count = 0;
|
||||
num_light = 0;
|
||||
num_shadow = 0;
|
||||
for (int32_t i = 0; i < 2; i++)
|
||||
if (light_enable[i] && field_1D0[i].size() > 0) {
|
||||
num_light++;
|
||||
if (shadow_enable[i] && field_1D0[i].size() > 0) {
|
||||
num_shadow++;
|
||||
count += (int32_t)field_1D0[i].size();
|
||||
}
|
||||
else
|
||||
light_enable[i] = false;
|
||||
shadow_enable[i] = false;
|
||||
|
||||
if (count < 3) {
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
field_1A8[i] = 0.0f;
|
||||
field_1C8[i] = 0.0f;
|
||||
if (!light_enable[i] || field_1D0[i].size() < 1)
|
||||
if (!shadow_enable[i] || field_1D0[i].size() < 1)
|
||||
continue;
|
||||
|
||||
vec3 v7 = 0.0f;
|
||||
@@ -85,11 +85,11 @@ void Shadow::ctrl() {
|
||||
field_1C8[i] = v15;
|
||||
}
|
||||
|
||||
if (num_light > 0) {
|
||||
if (num_shadow > 0) {
|
||||
vec3 view_point = 0.0f;
|
||||
vec3 interest = 0.0f;
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
if (!light_enable[i])
|
||||
if (!shadow_enable[i])
|
||||
continue;
|
||||
|
||||
vec3 v11 = field_1A8[i] - direction * field_208;
|
||||
@@ -104,8 +104,8 @@ void Shadow::ctrl() {
|
||||
interest += this->interest[i];
|
||||
}
|
||||
|
||||
view_point_shared = view_point * (1.0f / (float_t)num_light);
|
||||
interest_shared = interest * (1.0f / (float_t)num_light);
|
||||
view_point_shared = view_point * (1.0f / (float_t)num_shadow);
|
||||
interest_shared = interest * (1.0f / (float_t)num_shadow);
|
||||
}
|
||||
|
||||
float_t v2 = max_def(field_1C8[0], field_1C8[1]);
|
||||
@@ -113,7 +113,7 @@ void Shadow::ctrl() {
|
||||
shadow_range = v2 + 1.2f;
|
||||
field_200[0] = 0;
|
||||
field_200[1] = 1;
|
||||
if (num_light >= 2) {
|
||||
if (num_shadow >= 2) {
|
||||
vec3 v12 = field_1A8[0] - interest_shared;
|
||||
vec3 v14 = field_1A8[1] - interest_shared;
|
||||
|
||||
@@ -152,7 +152,7 @@ void Shadow::ctrl() {
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
field_1A8[i] = 0.0f;
|
||||
field_1C8[i] = 0.0;
|
||||
if (!light_enable[i] || field_1D0[i].size() < 1)
|
||||
if (!shadow_enable[i] || field_1D0[i].size() < 1)
|
||||
continue;
|
||||
|
||||
vec3 v22 = 0.0f;
|
||||
@@ -179,9 +179,9 @@ void Shadow::ctrl() {
|
||||
field_1C8[i] = v30;
|
||||
}
|
||||
|
||||
if (num_light > 0) {
|
||||
if (num_shadow > 0) {
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
if (!light_enable[i])
|
||||
if (!shadow_enable[i])
|
||||
continue;
|
||||
|
||||
vec3 v53 = field_1A8[i] - direction * field_208;
|
||||
@@ -213,12 +213,12 @@ void Shadow::ctrl() {
|
||||
shadow_range = v67 + 1.2f;
|
||||
field_200[0] = 0;
|
||||
field_200[1] = 1;
|
||||
if (num_light >= 2) {
|
||||
if (num_shadow >= 2) {
|
||||
float_t v68 = 0.0f;
|
||||
float_t v69 = 0.0f;
|
||||
float_t v70 = 0.0f;
|
||||
for (int32_t i = 0; i < 2; i++) {
|
||||
if (!light_enable[i])
|
||||
if (!shadow_enable[i])
|
||||
continue;
|
||||
|
||||
for (vec3& j : field_1D0[i]) {
|
||||
@@ -341,7 +341,7 @@ void Shadow::reset() {
|
||||
field_2DC = 2.0f;
|
||||
field_2E0 = 0.05f;
|
||||
shadow_ambient = 0.4f;
|
||||
num_light = 0;
|
||||
num_shadow = 0;
|
||||
direction = vec3(0.0f, -1.0f, -1.0f) * (1.0f / sqrtf(2.0f));
|
||||
show_texture = false;
|
||||
self_shadow = true;
|
||||
|
||||
Reference in New Issue
Block a user