Shader: total overhaul of permutations and shader flags
This commit is contained in:
+18
-18
@@ -17,7 +17,7 @@ void(FASTCALL* shadow_ptr_init)() = (void(FASTCALL*)())0x00000001405E8890;
|
||||
|
||||
void Shadow::ctrl() {
|
||||
for (int32_t i = 0; i < 2; i++)
|
||||
light_enable[i] = false;
|
||||
shadow_enable[i] = false;
|
||||
|
||||
if (render_manager->shadow) {
|
||||
view_mat[0] = camera_data->view;
|
||||
@@ -35,24 +35,24 @@ void Shadow::ctrl() {
|
||||
|
||||
for (int32_t i = 0; i < 2; i++)
|
||||
if (disp_manager->get_obj_count((mdl::ObjType)(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;
|
||||
@@ -79,11 +79,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;
|
||||
@@ -98,8 +98,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]);
|
||||
@@ -107,7 +107,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;
|
||||
|
||||
@@ -146,7 +146,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;
|
||||
@@ -173,9 +173,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;
|
||||
@@ -207,12 +207,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]) {
|
||||
@@ -335,7 +335,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