22#pragma hdrstop
33
44#include " xrRender_console.h"
5+ #include " Common/Config.hpp"
56
67u32 ps_Preset = 2 ;
78xr_token qpreset_token[] = {{" Minimum" , 0 }, {" Low" , 1 }, {" Default" , 2 }, {" High" , 3 }, {" Extreme" , 4 }, {nullptr , 0 }};
@@ -167,6 +168,27 @@ float ps_r3_dyn_wet_surf_near = 10.f; // 10.0f
167168float ps_r3_dyn_wet_surf_far = 30 .f; // 30.0f
168169int ps_r3_dyn_wet_surf_sm_res = 256 ; // 256
169170
171+ // AVO: detail draw radius
172+ Flags32 ps_common_flags = {0 }; // r1-only
173+ u32 ps_steep_parallax = 0 ;
174+ int ps_r__detail_radius = 49 ;
175+ #ifdef DETAIL_RADIUS // управление радиусом отрисовки травы
176+ u32 dm_size = 24 ;
177+ u32 dm_cache1_line = 12 ; // dm_size*2/dm_cache1_count
178+ u32 dm_cache_line = 49 ; // dm_size+1+dm_size
179+ u32 dm_cache_size = 2401 ; // dm_cache_line*dm_cache_line
180+ float dm_fade = 47.5 ; // float(2*dm_size)-.5f;
181+ u32 dm_current_size = 24 ;
182+ u32 dm_current_cache1_line = 12 ; // dm_current_size*2/dm_cache1_count
183+ u32 dm_current_cache_line = 49 ; // dm_current_size+1+dm_current_size
184+ u32 dm_current_cache_size = 2401 ; // dm_current_cache_line*dm_current_cache_line
185+ float dm_current_fade = 47.5 ; // float(2*dm_current_size)-.5f;
186+ #endif
187+ float ps_current_detail_density = 0.6 ;
188+ xr_token ext_quality_token[] = {{" qt_off" , 0 }, {" qt_low" , 1 }, {" qt_medium" , 2 },
189+ {" qt_high" , 3 }, {" qt_extreme" , 4 }, {nullptr , 0 }};
190+ // -AVO
191+
170192// - Mad Max
171193float ps_r2_gloss_factor = 4 .0f ;
172194// - Mad Max
@@ -179,6 +201,38 @@ float ps_r2_gloss_factor = 4.0f;
179201#endif // USE_DX10
180202
181203// -----------------------------------------------------------------------
204+
205+ // AVO: detail draw radius
206+ #ifdef DETAIL_RADIUS
207+ class CCC_detail_radius : public CCC_Integer
208+ {
209+ public:
210+ void apply ()
211+ {
212+ dm_current_size = iFloor ((float )ps_r__detail_radius / 4 ) * 2 ;
213+ dm_current_cache1_line = dm_current_size * 2 / 4 ; // assuming cache1_count = 4
214+ dm_current_cache_line = dm_current_size + 1 + dm_current_size;
215+ dm_current_cache_size = dm_current_cache_line * dm_current_cache_line;
216+ dm_current_fade = float (2 * dm_current_size) - .5f ;
217+ }
218+
219+ CCC_detail_radius (LPCSTR N, int * V, int _min = 0 , int _max = 999 ) : CCC_Integer(N, V, _min, _max) {};
220+
221+ void Execute (LPCSTR args) override
222+ {
223+ CCC_Integer::Execute (args);
224+ apply ();
225+ }
226+
227+ void Status (TStatus& S) override
228+ {
229+ CCC_Integer::Status (S);
230+ }
231+ };
232+
233+ // -AVO
234+ #endif
235+
182236class CCC_tf_Aniso : public CCC_Integer
183237{
184238public:
@@ -626,11 +680,11 @@ void xrRender_initconsole()
626680
627681 Fvector tw_min, tw_max;
628682
629- CMD4 (CCC_Float, " r__geometry_lod" , &ps_r__LOD, 0 .1f , 1 . 2f );
683+ CMD4 (CCC_Float, " r__geometry_lod" , &ps_r__LOD, 0 .1f , 3 . f ); // AVO: extended from 1.2f to 3.f
630684 // CMD4(CCC_Float, "r__geometry_lod_pow", &ps_r__LOD_Power, 0, 2);
631685
632686 // CMD4(CCC_Float, "r__detail_density", &ps_r__Detail_density, .05f, 0.99f);
633- CMD4 (CCC_Float, " r__detail_density" , &ps_r__Detail_density, . 2f , 0 .6f );
687+ CMD4 (CCC_Float, " r__detail_density" , &ps_current_detail_density /* & ps_r__Detail_density*/ , 0 . 04f , 0 .6f ); // AVO: extended from 0.2f to 0.04f and replaced variable
634688
635689#ifdef DEBUG
636690 CMD4 (CCC_Float, " r__detail_l_ambient" , &ps_r__Detail_l_ambient, .5f , .95f );
@@ -716,7 +770,7 @@ void xrRender_initconsole()
716770 CMD3 (CCC_Mask, " r2_sun_tsm" , &ps_r2_ls_flags, R2FLAG_SUN_TSM);
717771 CMD4 (CCC_Float, " r2_sun_tsm_proj" , &ps_r2_sun_tsm_projection, .001f , 0 .8f );
718772 CMD4 (CCC_Float, " r2_sun_tsm_bias" , &ps_r2_sun_tsm_bias, -0.5 , +0.5 );
719- CMD4 (CCC_Float, " r2_sun_near" , &ps_r2_sun_near, 1 .f , 50 .f );
773+ CMD4 (CCC_Float, " r2_sun_near" , &ps_r2_sun_near, 1 .f , 150 .f ); // AVO: extended from 50.f to 150.f
720774#if RENDER != R_R1
721775 CMD4 (CCC_Float, " r2_sun_far" , &OLES_SUN_LIMIT_27_01_07, 51 .f , 180 .f );
722776#endif
@@ -815,6 +869,10 @@ void xrRender_initconsole()
815869 CMD3 (CCC_Token, " r3_msaa_alphatest" , &ps_r3_msaa_atest, qmsaa__atest_token);
816870 CMD3 (CCC_Token, " r3_minmax_sm" , &ps_r3_minmax_sm, qminmax_sm_token);
817871
872+ #ifdef DETAIL_RADIUS
873+ CMD4 (CCC_detail_radius, " r__detail_radius" , &ps_r__detail_radius, 49 , 300 );
874+ #endif
875+
818876// Allow real-time fog config reload
819877#if (RENDER == R_R3) || (RENDER == R_R4)
820878#ifdef DEBUG
0 commit comments