1. 10 Nov, 2016 1 commit
    • Ken Martin's avatar
      Remove the old FBO compatability Code · 57bd525c
      Ken Martin authored
      The prior commit contains the merging of the FBO and
      FBO2 functionality. This commit removes a fair amount of
      the old FBO functionality to keep the API clean and encourage
      people to use FOs in a consistent manner.
      57bd525c
  2. 09 Nov, 2016 1 commit
    • Ken Martin's avatar
      combine fbo and fbo2 into one class and clean it up · 39010fa7
      Ken Martin authored
      having two VBO classes was confusing. This topic
      moves the functionality of FBO2 into FBO while
      keeping some of the original FBO functionality and
      cleaning it up a bit.
      
      All OpenGL2 code in VTK using FBOs is updated in
      this topic to use the merged FBO class. Mainly this
      impacts classes that were using the FBO class.
      
      The old FBO methods and code are converted but
      commented out in this commit.
      39010fa7
  3. 23 Sep, 2016 1 commit
    • Kitware Robot's avatar
      Reindent using the reindentation script. · f830ff47
      Kitware Robot authored
      This commit reindents the code with the following utility:
      Utilities/Maintenance/vtk-reindent-code.py
      
      This utility changes the positions of the braces so that they are no
      longer indented relative to the code block they reside in.
      
      The bash command line used was the following:
      
      for d in Charts Common Deprecated Domains Examples Filters GUISupport \
               Geovis IO Imaging Infovis Interaction Parallel Rendering \
               Testing Views Web Wrapping; do
        for e in cxx cxx.in txx txx.in hxx hxx.in h h.in c c.in; do
          find "${d}" -name "*.${e}" -exec \
            python Utilities/Maintenance/vtk_reindent_code.py {} +
        done
      done
      f830ff47
  4. 08 Mar, 2016 1 commit
  5. 08 Feb, 2016 1 commit
  6. 16 Oct, 2015 1 commit
    • Ken Martin's avatar
      Fix a couple issues with lic · eb81836d
      Ken Martin authored
      there was a texture pasting size error int he old code and both
      versions were eliminating the mask value when they should not.
      eb81836d
  7. 01 Jun, 2015 1 commit
    • Ken Martin's avatar
      More cleanups · f1535309
      Ken Martin authored
      vtkgl::CellBO renamed vtkOpenGLHelper
      vtkgl::substitute moved to vtkShaderProgram::Substitute
      Creation of vtkOpenGLIndexBufferObject
      Creation of vtkOpenGLVertexBufferObject
      Move methods that were in vtkglVBOHelper into new classes
      Move IndexCount from CellBO to vtkOpenGLIndexBufferObject
      etc
      f1535309
  8. 17 Mar, 2015 2 commits
    • Ken Martin's avatar
      Fix a few issues with ImageDataLIC2D · 7c341f67
      Ken Martin authored
      The old version was hardcoded for noise images that were
      two component and floating point. The new version should
      handle 1-4 components (it will use the first) and it should
      warn if the noise input is not float. If no noise inpt was
      provided this class was creatnig one by default, but it was
      VTK_DOUBLE not float. Added an ImageCast to float to make
      it work like it should when using a default noise.
      7c341f67
    • Karsten Tausche's avatar
      d482da9e
  9. 11 Mar, 2015 1 commit
  10. 06 Aug, 2014 1 commit
  11. 21 May, 2014 1 commit
    • Berk Geveci's avatar
      Refactored how pieces and extents are handled. · 1a0b4e9d
      Berk Geveci authored
      Refactoring the way VTK goes between piece and structured
      extents. Before, extent translators were used when the pipeline
      moved from structured to unstructured data converting piece
      request to extent request. This caused many problems with filters
      that altered extents, mainly a lot of redundant IO due to
      repartitioning of different extents. This became extremely
      cumbersome to manage when running distributed. The new behavior
      pushes the extent translation all to way to the readers and
      only when readers are able to read a subset. This works much
      better. The only downside is that filters need to be able to
      handle data extents different than update extents. Most filters
      can do this but many imaging filters cannot. Those that are
      needed in parallel will have to be updated.
      
      As part of this work, I also removed MAXIMUM_NUMBER_OF_PIECES
      and added CAN_HANDLE_PIECE_REQUEST. MAXIMUM_NUMBER_OF_PIECES had
      reduced to being a boolean. 1 for serial sources, -1 for parallel
      sources. I removed it and added a CAN_HANDLE_PIECE_REQUEST instead.
      This key, produced by a source, tells the executive that a source is
      able to handle piece request. It is a source only key produced in
      RequestInformation and is not propagated downstream. If this key is
      not present, the executive will only execute the source for piece 0
      to produce the entire data. It is then up to the user to add a filter
      that splits the data for other piece requests. The only exception to
      this is when CAN_PRODUCE_SUB_EXTENT is present, in which case the
      executive will split using an extent translator AT THE source - not
      downstream.
      
      Conflicts:
      	Filters/FlowPaths/vtkParticleTracerBase.cxx
      
      Change-Id: I8db4040289ff87331adeecded4a738313d9b52df
      1a0b4e9d
  12. 13 Sep, 2013 1 commit
    • Burlen Loring's avatar
      Surface LIC : parallelization & fine tuning features · ad4dddfc
      Burlen Loring authored
      * Parallelization:
      Support for Multiblock datasets and MPI parallel usage. Three compositing
      strategies are provided, with a heuristic to automatically make a reasonable
      selection between them. [1] INPLACE, [2] INPLACE_DISJOINT, [3] BALANCED.
      The inplace strategy processes data where it falls given its parallel domain
      decomposition and projection to the screen. For simple surfaces such as
      slices where ranks/blocks data does not overlap in screen space this is the
      most efficient approach. However where ranks/blocks data have large amount
      of screen space overlap, this approach has high communication/compositing
      and overhead and a large amount of redundant computation that's discarded.
      The inplace-disjoint strategy was designed to address these issues. It
      leaves data inplace as much as possible but will assign pixels to ranks
      uniquely eliminating redundant computation. The communication costs are
      the same as the inplace strategy however they are split into two temporally
      disjoint parts with computation in between which tends to reduce congestion
      and contention. The balanced strategy divides the screen into equally sized
      disjoint regions and assigns each rank a region. This strategy can suffer
      from load balancing issues, and because no account is made of the initial
      data distribution it may have higher communication/compositing costs than
      the others. The parallel implementations have been tested with IceT in
      ParaView. The compositors uses non-blocking mpi communications, MPI
      subarrays for describing non-contoguous memory extents, and communicates
      efficiently by pasing mpi gpu mapped memory via extensions made to
      vtkPixelBufferObject. An object factory is used to override the serial
      objects with their parallel counterparts  when the parallel module is
      linked.
      
      * Contrast and Color Contrast Enhancement:
      The new contrast enhancement feature increases both dynamic range contrast
      while preserving patterns in the LIC. Contrast enhancment is implemented using
      histogram stretching. The color contrast enhancement is made in HSL space on
      the L channel to minimize color distortions. During the "enhanced" LIC mode
      contrast enhancement is also applied after the first pass of LIC compution.
      This helps strengthen streaking patterns.
      
      * Enhanced scalar color shading:
      A new mode has been added to the shader that shades surface geometry combining
      both LIC and scalar colors. The new shader produces bright colors without
      diminishing the visibility of the LIC by multiplying colored lit surface with
      computed LIC texture. The original blending implementation is left in place
      as it works well in many situations.
      
      * Noise texture customization:
      A new noise texture generator has been added to improve control over "streaking"
      in the convolved texture. The noise textures produced are fully customizable over
      9 degrees of freedom. [1] Noise distribution (Gaussian, Uniform, Perlin); [2] Noise
      texture size [3] Noise grain size [4,5] Min/max noise values [6] Number of noise
      levels; [7] Impulse noise probability; [8] Impulse noise background color; [9]
      Noise generator seed
      
      * Fragment masking controls:
      The new fragment masking provides controls over the color and intensity of masked
      fragments and their blending with scalars. Fragments are masked by threshold |V|<t,
      where t is a user specified threshold value, and V are mask vectors. Masking vectors
      can be optionally projected onto the surface or passed through un-modified so that
      threshold is provided in the original vector units and matches scalar color shading.
      
      * Vector Normalization Control:
      The new vector normalization control lets the user turn on and off normalization
      in the integrator. Disabling normalization can help highlight relative strengths
      in strongly varying regions of a flow field by making the amount of smoothing that
      occurs during convolution proportional to the flow strength.
      
      * Antialiasing:
      An optional anti-aliasing stage was added. In some cases the CE and EE stages
      produce streaks with sharp jagged transitions from black to white. The AA stage
      can be used to soften the result and smooth sharp transitions.
      
      * Optimizations:
      The implementation has been split into 8 major steps with the result of each stage
      cached in a texture.[1] Vector projection and lighting calculation; [2] Gather;
      [3] Compositingand guard pixel generation; [4] LIC Computation; [5] Scatter;
      [6] Scalar coloring; [7] Color contrast enhance; [8] Depth test. During user
      interaction stages that do not have modfied paramters or input data can be skiped
      using the cahced result instead.  This can save large amount of time for expensive
      operations such as projecting vectors, computing the LIC etc. Classes
      were added to simplify monitoring of various system paramters that would trigger
      an update, such as changes to lights, modelview or projection matrices, background
      color, etc. A new framebuffer object has been introduced, designed specifically
      for efficient buffer ping-pong, as well as efficiency improvements for setting
      shader unfiorms on inner parts of buffer ping-pong loops.
      
      * Porting and Testing:
      The code has been ported to Apple + ATI systems, and to OS Mesa with the gallium
      llvmpipe state tracker. A number of ctests have been introduced to excersize the
      new features. Parallel features have testing coverage in ParaView.
      
      Change-Id: I26f90a4e1e4e204289d38993d1e32fe5493b7a0d
      ad4dddfc