blender/intern/cycles/render
Lukas Stockner 1558f5b660 Cycles: Don't run full shader evaluation for constant emission lamps
Most of the time, Lamps in Cycles are just a constant emission closure, no texturing etc. Therefore, running a full shader evaluation is wasteful.
To avoid that, Cycles now detects these constant emission shaders and stores their value in the lamp data along with a flag in the shader.
Then, at runtime, if this flag is set, the lamp code just uses this value and only runs the full shader evaluation if it is neccessary.

In scenes with a lot of lamps and with "Sample all direct/indirect" enabled, this saves up to 20% of rendering time in my tests.

Reviewers: #cycles

Differential Revision: https://developer.blender.org/D2193
2016-09-09 01:39:09 +02:00
..
attribute.cpp Cycles microdisplacement: Support for Catmull-Clark subdivision via OpenSubdiv 2016-08-07 11:13:11 -04:00
attribute.h Cycles microdisplacement: Support for Catmull-Clark subdivision via OpenSubdiv 2016-08-07 11:13:11 -04:00
background.cpp Fix Cycles debug build assert on some platforms, tighten checks to avoid this in the future. 2016-06-12 17:35:15 +02:00
background.h Code refactor: minor node and node type utility functions and changes. 2016-05-29 20:30:16 +02:00
bake.cpp Fix T46207: Slow OpenCL GPU bake and blown out baking Cycles render 2016-05-31 17:48:42 +02:00
bake.h Fix T46550: Cycles combined baking black in some cases. 2016-02-06 21:02:02 +01:00
buffers.cpp Code refactor: nodify Cycles background and film. 2016-05-22 17:29:25 +02:00
buffers.h Code refactor: nodify Cycles background and film. 2016-05-22 17:29:25 +02:00
camera.cpp Fix Cycles debug build assert on some platforms, tighten checks to avoid this in the future. 2016-06-12 17:35:15 +02:00
camera.h Code refactor: minor node and node type utility functions and changes. 2016-05-29 20:30:16 +02:00
CMakeLists.txt Cycles microdisplacement: ngons and attributes for subdivision meshes 2016-07-29 03:36:30 -04:00
constant_fold.cpp Cycles: add unit tests for supported constant folding rules. 2016-08-01 18:53:20 +03:00
constant_fold.h Cycles: constant fold add/mul type nodes with known 0 and 1 arguments. 2016-07-31 02:34:34 +02:00
curves.cpp Cycles: Code cleanup, prepare for strict C++ flags 2015-03-27 18:23:31 +05:00
curves.h Code refactor: modify mesh storage to use arrays rather than vectors, separate some arrays. 2016-05-28 18:31:00 +02:00
film.cpp Code refactor: minor node and node type utility functions and changes. 2016-05-29 20:30:16 +02:00
film.h Code refactor: nodify Cycles background and film. 2016-05-22 17:29:25 +02:00
graph.cpp Cycles microdisplacement: Improved automatic bump mapping 2016-09-01 22:45:49 -04:00
graph.h Cycles: add ConstantFolder class for constant folding boilerplate. 2016-07-18 22:54:30 +02:00
image.cpp Revert "Cycles: Use half storage for 16bit files (e.g. 16bit pngs) as well." 2016-08-15 01:01:43 +02:00
image.h Cycles: Change code order for Image Data Types. 2016-08-11 22:30:03 +02:00
integrator.cpp Cycles: Fix wrong size of sobol texture 2016-07-14 11:26:20 +02:00
integrator.h Code refactor: minor node and node type utility functions and changes. 2016-05-29 20:30:16 +02:00
light.cpp Cycles: Don't run full shader evaluation for constant emission lamps 2016-09-09 01:39:09 +02:00
light.h Fix T49180: Cycles MIS Map for Animated Environment Texture Movie Doesn't Update on Frame Change 2016-09-02 09:58:41 +02:00
mesh_displace.cpp Cycles microdisplacement: Move displacement options from mesh to material settings 2016-08-07 14:15:20 -04:00
mesh_subdivision.cpp Cycles: Fix crash when empty mesh has subdivision 2016-08-24 10:39:00 -04:00
mesh.cpp Fix T49252: Crash when image textures used with true displacement 2016-09-05 12:57:33 -04:00
mesh.h Cycles: Store undisplaced coordinates for meshes when needed 2016-09-01 22:45:29 -04:00
nodes.cpp Fix T49136: full constant Curves with zero Fac input crashes in assert. 2016-08-22 11:11:45 +03:00
nodes.h Cycles: Fix unreported - Missing node group for the Camera Node 2016-09-05 04:08:51 +02:00
object.cpp Fix T49163: let Cycles only hide particles with missing motion data, not regular objects. 2016-08-28 21:26:03 +02:00
object.h Fix T49163: let Cycles only hide particles with missing motion data, not regular objects. 2016-08-28 21:26:03 +02:00
osl.cpp Cycles microdisplacement: Improved automatic bump mapping 2016-09-01 22:45:49 -04:00
osl.h Cycles: nodify shader nodes 2016-06-11 20:32:24 +02:00
particles.cpp Code refactor: modify mesh storage to use arrays rather than vectors, separate some arrays. 2016-05-28 18:31:00 +02:00
particles.h Code refactor: modify mesh storage to use arrays rather than vectors, separate some arrays. 2016-05-28 18:31:00 +02:00
scene.cpp Cycles: add support for motion blurring of fluid meshes. 2016-07-18 22:40:08 +02:00
scene.h Cycles: Add single channel texture support for OpenCL. 2016-08-14 20:21:08 +02:00
session.cpp Cycles microdisplacement: Allow kernels to be built without patch evaluation 2016-08-15 11:13:18 -04:00
session.h Cycles: Use explicit qualifier for single-argument constructors 2016-05-11 16:51:14 +02:00
shader.cpp Cycles: Don't run full shader evaluation for constant emission lamps 2016-09-09 01:39:09 +02:00
shader.h Cycles: Don't run full shader evaluation for constant emission lamps 2016-09-09 01:39:09 +02:00
sobol.cpp
sobol.h Cleanup: Fix Cycles Apache header. 2014-12-25 02:50:24 +01:00
svm.cpp Cycles: Fix OpenCL speed regression introduced with the improved bump mapping 2016-09-08 01:33:41 +02:00
svm.h Cycles microdisplacement: Improved automatic bump mapping 2016-09-01 22:45:49 -04:00
tables.cpp Cycles: Fix two small memory leaks and deduplicate table freeing 2016-05-08 17:44:03 +02:00
tables.h Cycles: Fix two small memory leaks and deduplicate table freeing 2016-05-08 17:44:03 +02:00
tile.cpp Cycles: Resumable render implementation for Cycles 2016-03-30 16:02:27 +02:00
tile.h Cycles: Resumable render implementation for Cycles 2016-03-30 16:02:27 +02:00