1. 29 Feb, 2020 1 commit
    • Nikhila Ravi's avatar
      Barycentric clipping in the renderer and flat shading · ff19c642
      Nikhila Ravi authored
      Summary:
      Updates to the Renderer to enable barycentric clipping. This is important when there is blurring in the rasterization step.
      
      Also added support for flat shading.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19934259
      
      fbshipit-source-id: 036e48636cd80d28a04405d7a29fcc71a2982904
      ff19c642
  2. 24 Feb, 2020 1 commit
  3. 21 Feb, 2020 1 commit
    • Jeremy Reizenstein's avatar
      lint things · e491efb8
      Jeremy Reizenstein authored
      Summary:
      Lint related fixes: Improve internal/OSS consistency. Fix the fight between black and certain pyre-ignore markers by moving them to the line before.
      Use clang-format-8 automatically if present. Small number of pyre fixes.
      
      arc doesn't run pyre at the moment, so I put back the explicit call to pyre. I don't know if there's an option somewhere to change this.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19780518
      
      fbshipit-source-id: ef1c243392322fa074130f6cff2dd8a6f7738a7f
      e491efb8
  4. 20 Feb, 2020 3 commits
    • Georgia Gkioxari's avatar
      face areas backward · a3baa367
      Georgia Gkioxari authored
      Summary:
      Added backward for mesh face areas & normals. Exposed it as a layer. Replaced the computation with the new op in Meshes and in Sample Points.
      
      Current issue: Circular imports. I moved the import of the op in meshes inside the function scope.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19920082
      
      fbshipit-source-id: d213226d5e1d19a0c8452f4d32771d07e8b91c0a
      a3baa367
    • Patrick Labatut's avatar
      Fix spelling of "Gouraud" · 9ca54891
      Patrick Labatut authored
      Summary: Fix spelling of *Gouraud* in [Gouraud shading](https://en.wikipedia.org/wiki/Gouraud_shading).
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19943547
      
      fbshipit-source-id: 5c016b7b051a7b33a7b68ed5303b642d9e834bbd
      9ca54891
    • Nikhila Ravi's avatar
      Shader API more consistent naming · f0dc6511
      Nikhila Ravi authored
      Summary:
      Renamed shaders to be prefixed with Hard/Soft depending on if they use a probabalistic blending (Soft) or use the closest face (Hard).
      
      There is some code duplication but I thought it would be cleaner to have separate shaders for each task rather than:
      - inheritance (which we discussed previously that we want to avoid)
      - boolean (hard/soft) or a string (hard/soft) - new blending functions other than the ones provided would need if statements in the current shaders which might get messy.
      
      Also added a `flat_shading` function and a `FlatShader` - I could make this into a tutorial as it was really easy to add a new shader and it might be a nice showcase.
      
      NOTE: There are a few more places where the naming will need to change (e.g the tutorials) but I wanted to reach a consensus on this before changing it everywhere.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D19761036
      
      fbshipit-source-id: f972f6530c7f66dc5550b0284c191abc4a7f6fc4
      f0dc6511
  5. 19 Feb, 2020 2 commits
    • Georgia Gkioxari's avatar
      cpp support for packed to padded · 60f3c4e7
      Georgia Gkioxari authored
      Summary:
      Cpu implementation for packed to padded and added gradients
      ```
      Benchmark                                     Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      PACKED_TO_PADDED_2_100_300_1_cpu                    138             221           3625
      PACKED_TO_PADDED_2_100_300_1_cuda:0                 184             261           2716
      PACKED_TO_PADDED_2_100_300_16_cpu                   555             726            901
      PACKED_TO_PADDED_2_100_300_16_cuda:0                179             260           2794
      PACKED_TO_PADDED_2_100_3000_1_cpu                   396             519           1262
      PACKED_TO_PADDED_2_100_3000_1_cuda:0                181             274           2764
      PACKED_TO_PADDED_2_100_3000_16_cpu                 4517            5003            111
      PACKED_TO_PADDED_2_100_3000_16_cuda:0               224             397           2235
      PACKED_TO_PADDED_2_1000_300_1_cpu                   138             212           3616
      PACKED_TO_PADDED_2_1000_300_1_cuda:0                180             282           2775
      PACKED_TO_PADDED_2_1000_300_16_cpu                  565             711            885
      PACKED_TO_PADDED_2_1000_300_16_cuda:0               179             264           2797
      PACKED_TO_PADDED_2_1000_3000_1_cpu                  389             494           1287
      PACKED_TO_PADDED_2_1000_3000_1_cuda:0               180             271           2777
      PACKED_TO_PADDED_2_1000_3000_16_cpu                4522            5170            111
      PACKED_TO_PADDED_2_1000_3000_16_cuda:0              216             286           2313
      PACKED_TO_PADDED_10_100_300_1_cpu                   251             345           1995
      PACKED_TO_PADDED_10_100_300_1_cuda:0                178             262           2806
      PACKED_TO_PADDED_10_100_300_16_cpu                 2354            2750            213
      PACKED_TO_PADDED_10_100_300_16_cuda:0               178             291           2814
      PACKED_TO_PADDED_10_100_3000_1_cpu                 1519            1786            330
      PACKED_TO_PADDED_10_100_3000_1_cuda:0               179             237           2791
      PACKED_TO_PADDED_10_100_3000_16_cpu               24705           25879             21
      PACKED_TO_PADDED_10_100_3000_16_cuda:0              228             316           2191
      PACKED_TO_PADDED_10_1000_300_1_cpu                  261             432           1919
      PACKED_TO_PADDED_10_1000_300_1_cuda:0               181             261           2756
      PACKED_TO_PADDED_10_1000_300_16_cpu                2349            2770            213
      PACKED_TO_PADDED_10_1000_300_16_cuda:0              180             256           2782
      PACKED_TO_PADDED_10_1000_3000_1_cpu                1613            1929            310
      PACKED_TO_PADDED_10_1000_3000_1_cuda:0              183             253           2739
      PACKED_TO_PADDED_10_1000_3000_16_cpu              22041           23653             23
      PACKED_TO_PADDED_10_1000_3000_16_cuda:0             220             343           2270
      PACKED_TO_PADDED_32_100_300_1_cpu                   555             750            901
      PACKED_TO_PADDED_32_100_300_1_cuda:0                188             282           2661
      PACKED_TO_PADDED_32_100_300_16_cpu                 7550            8131             67
      PACKED_TO_PADDED_32_100_300_16_cuda:0               181             272           2770
      PACKED_TO_PADDED_32_100_3000_1_cpu                 4574            6327            110
      PACKED_TO_PADDED_32_100_3000_1_cuda:0               173             254           2884
      PACKED_TO_PADDED_32_100_3000_16_cpu               70366           72563              8
      PACKED_TO_PADDED_32_100_3000_16_cuda:0              349             654           1433
      PACKED_TO_PADDED_32_1000_300_1_cpu                  612             728            818
      PACKED_TO_PADDED_32_1000_300_1_cuda:0               189             295           2647
      PACKED_TO_PADDED_32_1000_300_16_cpu                7699            8254             65
      PACKED_TO_PADDED_32_1000_300_16_cuda:0              189             311           2646
      PACKED_TO_PADDED_32_1000_3000_1_cpu                5105            5261             98
      PACKED_TO_PADDED_32_1000_3000_1_cuda:0              191             260           2625
      PACKED_TO_PADDED_32_1000_3000_16_cpu              87073           92708              6
      PACKED_TO_PADDED_32_1000_3000_16_cuda:0             344             425           1455
      --------------------------------------------------------------------------------
      
      Benchmark                                           Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      PACKED_TO_PADDED_TORCH_2_100_300_1_cpu                    492             627           1016
      PACKED_TO_PADDED_TORCH_2_100_300_1_cuda:0                 768             975            652
      PACKED_TO_PADDED_TORCH_2_100_300_16_cpu                   659             804            760
      PACKED_TO_PADDED_TORCH_2_100_300_16_cuda:0                781             918            641
      PACKED_TO_PADDED_TORCH_2_100_3000_1_cpu                   624             734            802
      PACKED_TO_PADDED_TORCH_2_100_3000_1_cuda:0                778             929            643
      PACKED_TO_PADDED_TORCH_2_100_3000_16_cpu                 2609            2850            192
      PACKED_TO_PADDED_TORCH_2_100_3000_16_cuda:0               758             901            660
      PACKED_TO_PADDED_TORCH_2_1000_300_1_cpu                   467             612           1072
      PACKED_TO_PADDED_TORCH_2_1000_300_1_cuda:0                772             905            648
      PACKED_TO_PADDED_TORCH_2_1000_300_16_cpu                  689             839            726
      PACKED_TO_PADDED_TORCH_2_1000_300_16_cuda:0               789            1143            635
      PACKED_TO_PADDED_TORCH_2_1000_3000_1_cpu                  629             735            795
      PACKED_TO_PADDED_TORCH_2_1000_3000_1_cuda:0               812             916            616
      PACKED_TO_PADDED_TORCH_2_1000_3000_16_cpu                2716            3117            185
      PACKED_TO_PADDED_TORCH_2_1000_3000_16_cuda:0              844            1288            593
      PACKED_TO_PADDED_TORCH_10_100_300_1_cpu                  2387            2557            210
      PACKED_TO_PADDED_TORCH_10_100_300_1_cuda:0               4112            4993            122
      PACKED_TO_PADDED_TORCH_10_100_300_16_cpu                 3385            4254            148
      PACKED_TO_PADDED_TORCH_10_100_300_16_cuda:0              3959            4902            127
      PACKED_TO_PADDED_TORCH_10_100_3000_1_cpu                 2918            3105            172
      PACKED_TO_PADDED_TORCH_10_100_3000_1_cuda:0              4054            4450            124
      PACKED_TO_PADDED_TORCH_10_100_3000_16_cpu               12748           13623             40
      PACKED_TO_PADDED_TORCH_10_100_3000_16_cuda:0             4023            4395            125
      PACKED_TO_PADDED_TORCH_10_1000_300_1_cpu                 2258            2492            222
      PACKED_TO_PADDED_TORCH_10_1000_300_1_cuda:0              3997            4312            126
      PACKED_TO_PADDED_TORCH_10_1000_300_16_cpu                3404            3597            147
      PACKED_TO_PADDED_TORCH_10_1000_300_16_cuda:0             3877            4227            129
      PACKED_TO_PADDED_TORCH_10_1000_3000_1_cpu                2789            3054            180
      PACKED_TO_PADDED_TORCH_10_1000_3000_1_cuda:0             3821            4402            131
      PACKED_TO_PADDED_TORCH_10_1000_3000_16_cpu              11967           12963             42
      PACKED_TO_PADDED_TORCH_10_1000_3000_16_cuda:0            3729            4290            135
      PACKED_TO_PADDED_TORCH_32_100_300_1_cpu                  6933            8152             73
      PACKED_TO_PADDED_TORCH_32_100_300_1_cuda:0              11856           12287             43
      PACKED_TO_PADDED_TORCH_32_100_300_16_cpu                 9895           11205             51
      PACKED_TO_PADDED_TORCH_32_100_300_16_cuda:0             12354           13596             41
      PACKED_TO_PADDED_TORCH_32_100_3000_1_cpu                 9516           10128             53
      PACKED_TO_PADDED_TORCH_32_100_3000_1_cuda:0             12917           13597             39
      PACKED_TO_PADDED_TORCH_32_100_3000_16_cpu               41209           43783             13
      PACKED_TO_PADDED_TORCH_32_100_3000_16_cuda:0            12210           13288             41
      PACKED_TO_PADDED_TORCH_32_1000_300_1_cpu                 7179            7689             70
      PACKED_TO_PADDED_TORCH_32_1000_300_1_cuda:0             11896           12381             43
      PACKED_TO_PADDED_TORCH_32_1000_300_16_cpu               10127           15494             50
      PACKED_TO_PADDED_TORCH_32_1000_300_16_cuda:0            12034           12817             42
      PACKED_TO_PADDED_TORCH_32_1000_3000_1_cpu                8743           10251             58
      PACKED_TO_PADDED_TORCH_32_1000_3000_1_cuda:0            12023           12908             42
      PACKED_TO_PADDED_TORCH_32_1000_3000_16_cpu              39071           41777             13
      PACKED_TO_PADDED_TORCH_32_1000_3000_16_cuda:0           11999           13690             42
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: bottler, nikhilaravi, jcjohnson
      
      Differential Revision: D19870575
      
      fbshipit-source-id: 23a2477b73373c411899633386c87ab034c3702a
      60f3c4e7
    • Nikhila Ravi's avatar
      transforms 3d convention fix · 8301163d
      Nikhila Ravi authored
      Summary: Fixed the rotation matrices generated by the RotateAxisAngle class and updated the tests. Added documentation for Transforms3d to clarify the conventions.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19912903
      
      fbshipit-source-id: c64926ce4e1381b145811557c32b73663d6d92d1
      8301163d
  6. 14 Feb, 2020 1 commit
    • Nikhila Ravi's avatar
      lint fixes · 97acf16d
      Nikhila Ravi authored
      Summary: Ran `dev/linter.sh`.
      
      Reviewed By: bottler
      
      Differential Revision: D19761062
      
      fbshipit-source-id: 1a49abe4a5f2bc7641b2b46e254aa77e6a48aa7d
      97acf16d
  7. 13 Feb, 2020 2 commits
    • Georgia Gkioxari's avatar
      CPU implem for face areas normals · 29cd181a
      Georgia Gkioxari authored
      Summary:
      Added cpu implementation for face areas normals. Moved test and bm to separate functions.
      
      ```
      Benchmark                                   Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      FACE_AREAS_NORMALS_2_100_300_False                196             268           2550
      FACE_AREAS_NORMALS_2_100_300_True                 106             179           4733
      FACE_AREAS_NORMALS_2_100_3000_False              1447            1630            346
      FACE_AREAS_NORMALS_2_100_3000_True                107             178           4674
      FACE_AREAS_NORMALS_2_1000_300_False               201             309           2486
      FACE_AREAS_NORMALS_2_1000_300_True                107             186           4673
      FACE_AREAS_NORMALS_2_1000_3000_False             1451            1636            345
      FACE_AREAS_NORMALS_2_1000_3000_True               107             186           4655
      FACE_AREAS_NORMALS_10_100_300_False               767             918            653
      FACE_AREAS_NORMALS_10_100_300_True                106             167           4712
      FACE_AREAS_NORMALS_10_100_3000_False             7036            7754             72
      FACE_AREAS_NORMALS_10_100_3000_True               113             164           4445
      FACE_AREAS_NORMALS_10_1000_300_False              748             947            669
      FACE_AREAS_NORMALS_10_1000_300_True               108             169           4638
      FACE_AREAS_NORMALS_10_1000_3000_False            7069            7783             71
      FACE_AREAS_NORMALS_10_1000_3000_True              108             172           4646
      FACE_AREAS_NORMALS_32_100_300_False              2286            2496            219
      FACE_AREAS_NORMALS_32_100_300_True                108             180           4631
      FACE_AREAS_NORMALS_32_100_3000_False            23184           24369             22
      FACE_AREAS_NORMALS_32_100_3000_True               159             213           3147
      FACE_AREAS_NORMALS_32_1000_300_False             2414            2645            208
      FACE_AREAS_NORMALS_32_1000_300_True               112             197           4480
      FACE_AREAS_NORMALS_32_1000_3000_False           21687           22964             24
      FACE_AREAS_NORMALS_32_1000_3000_True              141             211           3540
      --------------------------------------------------------------------------------
      
      Benchmark                                         Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      FACE_AREAS_NORMALS_TORCH_2_100_300_False               5465            5782             92
      FACE_AREAS_NORMALS_TORCH_2_100_300_True                1198            1351            418
      FACE_AREAS_NORMALS_TORCH_2_100_3000_False             48228           48869             11
      FACE_AREAS_NORMALS_TORCH_2_100_3000_True               1186            1304            422
      FACE_AREAS_NORMALS_TORCH_2_1000_300_False              5556            6097             90
      FACE_AREAS_NORMALS_TORCH_2_1000_300_True               1200            1328            417
      FACE_AREAS_NORMALS_TORCH_2_1000_3000_False            48683           50016             11
      FACE_AREAS_NORMALS_TORCH_2_1000_3000_True              1185            1306            422
      FACE_AREAS_NORMALS_TORCH_10_100_300_False             24215           25097             21
      FACE_AREAS_NORMALS_TORCH_10_100_300_True               1150            1314            435
      FACE_AREAS_NORMALS_TORCH_10_100_3000_False           232605          234952              3
      FACE_AREAS_NORMALS_TORCH_10_100_3000_True              1193            1314            420
      FACE_AREAS_NORMALS_TORCH_10_1000_300_False            24912           25343             21
      FACE_AREAS_NORMALS_TORCH_10_1000_300_True              1216            1330            412
      FACE_AREAS_NORMALS_TORCH_10_1000_3000_False          239907          241253              3
      FACE_AREAS_NORMALS_TORCH_10_1000_3000_True             1226            1333            408
      FACE_AREAS_NORMALS_TORCH_32_100_300_False             73991           75776              7
      FACE_AREAS_NORMALS_TORCH_32_100_300_True               1193            1339            420
      FACE_AREAS_NORMALS_TORCH_32_100_3000_False           728932          728932              1
      FACE_AREAS_NORMALS_TORCH_32_100_3000_True              1186            1359            422
      FACE_AREAS_NORMALS_TORCH_32_1000_300_False            76385           79129              7
      FACE_AREAS_NORMALS_TORCH_32_1000_300_True              1165            1310            430
      FACE_AREAS_NORMALS_TORCH_32_1000_3000_False          753276          753276              1
      FACE_AREAS_NORMALS_TORCH_32_1000_3000_True             1205            1340            415
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: bottler, jcjohnson
      
      Differential Revision: D19864385
      
      fbshipit-source-id: 3a87ae41a8e3ab5560febcb94961798f2e09dfb8
      29cd181a
    • Jeremy Reizenstein's avatar
      Single function to load meshes from OBJs. join_meshes. · 8fe65d5f
      Jeremy Reizenstein authored
      Summary:
      Create the textures and the Meshes object from OBJ files in a single call.
      
      There is functionality in OBJ files (like normals) which is ignored by this function.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19691699
      
      fbshipit-source-id: e26442ed80ff231b65b17d6c54c9d41e22b4e4a3
      8fe65d5f
  8. 03 Feb, 2020 1 commit
    • Justin Johnson's avatar
      Add CPU implementation for nearest neighbor · e290f87c
      Justin Johnson authored
      Summary:
      Adds a CPU implementation for `pytorch3d.ops.nn_points_idx`.
      
      Also renames the associated C++ and CUDA functions to use `AllCaps` names used in other C++ / CUDA code.
      
      Reviewed By: gkioxari
      
      Differential Revision: D19670491
      
      fbshipit-source-id: 1b6409404025bf05e6a93f5d847e35afc9062f05
      e290f87c
  9. 31 Jan, 2020 1 commit
    • Georgia Gkioxari's avatar
      load texture flag · 659ad343
      Georgia Gkioxari authored
      Summary: Add flag for loading textures
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D19664437
      
      fbshipit-source-id: 3cc4e6179df9b7e24efff9e7da3b164253f1d775
      659ad343
  10. 23 Jan, 2020 1 commit