light: refactor dirt*SetOnCmdline variables
This commit is contained in:
parent
35e92abfcf
commit
30673903ed
|
|
@ -220,24 +220,25 @@ extern lightsample_t minlight;
|
|||
|
||||
extern sun_t *suns;
|
||||
|
||||
/* command-line options */
|
||||
|
||||
typedef struct {
|
||||
vec_t value;
|
||||
bool locked;
|
||||
} lockable_vec_t;
|
||||
|
||||
/* dirt */
|
||||
|
||||
extern qboolean dirty; // should any dirtmapping take place?
|
||||
extern int dirtMode;
|
||||
extern float dirtDepth;
|
||||
extern float dirtScale;
|
||||
extern float dirtGain;
|
||||
extern float dirtAngle;
|
||||
extern lockable_vec_t dirtMode;
|
||||
extern lockable_vec_t dirtDepth;
|
||||
extern lockable_vec_t dirtScale;
|
||||
extern lockable_vec_t dirtGain;
|
||||
extern lockable_vec_t dirtAngle;
|
||||
|
||||
extern qboolean globalDirt; // apply dirt to all lights (unless they override it)?
|
||||
extern qboolean minlightDirt; // apply dirt to minlight?
|
||||
|
||||
extern qboolean dirtModeSetOnCmdline;
|
||||
extern qboolean dirtDepthSetOnCmdline;
|
||||
extern qboolean dirtScaleSetOnCmdline;
|
||||
extern qboolean dirtGainSetOnCmdline;
|
||||
extern qboolean dirtAngleSetOnCmdline;
|
||||
|
||||
/* bounce */
|
||||
|
||||
extern qboolean bounce;
|
||||
|
|
|
|||
|
|
@ -1117,30 +1117,30 @@ LoadEntities(const bsp2_t *bsp)
|
|||
rangescale);
|
||||
}
|
||||
|
||||
if (entity->dirtdepth && !dirtDepthSetOnCmdline) {
|
||||
dirtDepth = entity->dirtdepth;
|
||||
if (entity->dirtdepth && !dirtDepth.locked) {
|
||||
dirtDepth.value = entity->dirtdepth;
|
||||
logprint("Using dirtdepth value %f from worldspawn.\n",
|
||||
dirtDepth);
|
||||
dirtDepth.value);
|
||||
}
|
||||
if (entity->dirtmode && !dirtModeSetOnCmdline) {
|
||||
dirtMode = entity->dirtmode;
|
||||
if (entity->dirtmode && !dirtMode.locked) {
|
||||
dirtMode.value = entity->dirtmode;
|
||||
logprint("Using dirtmode value %i from worldspawn.\n",
|
||||
dirtMode);
|
||||
(int)dirtMode.value);
|
||||
}
|
||||
if (entity->dirtscale && !dirtScaleSetOnCmdline) {
|
||||
dirtScale = entity->dirtscale;
|
||||
if (entity->dirtscale && !dirtScale.locked) {
|
||||
dirtScale.value = entity->dirtscale;
|
||||
logprint("Using dirtscale value %f from worldspawn.\n",
|
||||
dirtScale);
|
||||
dirtScale.value);
|
||||
}
|
||||
if (entity->dirtgain && !dirtGainSetOnCmdline) {
|
||||
dirtGain = entity->dirtgain;
|
||||
if (entity->dirtgain && !dirtGain.locked) {
|
||||
dirtGain.value = entity->dirtgain;
|
||||
logprint("Using dirtgain value %f from worldspawn.\n",
|
||||
dirtGain);
|
||||
dirtGain.value);
|
||||
}
|
||||
if (entity->dirtangle && !dirtAngleSetOnCmdline) {
|
||||
dirtAngle = entity->dirtangle;
|
||||
if (entity->dirtangle && !dirtAngle.locked) {
|
||||
dirtAngle.value = entity->dirtangle;
|
||||
logprint("Using dirtangle value %f from worldspawn.\n",
|
||||
dirtAngle);
|
||||
dirtAngle.value);
|
||||
}
|
||||
if (entity->dirt == 1) {
|
||||
globalDirt = true;
|
||||
|
|
|
|||
|
|
@ -53,22 +53,15 @@ sun_t *suns = NULL;
|
|||
|
||||
/* dirt */
|
||||
qboolean dirty = false;
|
||||
int dirtMode = 0;
|
||||
float dirtDepth = 128.0f;
|
||||
float dirtScale = 1.0f;
|
||||
float dirtGain = 1.0f;
|
||||
float dirtAngle = 88.0f;
|
||||
lockable_vec_t dirtMode = {0, false};
|
||||
lockable_vec_t dirtDepth = {128.0f, false};
|
||||
lockable_vec_t dirtScale = {1.0f, false};
|
||||
lockable_vec_t dirtGain = {1.0f, false};
|
||||
lockable_vec_t dirtAngle = {88.0f, false};
|
||||
|
||||
qboolean globalDirt = false;
|
||||
qboolean minlightDirt = false;
|
||||
|
||||
qboolean dirtSetOnCmdline = false;
|
||||
qboolean dirtModeSetOnCmdline = false;
|
||||
qboolean dirtDepthSetOnCmdline = false;
|
||||
qboolean dirtScaleSetOnCmdline = false;
|
||||
qboolean dirtGainSetOnCmdline = false;
|
||||
qboolean dirtAngleSetOnCmdline = false;
|
||||
|
||||
/* bounce */
|
||||
qboolean bounce = false;
|
||||
vec_t bouncescale = 1.0f;
|
||||
|
|
@ -1281,42 +1274,42 @@ main(int argc, const char **argv)
|
|||
debugmode = debugmode_dirt;
|
||||
logprint( "Dirtmap debugging enabled\n" );
|
||||
} else if ( !strcmp( argv[ i ], "-dirtmode" ) ) {
|
||||
dirtModeSetOnCmdline = true;
|
||||
dirtMode = atoi( argv[ ++i ] );
|
||||
if ( dirtMode != 0 && dirtMode != 1 ) {
|
||||
dirtMode = 0;
|
||||
dirtMode.locked = true;
|
||||
dirtMode.value = atoi( argv[ ++i ] );
|
||||
if ( dirtMode.value != 0 && dirtMode.value != 1 ) {
|
||||
dirtMode.value = 0;
|
||||
}
|
||||
if ( dirtMode == 1 ) {
|
||||
if ( dirtMode.value == 1 ) {
|
||||
logprint( "Enabling randomized dirtmapping\n" );
|
||||
}
|
||||
else{
|
||||
logprint( "Enabling ordered dirtmapping\n" );
|
||||
}
|
||||
} else if ( !strcmp( argv[ i ], "-dirtdepth" ) ) {
|
||||
dirtDepthSetOnCmdline = true;
|
||||
dirtDepth = atof( argv[ ++i ] );
|
||||
if ( dirtDepth <= 0.0f ) {
|
||||
dirtDepth = 128.0f;
|
||||
dirtDepth.locked = true;
|
||||
dirtDepth.value = atof( argv[ ++i ] );
|
||||
if ( dirtDepth.value <= 0.0f ) {
|
||||
dirtDepth.value = 128.0f;
|
||||
}
|
||||
logprint( "Dirtmapping depth set to %.1f\n", dirtDepth );
|
||||
logprint( "Dirtmapping depth set to %.1f\n", dirtDepth.value );
|
||||
} else if ( !strcmp( argv[ i ], "-dirtscale" ) ) {
|
||||
dirtScaleSetOnCmdline = true;
|
||||
dirtScale = atof( argv[ ++i ] );
|
||||
if ( dirtScale <= 0.0f ) {
|
||||
dirtScale = 1.0f;
|
||||
dirtScale.locked = true;
|
||||
dirtScale.value = atof( argv[ ++i ] );
|
||||
if ( dirtScale.value <= 0.0f ) {
|
||||
dirtScale.value = 1.0f;
|
||||
}
|
||||
logprint( "Dirtmapping scale set to %.1f\n", dirtScale );
|
||||
logprint( "Dirtmapping scale set to %.1f\n", dirtScale.value );
|
||||
} else if ( !strcmp( argv[ i ], "-dirtgain" ) ) {
|
||||
dirtGainSetOnCmdline = true;
|
||||
dirtGain = atof( argv[ ++i ] );
|
||||
if ( dirtGain <= 0.0f ) {
|
||||
dirtGain = 1.0f;
|
||||
dirtGain.locked = true;
|
||||
dirtGain.value = atof( argv[ ++i ] );
|
||||
if ( dirtGain.value <= 0.0f ) {
|
||||
dirtGain.value = 1.0f;
|
||||
}
|
||||
logprint( "Dirtmapping gain set to %.1f\n", dirtGain );
|
||||
logprint( "Dirtmapping gain set to %.1f\n", dirtGain.value );
|
||||
} else if ( !strcmp( argv[ i ], "-dirtangle" ) ) {
|
||||
dirtAngleSetOnCmdline = true;
|
||||
dirtAngle = atof( argv[ ++i ] );
|
||||
logprint( "Dirtmapping cone angle set to %.1f\n", dirtAngle );
|
||||
dirtAngle.locked = true;
|
||||
dirtAngle.value = atof( argv[ ++i ] );
|
||||
logprint( "Dirtmapping cone angle set to %.1f\n", dirtAngle.value );
|
||||
} else if ( !strcmp( argv[ i ], "-bounce" ) ) {
|
||||
bounce = true;
|
||||
logprint( "Bounce enabled on command line\n" );
|
||||
|
|
|
|||
|
|
@ -1079,8 +1079,8 @@ Light_ClampMin(lightsample_t *sample, const vec_t light, const vec3_t color)
|
|||
static inline vec_t
|
||||
Dirt_GetScaleFactor(vec_t occlusion, const entity_t *entity, const lightsurf_t *surf)
|
||||
{
|
||||
vec_t light_dirtgain = dirtGain;
|
||||
vec_t light_dirtscale = dirtScale;
|
||||
vec_t light_dirtgain = dirtGain.value;
|
||||
vec_t light_dirtscale = dirtScale.value;
|
||||
vec_t outDirt;
|
||||
qboolean usedirt;
|
||||
|
||||
|
|
@ -1726,16 +1726,16 @@ void SetupDirt( void ) {
|
|||
logprint("--- SetupDirt ---\n" );
|
||||
|
||||
/* clamp dirtAngle */
|
||||
if ( dirtAngle <= 1.0f ) {
|
||||
dirtAngle = 1.0f;
|
||||
if ( dirtAngle.value <= 1.0f ) {
|
||||
dirtAngle.value = 1.0f;
|
||||
}
|
||||
if ( dirtAngle >= 90.0f) {
|
||||
dirtAngle = 90.0f;
|
||||
if ( dirtAngle.value >= 90.0f) {
|
||||
dirtAngle.value = 90.0f;
|
||||
}
|
||||
|
||||
/* calculate angular steps */
|
||||
angleStep = DEG2RAD( 360.0f / DIRT_NUM_ANGLE_STEPS );
|
||||
elevationStep = DEG2RAD( dirtAngle / DIRT_NUM_ELEVATION_STEPS );
|
||||
elevationStep = DEG2RAD( dirtAngle.value / DIRT_NUM_ELEVATION_STEPS );
|
||||
|
||||
/* iterate angle */
|
||||
angle = 0.0f;
|
||||
|
|
@ -1787,7 +1787,7 @@ DirtForSample(const dmodel_t *model, const vec3_t origin, const vec3_t normal){
|
|||
|
||||
/* setup */
|
||||
gatherDirt = 0.0f;
|
||||
ooDepth = 1.0f / dirtDepth;
|
||||
ooDepth = 1.0f / dirtDepth.value;
|
||||
|
||||
/* check if the normal is aligned to the world-up */
|
||||
if ( normal[ 0 ] == 0.0f && normal[ 1 ] == 0.0f ) {
|
||||
|
|
@ -1807,12 +1807,12 @@ DirtForSample(const dmodel_t *model, const vec3_t origin, const vec3_t normal){
|
|||
}
|
||||
|
||||
/* 1 = random mode, 0 (well everything else) = non-random mode */
|
||||
if ( dirtMode == 1 ) {
|
||||
if ( dirtMode.value == 1 ) {
|
||||
/* iterate */
|
||||
for ( i = 0; i < numDirtVectors; i++ ) {
|
||||
/* get random vector */
|
||||
angle = Random() * DEG2RAD( 360.0f );
|
||||
elevation = Random() * DEG2RAD( dirtAngle );
|
||||
elevation = Random() * DEG2RAD( dirtAngle.value );
|
||||
temp[ 0 ] = cos( angle ) * sin( elevation );
|
||||
temp[ 1 ] = sin( angle ) * sin( elevation );
|
||||
temp[ 2 ] = cos( elevation );
|
||||
|
|
@ -1823,7 +1823,7 @@ DirtForSample(const dmodel_t *model, const vec3_t origin, const vec3_t normal){
|
|||
direction[ 2 ] = myRt[ 2 ] * temp[ 0 ] + myUp[ 2 ] * temp[ 1 ] + normal[ 2 ] * temp[ 2 ];
|
||||
|
||||
/* set endpoint */
|
||||
VectorMA( origin, dirtDepth, direction, traceEnd );
|
||||
VectorMA( origin, dirtDepth.value, direction, traceEnd );
|
||||
|
||||
/* trace */
|
||||
if (DirtTrace(origin, traceEnd, model, traceHitpoint, NULL, NULL)) {
|
||||
|
|
@ -1840,7 +1840,7 @@ DirtForSample(const dmodel_t *model, const vec3_t origin, const vec3_t normal){
|
|||
direction[ 2 ] = myRt[ 2 ] * dirtVectors[ i ][ 0 ] + myUp[ 2 ] * dirtVectors[ i ][ 1 ] + normal[ 2 ] * dirtVectors[ i ][ 2 ];
|
||||
|
||||
/* set endpoint */
|
||||
VectorMA( origin, dirtDepth, direction, traceEnd );
|
||||
VectorMA( origin, dirtDepth.value, direction, traceEnd );
|
||||
|
||||
/* trace */
|
||||
if (DirtTrace(origin, traceEnd, model, traceHitpoint, NULL, NULL)) {
|
||||
|
|
@ -1851,7 +1851,7 @@ DirtForSample(const dmodel_t *model, const vec3_t origin, const vec3_t normal){
|
|||
}
|
||||
|
||||
/* direct ray */
|
||||
VectorMA( origin, dirtDepth, normal, traceEnd );
|
||||
VectorMA( origin, dirtDepth.value, normal, traceEnd );
|
||||
|
||||
/* trace */
|
||||
if (DirtTrace(origin, traceEnd, model, traceHitpoint, NULL, NULL)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue