Viewport smoke: fix a couple of issues in the new display settings.

- WITH_SMOKE macro was not defined so some code was not compiled, though
it was still accessible from the UI
- some UI elements were disappearing due to bad indentation, also rework
the UI code to not hide but rather disable/grey out button in the UI
- Display thickness was not used due to bad manual merge of the code
from the patch.
This commit is contained in:
Kévin Dietrich 2016-09-25 17:02:46 +02:00
parent 335ee5ce5a
commit ae69986b70
3 changed files with 27 additions and 20 deletions

View File

@ -373,23 +373,26 @@ class PHYSICS_PT_smoke_display_settings(PhysicButtonsPanel, Panel):
slice_method = domain.slice_method
axis_slice_method = domain.axis_slice_method
if slice_method == 'AXIS_ALIGNED':
layout.prop(domain, "axis_slice_method")
row = layout.row();
row.enabled = (slice_method == 'AXIS_ALIGNED')
row.prop(domain, "axis_slice_method")
if axis_slice_method == 'SINGLE':
layout.prop(domain, "slice_axis")
layout.prop(domain, "slice_depth")
col = layout.column();
col.enabled = (axis_slice_method == 'SINGLE')
col.prop(domain, "slice_axis")
col.prop(domain, "slice_depth")
if axis_slice_method == 'FULL':
layout.prop(domain, "slice_per_voxel")
row = layout.row();
row.enabled = (axis_slice_method == 'FULL')
row.prop(domain, "slice_per_voxel")
layout.separator()
layout.label(text="Debug:")
layout.prop(domain, "draw_velocity")
col = layout.column();
col.enabled = domain.draw_velocity
col.prop(domain, "vector_draw_type")
col.prop(domain, "vector_scale")
layout.separator()
layout.label(text="Debug:")
layout.prop(domain, "draw_velocity")
col = layout.column();
col.enabled = domain.draw_velocity
col.prop(domain, "vector_draw_type")
col.prop(domain, "vector_scale")
if __name__ == "__main__": # only for live edit.

View File

@ -90,6 +90,10 @@ if(WITH_FREESTYLE)
add_definitions(-DWITH_FREESTYLE)
endif()
if(WITH_MOD_SMOKE)
add_definitions(-DWITH_SMOKE)
endif()
if(WITH_LEGACY_DEPSGRAPH)
add_definitions(-DWITH_LEGACY_DEPSGRAPH)
endif()

View File

@ -382,7 +382,7 @@ static void bind_shader(SmokeDomainSettings *sds, GPUShader *shader, GPUTexture
GPU_shader_uniform_texture(shader, spec_location, tex_spec);
}
else {
float density_scale = 10.0f;
float density_scale = 10.0f * sds->display_thickness;
GPU_shader_uniform_vector(shader, stepsize_location, 1, 1, &sds->dx);
GPU_shader_uniform_vector(shader, densityscale_location, 1, 1, &density_scale);
@ -572,6 +572,7 @@ void draw_smoke_volume(SmokeDomainSettings *sds, Object *ob,
}
}
#ifdef WITH_SMOKE
static void add_tri(float (*verts)[3], float(*colors)[3], int *offset,
float p1[3], float p2[3], float p3[3], float rgb[3])
{
@ -645,6 +646,7 @@ static void add_streamline(float (*verts)[3], float(*colors)[3], float center[3]
}
typedef void (*vector_draw_func)(float(*)[3], float(*)[3], float*, float*, float, float, int*);
#endif /* WITH_SMOKE */
void draw_smoke_velocity(SmokeDomainSettings *domain, float viewnormal[3])
{
@ -652,11 +654,6 @@ void draw_smoke_velocity(SmokeDomainSettings *domain, float viewnormal[3])
const float *vel_x = smoke_get_velocity_x(domain->fluid);
const float *vel_y = smoke_get_velocity_y(domain->fluid);
const float *vel_z = smoke_get_velocity_z(domain->fluid);
#else
const float *vel_x = NULL;
const float *vel_y = NULL;
const float *vel_z = NULL;
#endif
if (ELEM(NULL, vel_x, vel_y, vel_z)) {
return;
@ -755,6 +752,9 @@ void draw_smoke_velocity(SmokeDomainSettings *domain, float viewnormal[3])
MEM_freeN(verts);
MEM_freeN(colors);
#else
UNUSED_VARS(domain, viewnormal);
#endif
}
#ifdef SMOKE_DEBUG_HEAT