1. 24 Apr, 2020 2 commits
    • Michele Sanna's avatar
      a formula for bin size for images over 64x64 (#90) · f8acecb6
      Michele Sanna authored
      
      
      Summary:
      Signed-off-by: default avatarMichele Sanna <sanna@arrival.com>
      
      fixes the bin_size calculation with a formula for any image_size > 64. Matches the values chosen so far.
      
      simple test:
      
      ```
      import numpy as np
      import matplotlib.pyplot as plt
      
      image_size = np.arange(64, 2048)
      bin_size = np.where(image_size <= 64, 8, (2 ** np.maximum(np.ceil(np.log2(image_size)) - 4, 4)).astype(int))
      
      print(image_size)
      print(bin_size)
      
      for ims, bins in zip(image_size, bin_size):
          if ims <= 64:
              assert bins == 8
          elif ims <= 256:
              assert bins == 16
          elif ims <= 512:
              assert bins == 32
          elif ims <= 1024:
              assert bins == 64
          elif ims <= 2048:
              assert bins == 128
      
          assert (ims + bins - 1) // bins < 22
      
      plt.plot(image_size, bin_size)
      plt.grid()
      plt.show()
      ```
      
      ![img](https://user-images.githubusercontent.com/54891577/75464693-795bcf00-597f-11ea-9061-26440211691c.png)
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/90
      
      Reviewed By: jcjohnson
      
      Differential Revision: D21160372
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 660cf5832f4ca5be243c435a6bed969596fc0188
      f8acecb6
    • Nikhila Ravi's avatar
      Cuda updates · c3d636dc
      Nikhila Ravi authored
      Summary:
      Updates to:
      - enable cuda kernel launches on any GPU (not just the default)
      - cuda and contiguous checks for all kernels
      - checks to ensure all tensors are on the same device
      - error reporting in the cuda kernels
      - cuda tests now run on a random device not just the default
      
      Reviewed By: jcjohnson, gkioxari
      
      Differential Revision: D21215280
      
      fbshipit-source-id: 1bedc9fe6c35e9e920bdc4d78ed12865b1005519
      c3d636dc
  2. 22 Apr, 2020 1 commit
    • Nikhila Ravi's avatar
      back face culling in rasterization · 4bf30593
      Nikhila Ravi authored
      Summary:
      Added backface culling as an option to the `raster_settings`. This is needed for the full forward rendering of shapenet meshes with texture (some meshes contain
      multiple overlapping segments which have different textures).
      
      For a triangle (v0, v1, v2) define the vectors A = (v1 - v0) and B = (v2 − v0) and use this to calculate the area of the triangle as:
      ```
      area = 0.5 * A  x B
      area = 0.5 * ((x1 − x0)(y2 − y0) − (x2 − x0)(y1 − y0))
      ```
      The area will be positive if (v0, v1, v2) are oriented counterclockwise (a front face), and negative if (v0, v1, v2) are oriented clockwise (a back face).
      
      We can reuse the `edge_function` as it already calculates the triangle area.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D20960115
      
      fbshipit-source-id: 2d8a4b9ccfb653df18e79aed8d05c7ec0f057ab1
      4bf30593
  3. 20 Apr, 2020 1 commit
    • Nikhila Ravi's avatar
      coarse rasterization bug fix · 9ef1ee84
      Nikhila Ravi authored
      Summary:
      Fix a bug which resulted in a rendering artifacts if the image size was not a multiple of 16.
      Fix: Revert coarse rasterization to original implementation and only update fine rasterization to reverse the ordering of Y and X axis. This is much simpler than the previous approach!
      
      Additional changes:
      - updated mesh rendering end-end tests to check outputs from both naive and coarse to fine rasterization.
      - added pointcloud rendering end-end tests
      
      Reviewed By: gkioxari
      
      Differential Revision: D21102725
      
      fbshipit-source-id: 2e7e1b013dd6dd12b3a00b79eb8167deddb2e89a
      9ef1ee84
  4. 29 Mar, 2020 1 commit
    • Patrick Labatut's avatar
      Address black + isort fbsource linter warnings · d57daa6f
      Patrick Labatut authored
      Summary: Address black + isort fbsource linter warnings from D20558374 (previous diff)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20558373
      
      fbshipit-source-id: d3607de4a01fb24c0d5269634563a7914bddf1c8
      d57daa6f
  5. 23 Mar, 2020 1 commit
    • Jeremy Reizenstein's avatar
      use assertClose · 595aca27
      Jeremy Reizenstein authored
      Summary: use assertClose in some tests, which enforces shape equality. Fixes some small problems, including graph_conv on an empty graph.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20556912
      
      fbshipit-source-id: 60a61eafe3c03ce0f6c9c1a842685708fb10ac5b
      595aca27
  6. 12 Mar, 2020 1 commit
    • Patrick Labatut's avatar
      Remove shebang line when not strictly required · 3c71ab64
      Patrick Labatut authored
      Summary: The shebang line `#!<path to interpreter>` is only required for Python scripts, so remove it on source files for class or function definitions. Additionally explicitly mark as executable the actual Python scripts in the codebase.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20095778
      
      fbshipit-source-id: d312599fba485e978a243292f88a180d71e1b55a
      3c71ab64
  7. 06 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      Fix coordinate system conventions in renderer · 15c72be4
      Nikhila Ravi authored
      Summary:
      ## Updates
      
      - Defined the world and camera coordinates according to this figure. The world coordinates are defined as having +Y up, +X left and +Z in.
      
      {F230888499}
      
      - Removed all flipping from blending functions.
      - Updated the rasterizer to return images with +Y up and +X left.
      - Updated all the mesh rasterizer tests
          - The expected values are now defined in terms of the default +Y up, +X left
          - Added tests where the triangles in the meshes are non symmetrical so that it is clear which direction +X and +Y are
      
      ## Questions:
      - Should we have **scene settings** instead of raster settings?
          - To be more correct we should be [z clipping in the rasterizer based on the far/near clipping planes](https://github.com/ShichenLiu/SoftRas/blob/master/soft_renderer/cuda/soft_rasterize_cuda_kernel.cu#L400) - these values are also required in the blending functions so should we make these scene level parameters and have a scene settings tuple which is available to the rasterizer and shader?
      
      Reviewed By: gkioxari
      
      Differential Revision: D20208604
      
      fbshipit-source-id: 55787301b1bffa0afa9618f0a0886cc681da51f3
      15c72be4
  8. 23 Jan, 2020 1 commit