Exposed dust parameters to UI

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40165
This commit is contained in:
kearwood
2012-11-23 01:13:35 +00:00
parent 96a9c02a13
commit b2c79149b1
4 changed files with 31 additions and 13 deletions

View File

@@ -129,6 +129,7 @@ KRCamera::KRCamera(KRContext &context) : KRContextObject(context) {
fog_type = 0; fog_type = 0;
dust_particle_intensity = 0.25f; dust_particle_intensity = 0.25f;
dust_particle_enable = false;
} }
KRCamera::~KRCamera() { KRCamera::~KRCamera() {

View File

@@ -130,6 +130,7 @@ public:
int fog_type; // 0 = no fog, 1 = linear, 2 = exponential, 3 = exponential squared int fog_type; // 0 = no fog, 1 = linear, 2 = exponential, 3 = exponential squared
float dust_particle_intensity; float dust_particle_intensity;
bool dust_particle_enable;
private: private:
KRVector3 m_position; KRVector3 m_position;

View File

@@ -144,7 +144,9 @@ float const PI = 3.141592653589793f;
@"fog_density": @42, @"fog_density": @42,
@"fog_color_r": @43, @"fog_color_r": @43,
@"fog_color_g": @44, @"fog_color_g": @44,
@"fog_color_b": @45 @"fog_color_b": @45,
@"dust_enable" : @46,
@"dust_intensity" : @47
} copy]; } copy];
[self loadShaders]; [self loadShaders];
@@ -207,7 +209,7 @@ float const PI = 3.141592653589793f;
-(int)getParameterCount -(int)getParameterCount
{ {
return 46; return 48;
} }
-(NSString *)getParameterNameWithIndex: (int)i -(NSString *)getParameterNameWithIndex: (int)i
@@ -217,7 +219,7 @@ float const PI = 3.141592653589793f;
-(NSString *)getParameterLabelWithIndex: (int)i -(NSString *)getParameterLabelWithIndex: (int)i
{ {
NSString *parameter_labels[46] = { NSString *parameter_labels[48] = {
@"Camera FOV", @"Camera FOV",
@"Shadow Quality (0 - 2)", @"Shadow Quality (0 - 2)",
@"Enable per-pixel lighting", @"Enable per-pixel lighting",
@@ -263,13 +265,15 @@ float const PI = 3.141592653589793f;
@"Fog - Density", @"Fog - Density",
@"Fog - Color R", @"Fog - Color R",
@"Fog - Color G", @"Fog - Color G",
@"fog - Color B" @"Fog - Color B",
@"Dust - Enable",
@"Dust - Intensity"
}; };
return parameter_labels[i]; return parameter_labels[i];
} }
-(KREngineParameterType)getParameterTypeWithIndex: (int)i -(KREngineParameterType)getParameterTypeWithIndex: (int)i
{ {
KREngineParameterType types[46] = { KREngineParameterType types[48] = {
KRENGINE_PARAMETER_FLOAT, KRENGINE_PARAMETER_FLOAT,
KRENGINE_PARAMETER_INT, KRENGINE_PARAMETER_INT,
@@ -316,13 +320,15 @@ float const PI = 3.141592653589793f;
KRENGINE_PARAMETER_FLOAT, KRENGINE_PARAMETER_FLOAT,
KRENGINE_PARAMETER_FLOAT, KRENGINE_PARAMETER_FLOAT,
KRENGINE_PARAMETER_FLOAT, KRENGINE_PARAMETER_FLOAT,
KRENGINE_PARAMETER_FLOAT,
KRENGINE_PARAMETER_BOOL,
KRENGINE_PARAMETER_FLOAT KRENGINE_PARAMETER_FLOAT
}; };
return types[i]; return types[i];
} }
-(float)getParameterValueWithIndex: (int)i -(float)getParameterValueWithIndex: (int)i
{ {
float values[46] = { float values[48] = {
_camera->perspective_fov, _camera->perspective_fov,
(float)_camera->m_cShadowBuffers, (float)_camera->m_cShadowBuffers,
_camera->bEnablePerPixel ? 1.0f : 0.0f, _camera->bEnablePerPixel ? 1.0f : 0.0f,
@@ -368,7 +374,9 @@ float const PI = 3.141592653589793f;
_camera->fog_density, _camera->fog_density,
_camera->fog_color.x, _camera->fog_color.x,
_camera->fog_color.y, _camera->fog_color.y,
_camera->fog_color.z _camera->fog_color.z,
_camera->dust_particle_enable,
_camera->dust_particle_intensity
}; };
return values[i]; return values[i];
} }
@@ -555,17 +563,24 @@ float const PI = 3.141592653589793f;
case 45: case 45:
_camera->fog_color.z = v; _camera->fog_color.z = v;
break; break;
case 46:
_camera->dust_particle_enable = bNewBoolVal;
break;
case 47:
_camera->dust_particle_intensity = bNewBoolVal;
break;
} }
} }
-(float)getParameterMinWithIndex: (int)i -(float)getParameterMinWithIndex: (int)i
{ {
float minValues[46] = { float minValues[48] = {
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 50.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 50.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f
}; };
return minValues[i]; return minValues[i];
@@ -573,13 +588,14 @@ float const PI = 3.141592653589793f;
-(float)getParameterMaxWithIndex: (int)i -(float)getParameterMaxWithIndex: (int)i
{ {
float maxValues[46] = { float maxValues[48] = {
PI, 3.0f, 1.0f, 1.0, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 10.0f, PI, 3.0f, 1.0f, 1.0, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 10.0f,
1.0f, 10.0f, 2.0f, 1.0f, 1.0f, 1.0f, 5.0f, 1.0f, 1.0f, 10.0f, 2.0f, 1.0f, 1.0f, 1.0f, 5.0f, 1.0f,
0.5f, 1.0f, 2.0f, 2.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.0f, 2.0f, 2.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1000.0f, 10000.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1000.0f, 10000.0f,
1.0f, 5.0f, 10000.0f, 1.0f, 5.0f, 1.0f, 5.0f, 10000.0f, 1.0f, 5.0f,
3.0f, 10000.0f, 10000.0f, 0.01f, 1.0f, 1.0f, 1.0f 3.0f, 10000.0f, 10000.0f, 0.01f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f
}; };
return maxValues[i]; return maxValues[i];

View File

@@ -164,12 +164,12 @@ void KRLight::render(KRCamera *pCamera, std::vector<KRLight *> &lights, const KR
KRNode::render(pCamera, lights, viewport, renderPass); KRNode::render(pCamera, lights, viewport, renderPass);
if(renderPass == KRNode::RENDER_PASS_GENERATE_SHADOWMAPS && (pCamera->volumetric_environment_enable || (pCamera->m_cShadowBuffers > 0 && m_casts_shadow))) { if(renderPass == KRNode::RENDER_PASS_GENERATE_SHADOWMAPS && (pCamera->volumetric_environment_enable || pCamera->dust_particle_enable || (pCamera->m_cShadowBuffers > 0 && m_casts_shadow))) {
allocateShadowBuffers(configureShadowBufferViewports(viewport)); allocateShadowBuffers(configureShadowBufferViewports(viewport));
renderShadowBuffers(pCamera); renderShadowBuffers(pCamera);
} }
if(renderPass == KRNode::RENDER_PASS_ADDITIVE_PARTICLES) { if(renderPass == KRNode::RENDER_PASS_ADDITIVE_PARTICLES && pCamera->dust_particle_enable) {
// Render brownian particles for dust floating in air // Render brownian particles for dust floating in air
if(m_cShadowBuffers >= 1 && shadowValid[0] && m_dust_particle_density > 0.0f && m_dust_particle_size > 0.0f && m_dust_particle_intensity > 0.0f) { if(m_cShadowBuffers >= 1 && shadowValid[0] && m_dust_particle_density > 0.0f && m_dust_particle_size > 0.0f && m_dust_particle_intensity > 0.0f) {
float lod_coverage = getBounds().coverage(viewport.getViewProjectionMatrix(), viewport.getSize()); // This also checks the view frustrum culling float lod_coverage = getBounds().coverage(viewport.getViewProjectionMatrix(), viewport.getSize()); // This also checks the view frustrum culling