Blender Git Statistics -> Developers -> pmoursnv

Patrick Mours (pmoursnv)

Total Commits : 133
Master Commits : 111
Branch Commits : 22
First Commit : August 26, 2019
Latest Commit : September 17, 2021

Commits by Month

DateNumber of Commits
September, 20211
August, 20210
July, 20211
June, 20211
May, 20211
April, 202115
March, 20212
February, 20217
January, 202112
December, 20206
November, 20206
October, 20204
September, 20201
August, 20200
July, 20209
June, 20204
May, 20202
April, 20202
March, 20202
February, 202015
January, 20209
December, 20191
November, 20198
October, 20195
September, 20195
August, 201914

Commit Distribution

PathNumber of Commits

Favourite Files

FilenameTotal Edits

File Changes

ActionTotalPer Commit

Code Changes

ActionTotalPer Commit
Lines Added7 21963.9
Lines Removed4 54540.2

Latest commits Feed

Revision cad00ba by Patrick Mours (cycles-x)
September 17, 2021, 11:29 (GMT)
Cycles X: Improve performance of transparent shadows with OptiX

This changes the shadow record-all any-hit program to accept all
hits (return without calling `optixIgnoreIntersection`) beyond
the furthest distance recorded after the maximum number of hits
that can be recorded was reached.
OptiX will not call the any-hit program anymore for hits beyond
the distance of the accepted hits and also reduces the current
ray length behind the scenes. As a result performance improves
drastically in scenes where shadow rays can hit a lot of
transparent objects, like the "koro" benchmark scene.

With this applied I now get similar performance with both CUDA
and OptiX in "koro". Not quite perfect yet, but much better than

Reviewed By: brecht

Differential Revision:
Revision 27db38f by Patrick Mours (cycles-x)
July 6, 2021, 13:51 (GMT)
Cycles X: Shading performance improvements by changing inlining behavior for SVM

The shading kernels (shade_surface, ...) are limited by memory a lot. I found several hotspots
where execution was stalled waiting for spills to be loaded back into registers. That's
something that can be adjusted by changing the inlining logic:

For example, the compiler did not inline "kernel_write_denoising_features" (even though it
was marked __inline__), which caused it to force synchronization before the function call.
Forcing it inline avoided that and got rid of that hotspot.

Then there was cubic texture filtering and NanoVDB, which introduced huge code chunks
into each texture sampling evaluation (increasing register and instruction cache pressure),
even though they are rarely actually used. Making them __noinline__ outsources that
overhead to only occur when actually used.

Another case is the SVM. The compiler currently converts the node type switch statement
into a binary searched branch sequence. This means depending on the SVM node hit, the
GPU has to branch over large portions of code, which increases instruction cache pressure
immensely (GPU is fetching lots of code even for stuff it immediately jumps away from
again, while jumping through the binary searched branches). This can be reduced somewhat
by making all the node functions __noinline__, so that the GPU only has to branch over a
bunch of call instructions, rather than all the inlined code.
The SVM "offset" value is passed by value into the node functions now and returned through
function return value, to make the compiler keep it in a register. Otherwise when passed as
a pointer, in OptiX the compiler was forced to move it into local memory (since functions
are compiled separately there, so the compiler is unaware of how that pointer is used).

Differential Revision:
Revision 45cfa58 by Patrick Mours (cycles-x)
June 24, 2021, 10:55 (GMT)
Enable built-in OptiX curves by default

Starting with OptiX 7.3 curves now behave as expected with Cycles and render the same as the
custom intersection implementation, so enable by default.
Revision b046bc5 by Patrick Mours (master)
May 25, 2021, 14:56 (GMT)
Fix T88096: Baking with OptiX and displacement fails

Using displacement runs the shader eval kernel, but since OptiX modules are not loaded when
baking is active, those were not available and therefore failed to launch. This fixes that by falling
back to the CUDA kernels.
Revision ffa70e7 by Patrick Mours / Brecht Van Lommel (master)
April 29, 2021, 13:58 (GMT)
Fix missing Cycles CPU name for Arm processors
Revision 9496025 by Patrick Mours (master)
April 26, 2021, 12:55 (GMT)
Cycles: Fix build with OptiX 7.3 SDK
Revision 5abfe99 by Patrick Mours (cycles-x)
April 23, 2021, 11:07 (GMT)
Avoid costly OptiX module creation when only doing denoising
Revision f9f22a5 by Patrick Mours / Brecht Van Lommel (cycles-x)
April 21, 2021, 17:37 (GMT)
Enable megakernel path in OptiX
Revision 6f05c1e by Patrick Mours / Brecht Van Lommel (cycles-x)
April 21, 2021, 17:37 (GMT)
Fix shadow any-hit program not building and incorrect index being used
Revision 5167965 by Patrick Mours / Brecht Van Lommel (cycles-x)
April 21, 2021, 17:37 (GMT)
Remove OptiX code that is no longed in use

MiikaHweb - Blender Git Statistics v1.06
By: Miika HämäläinenLast update: Nov-07-2014 14:18 MiikaHweb | 2003-2021