Commit: f628b5f8436f6210569e7ed021e438f5be62d019
Author: Kévin Dietrich
Date:   Fri Sep 11 12:19:12 2015 +0200
Branches: openvdb
https://developer.blender.org/rBf628b5f8436f6210569e7ed021e438f5be62d019

Merge branch 'master' into openvdb

===================================================================



===================================================================

diff --cc intern/cycles/kernel/kernel_volume.h
index 64eecac,0a74a9d..269088c
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@@ -477,115 -420,9 +477,115 @@@ ccl_device VolumeIntegrateResult kernel
        return VOLUME_PATH_ATTENUATED;
  }
  
 +ccl_device_inline VolumeIntegrateResult kernel_volume_integrate_ray(
 +        KernelGlobals *kg, PathState *state, Ray *ray, ShaderData *sd,
 +        PathRadiance *L, float3 *throughput, float t, float new_t,
 +        float random_jitter_offset, bool has_scatter, float3 
*accum_transmittance,
 +        int channel, const float tp_eps, float *xi)
 +{
 +      float dt = new_t - t;
 +      float3 tp = *throughput;
 +
 +      /* use random position inside this segment to sample shader */
 +      if(new_t == ray->t)
 +              random_jitter_offset = lcg_step_float(&state->rng_congruential) 
* dt;
 +
 +      float3 new_P = ray->P + ray->D * (t + random_jitter_offset);
 +      VolumeShaderCoefficients coeff;
 +
 +      /* compute segment */
 +      if(volume_shader_sample(kg, sd, state, new_P, &coeff)) {
 +              int closure_flag = sd->flag;
 +              float3 new_tp;
 +              float3 transmittance;
 +              bool scatter = false;
 +
 +              /* distance sampling */
 +#ifdef __VOLUME_SCATTER__
 +              if((closure_flag & SD_SCATTER) || (has_scatter && (closure_flag 
& SD_ABSORPTION))) {
 +                      has_scatter = true;
 +
 +                      float3 sigma_t = coeff.sigma_a + coeff.sigma_s;
 +                      float3 sigma_s = coeff.sigma_s;
 +
 +                      /* compute transmittance over full step */
 +                      transmittance = volume_color_transmittance(sigma_t, dt);
 +
 +                      /* decide if we will scatter or continue */
 +                      float sample_transmittance = 
kernel_volume_channel_get(transmittance, channel);
 +
 +                      if(1.0f - *xi >= sample_transmittance) {
 +                              /* compute sampling distance */
 +                              float sample_sigma_t = 
kernel_volume_channel_get(sigma_t, channel);
 +                              float new_dt = -logf(1.0f - *xi)/sample_sigma_t;
 +                              new_t = t + new_dt;
 +
 +                              /* transmittance and pdf */
 +                              float3 new_transmittance = 
volume_color_transmittance(sigma_t, new_dt);
 +                              float3 pdf = sigma_t * new_transmittance;
 +
 +                              /* throughput */
 +                              new_tp = tp * sigma_s * new_transmittance / 
average(pdf);
 +                              scatter = true;
 +                      }
 +                      else {
 +                              /* throughput */
 +                              float pdf = average(transmittance);
 +                              new_tp = tp * transmittance / pdf;
 +
 +                              /* remap xi so we can reuse it and keep thing 
stratified */
 +                              *xi = 1.0f - (1.0f - *xi)/sample_transmittance;
 +                      }
 +              }
 +              else
 +#endif
 +                      if(closure_flag & SD_ABSORPTION) {
 +                              /* absorption only, no sampling needed */
 +                              float3 sigma_a = coeff.sigma_a;
 +
 +                              transmittance = 
volume_color_transmittance(sigma_a, dt);
 +                              new_tp = tp * transmittance;
 +                      }
 +
 +              /* integrate emission attenuated by absorption */
 +              if(L && (closure_flag & SD_EMISSION)) {
 +                      float3 emission = 
kernel_volume_emission_integrate(&coeff, closure_flag, transmittance, dt);
 +                      path_radiance_accum_emission(L, tp, emission, 
state->bounce);
 +              }
 +
 +              /* modify throughput */
 +              if(closure_flag & (SD_ABSORPTION|SD_SCATTER)) {
 +                      tp = new_tp;
 +
 +                      /* stop if nearly all light blocked */
 +                      if(tp.x < tp_eps && tp.y < tp_eps && tp.z < tp_eps) {
 +                              tp = make_float3(0.0f, 0.0f, 0.0f);
 +                              *throughput = tp;
 +                              return VOLUME_PATH_ATTENUATED;
 +                      }
 +              }
 +
 +              /* prepare to scatter to new direction */
 +              if(scatter) {
 +                      /* adjust throughput and move to new location */
 +                      sd->P = ray->P + new_t*ray->D;
 +                      *throughput = tp;
 +
 +                      return VOLUME_PATH_SCATTERED;
 +              }
 +              else {
 +                      /* accumulate transmittance */
 +                      *accum_transmittance *= transmittance;
 +              }
 +      }
 +
 +      *throughput = tp;
 +      return VOLUME_PATH_CONTINUE;
 +}
 +
  /* heterogeneous volume distance sampling: integrate stepping through the
   * volume until we reach the end, get absorbed entirely, or run out of
-  * iterations. this does probalistically scatter or get transmitted through
+  * iterations. this does probabilistically scatter or get transmitted through
   * for path tracing where we don't want to branch. */
  ccl_device VolumeIntegrateResult 
kernel_volume_integrate_heterogeneous_distance(KernelGlobals *kg,
        PathState *state, Ray *ray, ShaderData *sd, PathRadiance *L, float3 
*throughput, RNG *rng)
diff --cc source/blender/editors/space_view3d/CMakeLists.txt
index 1d1179e,059b384..41f3c64
--- a/source/blender/editors/space_view3d/CMakeLists.txt
+++ b/source/blender/editors/space_view3d/CMakeLists.txt
@@@ -90,11 -90,8 +90,15 @@@ if(WITH_FREESTYLE
        add_definitions(-DWITH_FREESTYLE)
  endif()
  
+ if(WITH_LEGACY_DEPSGRAPH)
+       add_definitions(-DWITH_LEGACY_DEPSGRAPH)
+ endif()
+ 
 +if(WITH_OPENVDB)
 +      add_definitions(-DWITH_OPENVDB)
 +      list(APPEND INC
 +           ../../../../intern/openvdb
 +      )
 +endif()
 +
  blender_add_lib(bf_editor_space_view3d "${SRC}" "${INC}" "${INC_SYS}")
diff --cc source/blender/editors/space_view3d/SConscript
index bb974d0,7fdccce..c25adeb
--- a/source/blender/editors/space_view3d/SConscript
+++ b/source/blender/editors/space_view3d/SConscript
@@@ -68,8 -68,7 +68,11 @@@ if env['WITH_BF_INTERNATIONAL']
  if env['WITH_BF_FREESTYLE']:
      defs.append('WITH_FREESTYLE')
  
+ if env['WITH_BF_LEGACY_DEPSGRAPH']:
+     defs.append('WITH_LEGACY_DEPSGRAPH')
+ 
 +if env['WITH_BF_OPENVDB']:
 +    incs.append('#intern/openvdb')
 +    defs.append('WITH_OPENVDB')
 +
  env.BlenderLib ( 'bf_editors_space_view3d', sources, incs, defines = defs, 
libtype=['core'], priority=[40] )

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to