Skip to content

Commit f850725

Browse files
authored
Merge pull request #3597 from Baezon/fix-poof-density
Fix for 'anemic' poofs
2 parents 344eb5a + 4892ac7 commit f850725

File tree

5 files changed

+12
-37
lines changed

5 files changed

+12
-37
lines changed

code/globalincs/systemvars.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,6 @@ void detail_level_set(int level)
328328
Assert( level < NUM_DEFAULT_DETAIL_LEVELS );
329329

330330
Detail = Detail_defaults[level];
331-
332-
// reset nebula stuff
333-
neb2_set_detail_level(level);
334331
}
335332

336333
// Returns the current detail level or -1 if custom.

code/menuui/optionsmenu.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,6 @@ void options_detail_sliders_update()
13531353

13541354
// modify nebula stuff
13551355
Detail.nebula_detail = Detail_sliders[gr_screen.res][NEBULA_DETAIL_SLIDER].slider.pos;
1356-
neb2_set_detail_level(Detail.nebula_detail);
13571356

13581357
Detail.hardware_textures = Detail_sliders[gr_screen.res][HARDWARE_TEXTURES_SLIDER].slider.pos;
13591358
Detail.num_small_debris = Detail_sliders[gr_screen.res][SHARD_CULLING_SLIDER].slider.pos;

code/nebula/neb.cpp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,6 @@ const float NEB_FOG_FAR_PCT = 0.1f;
119119

120120
SCP_vector<poof> Neb2_poofs;
121121

122-
int Neb2_detail = 2;
123-
124122
int Neb2_background_color[3] = {0, 0, 255}; // rgb background color (used for lame rendering)
125123

126124
const SCP_vector<std::pair<int, SCP_string>> DetailLevelValues = {{ 0, "Minimum" },
@@ -132,12 +130,8 @@ const SCP_vector<std::pair<int, SCP_string>> DetailLevelValues = {{ 0, "Minimum"
132130
const auto ModelDetailOption = options::OptionBuilder<int>("Graphics.NebulaDetail",
133131
"Nebula Detail",
134132
"Detail level of nebulas").category("Graphics").values(
135-
DetailLevelValues).default_val(MAX_DETAIL_LEVEL).importance(7).change_listener([](int val, bool initial) {
133+
DetailLevelValues).default_val(MAX_DETAIL_LEVEL).importance(7).change_listener([](int val, bool) {
136134
Detail.nebula_detail = val;
137-
if (!initial) {
138-
// This is only needed for changes after the game startup
139-
neb2_set_detail_level(Detail.nebula_detail);
140-
}
141135
return true;
142136
}).finish();
143137

@@ -261,22 +255,6 @@ bool poof_is_used(size_t idx) {
261255
return (Neb2_poof_flags & (1 << idx)) != 0;
262256
}
263257

264-
// set detail level
265-
void neb2_set_detail_level(int level)
266-
{
267-
// sanity
268-
if (level < 0) {
269-
Neb2_detail = 0;
270-
return;
271-
}
272-
if (level > MAX_DETAIL_LEVEL) {
273-
Neb2_detail = MAX_DETAIL_LEVEL;
274-
return;
275-
}
276-
277-
Neb2_detail = level;
278-
}
279-
280258
void neb2_get_fog_color(ubyte *r, ubyte *g, ubyte *b)
281259
{
282260
if (r) *r = Neb2_fog_color[0];
@@ -313,7 +291,7 @@ void neb2_poof_setup() {
313291
}
314292
}
315293
Poof_density_multiplier = Poof_density_sum_square / (Poof_density_sum * Poof_density_sum);
316-
Poof_density_multiplier *= (Neb2_detail + 0.5f) / (MAX_DETAIL_LEVEL + 0.5f); // scale the poofs down based on detail level
294+
Poof_density_multiplier *= (Detail.nebula_detail + 0.5f) / (MAX_DETAIL_LEVEL + 0.5f); // scale the poofs down based on detail level
317295
}
318296

319297
// initialize nebula stuff - call from game_post_level_init(), so the mission has been loaded

code/nebula/neb.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ typedef struct poof_info {
7676
poof_info() {
7777
bitmap_filename[0] = '\0';
7878
bitmap = -1;
79-
scale = ::util::UniformFloatRange(150.0f, 150.0f);
80-
density = 1 / (150.f * 150.f * 150.f);
79+
scale = ::util::UniformFloatRange(175.0f, 175.0f);
80+
density = 1 / (110.f * 110.f * 110.f);
8181
rotation = ::util::UniformFloatRange(-3.7f, 3.7f);
82-
view_dist = 360.f;
83-
alpha = ::util::UniformFloatRange(0.5f, 0.5f);
82+
view_dist = 250.f;
83+
alpha = ::util::UniformFloatRange(0.8f, 0.8f);
8484
}
8585
} poof_info;
8686

@@ -125,9 +125,6 @@ typedef struct neb2_detail {
125125
// initialize neb2 stuff at game startup
126126
void neb2_init();
127127

128-
// set detail level
129-
void neb2_set_detail_level(int level);
130-
131128
//init neb stuff - WMC
132129
void neb2_level_init();
133130

code/render/3ddraw.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,9 @@ void g3_render_rect_oriented(material* mat_info, vec3d *pos, vec3d *norm, float
501501
//void render_rotated_bitmap(int texture, float alpha, vertex *pnt, float angle, float rad)
502502
void g3_render_rect_screen_aligned_rotated(material *mat_params, vertex *pnt, float angle, float rad)
503503
{
504-
rad *= 1.41421356f;//1/0.707, becase these are the points of a square or width and hieght rad
504+
// holdover mistake from retail causes these bitmaps to be rendered 41% bigger than rad
505+
// this turns radius into the diagonal distance, but the methods below presume manhattan distance (unadjusted radius)
506+
rad *= 1.41421356f;
505507

506508
angle -= Physics_viewer_bank;
507509
if ( angle < 0.0f ) {
@@ -739,7 +741,9 @@ void g3_render_rect_screen_aligned_2d(material *mat_params, vertex *pnt, int ori
739741
// adapted from g3_draw_bitmap_3d
740742
void g3_render_rect_screen_aligned(material *mat_params, vertex *pnt, int orient, float rad, float depth)
741743
{
742-
rad *= 1.41421356f;//1/0.707, becase these are the points of a square or width and hieght rad
744+
// holdover mistake from retail causes these bitmaps to be rendered 41% bigger than rad
745+
// this turns radius into the diagonal distance, but the methods below presume manhattan distance (unadjusted radius)
746+
rad *= 1.41421356f;
743747

744748
vec3d PNT(pnt->world);
745749
vec3d p[4];

0 commit comments

Comments
 (0)