Commit Graph

343 Commits

Author SHA1 Message Date
Brecht Van Lommel
f4c93ae935 Fix #33328: cycles not rendering dupliframes, needs an exception. 2012-11-27 21:47:55 +00:00
Brecht Van Lommel
2a9b5e8f81 Fix #33267: cycles math node power gave different results for CPU and GPU. The
GPU variants do not support pow(-1, 2), it doesn't check for even exponents, do
manually now.
2012-11-23 17:39:41 +00:00
Campbell Barton
8ab5aa6e8d code cleanup: warning & style 2012-11-23 06:35:06 +00:00
Dalai Felinto
f403ca34c7 final fix for Sensor Fit (AUTO, HOR, VERT) in panorama lens - patch by Brecht Van Lommel and me 2012-11-23 02:10:13 +00:00
Brecht Van Lommel
90cdf34f56 Fix #32796: cycles did not support image auto refresh option. 2012-11-21 13:00:51 +00:00
Dalai Felinto
8c4fa687e0 Cycles bugfix: AUTO wasn't working for Equisolid Fisheye lens
Now one no longer needs to match the sensor dimensions with the render dimensions manually.

IMPORTANT NOTE: if you were using AUTO before with mismathing sensor aspect ratio (comparing to the render dimensions)
this will change your render! We can doversion this, but apart from Tube project I don't know if anyone else
is using this yet (part due to this bug and the only recently fixed 3dview preview aspect ratio).

That should help more artists to take advantage of this fantastic Blender feature.
It still helps to know the parameters of kwnown cameras/lens though.
For example:

Nikon DX2S with a 10.5mm fisheye can be set with:
Render resolution: 4288 x 2848
Sensor 23.7 x 15.70 (15.70 can be ommitted if AUTO is used as fit method)

Note: some cameras render different sizes according to the recording mode.
For example, a Red Scarlet in 5k (@12 fps) can render a full circular fisheye with a sigma 4.5 lens.
The same camera in the 30fps recording mode renders 4k in a cropped circular image.
So it's not only the resolution that changes, but the actual sensor been used.

So just keep in mind that the more information you have from the camera/lens you want to emulate the better.
Bug found at/patch written as a follow up of the BlenderPRO2012, patch reviewed by Brecht Van Lommel
2012-11-21 01:07:30 +00:00
Brecht Van Lommel
104a7bfb90 Fix #33170: cycles viewport update issue with motion blur enabled
(which is supposed to do nothing in this case).
2012-11-15 21:52:17 +00:00
Brecht Van Lommel
2324c80f50 Cycles OSL: windows build system changes to support static OSL/OIIO. 2012-11-15 17:16:27 +00:00
Campbell Barton
1c1e7a0237 avoid divide by zero in cycles progress calculation 2012-11-13 01:53:07 +00:00
Brecht Van Lommel
1ca4670267 Cycles: panorama camera in viewport camera view now shows the render mapped
to the camera border rather than the entire viewport.
2012-11-10 22:31:29 +00:00
Brecht Van Lommel
5ddc5fbfb3 Fix #33135: cycles object info random number not working anymore. 2012-11-10 14:50:34 +00:00
Sergey Sharybin
f5c9f2c253 Cycles: correction to how device of lists is exposed to blender
compute_device_list is using static vector of device information which
had pointers (identifier and name) to values from device information
structures. That structures are also stored in static vector and being
refreshed every 5 seconds.

The issue is, as soon as device information is being updated, pointers
in vector from compute_device_list became incorrect.

Seems it was the reason of issues with sudden switching from CUDA to
OpenCL on my desktop and from CUDA to CPU on my laptop, It was also
seems to be making persistent images behaves instable.

Made it so device identifier and name are copied from device info
to structures used by RNA (CCLDeviceInfo).

Alternative could be avoid cacheing CCLDeviceInfo and always use actual
list of device information by RNA. It shouldn't be so much slow.
2012-11-10 08:37:02 +00:00
Sergey Sharybin
c9cd4d61ba Fix #33132: Incorrect render session update when using persistent images issue and changing resolution 2012-11-10 08:13:13 +00:00
Brecht Van Lommel
7d03e5c615 Fix part of #33132: render resoltuion refresh issues after persistent images
was added for cycles.

This fixes the case where the option is disabled. I moved the option now to
Blender itself and made it keep the engine around only when it's enabled. Also
fixes case where there could be issues when switching to another renderer.
2012-11-09 23:54:58 +00:00
Brecht Van Lommel
09b34e69d4 Fix #33131: more useful cycles behavior for layers that are both marked excluded
and as mask layer. Now it will still use the mask, and have no further influence
rather than just being excluded entirely.
2012-11-09 23:28:51 +00:00
Thomas Dinges
4bcf0358a8 Cycles / OSL:
* UI fix for "shading_system" property, own fault from r51120
2012-11-09 22:01:37 +00:00
Brecht Van Lommel
3f0fe65635 Fix #32972: cycles crash changing to GPU render with OSL enabled. 2012-11-09 21:27:05 +00:00
Dalai Felinto
03cc3b94c9 Fisheye Equidistant Lens algorith bugfix
r = lens * theta

Thanks for Adriano Oliveira for reporting this and chasing down the right formula.
Now fulldome works no longer need to use equisolid + a specific lens+sensor size.

And happy birthday to me. And yes, that's how I celebrate it ;)
2012-11-09 09:11:24 +00:00
Sergey Sharybin
76525d5398 Cycles: persistent images option
This option enables keeping loaded images in the memory in-between
of rendering.

Implemented by keeping render engine alive for until Render structure
is being freed.

Cycles will free all data when render finishes, optionally keeping
image manager untouched. All shaders, meshes, objects will be
re-allocated next time rendering happens.

Cycles cession and scene will be re-created from scratch if render/
scene parameters were changed.

This will also allow to keep compiled OSL shaders in memory without
need to re-compile them again.

P.S. Performance panel could be cleaned up a bit, not so much happy
     with it's vertical alignment currently but not sure how to make
     it look better.

 P.P.S. Currently the only way to free images from the device is to
       disable Persistent Images option and start rendering.
2012-11-09 08:46:53 +00:00
Campbell Barton
610d746c12 code cleanup: double promotion warnings with new bevel code & wrong use of NULL in cycles. 2012-11-09 03:08:02 +00:00
Brecht Van Lommel
863291bc8e Fix #33113: cycles not rendering motion blur correct with dying particles.
There were a bunch of other issues with dupli motion blur and syncing, the problem
being that there was no proper way to detect corresponding duplis between frames
or updates. As a solution, a persistent_id was added to the DupliObject. It's an
extension of the previous index value, with one index for each dupli level. This
can be used to reliably find matching dupli objects between frames. Works with
nested duplis, multiple particle systems, etc.
2012-11-08 16:35:28 +00:00
Brecht Van Lommel
204113b791 Fix #33107: cycles fixed threads 1 was still having two cores do work,
because main thread works as well.
2012-11-07 21:00:49 +00:00
Bastien Montagne
01200ca2ac UI message fixes... 2012-11-07 14:56:53 +00:00
Dalai Felinto
0890c2a4a0 support for string parameters in OSL nodes
for now subtype is not defined, but once we start parsing the metadata we can set texture inputs as FILEPATH
also, it takes relative strings and convert to absolute for all strings (which is arguably a good solution, but
should work for now)
2012-11-06 21:36:44 +00:00
Brecht Van Lommel
d68981158b Fix cycles crash with normal map node, issue with tangent sign attribute. 2012-11-06 21:27:59 +00:00
Brecht Van Lommel
27d647dcf8 Cycles: 4 new nodes.
* Tangent: generate a tangent direction for anisotropic shading. Can be either
  radial around X/Y/Z axis, or from a UV map. The default tangent for the
  anisotropic BSDF and geometry node is now always radial Z, for UV tangent use
  this node now.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/More#Tangent

* Normal Map: generate a perturbed normal from an RGB normal map image. This
  is usually chained with an Image Texture node in the color input, to specify
  the normal map image. For tangent space normal maps, the UV coordinates for
  the image must match, and the image texture should be set to Non-Color mode
  to give correct results.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/More#Normal_Map

* Refraction BSDF: for best results this node should be considered as a building
  block and not be used on its own, but rather mixed with a glossy node using a
  fresnel type factor. Otherwise it will give quite dark results at the edges for
  glossy refraction.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Shaders#Refraction

* Ambient Occlusion: controls the amount of AO a surface receives, rather than
  having just a global factor in the world. Note that this outputs a shader and
  not a color, that's for another time.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Shaders#Ambient_Occlusion
2012-11-06 19:59:02 +00:00
Sergey Sharybin
f07a563f3b Silent strict compiler flag.
Brecht, could you please verify it's indeed nothing should be done for frame node here?
2012-11-06 10:18:42 +00:00
Joshua Leung
2638728bd2 Bugfix: Missing ')' broke Cycles addon 2012-11-05 23:13:09 +00:00
Dalai Felinto
2d7598693e update fisheye tooltip - it was wrongly suggesting equidistant for fulldomes 2012-11-05 19:07:38 +00:00
Sergey Sharybin
759ea40787 Render engines: replace number of x/y tiles with tile size
Now tile size is setting up explicitly instead of using number of tiles.

This allows better control over GPU performance, where having tiles aligned
to specific size makes lots of sense.

Still to come: need to update startup.blend  to make tiles size 64x64.
2012-11-05 08:05:14 +00:00
Sergey Sharybin
6eec49ed20 Cycles: memory usage report
This commit adds memory usage information while rendering.

It reports memory used by device, meaning:

- For CPU it'll report real memory consumption
- For GPU rendering it'll report GPU memory consumption, but it'll
  also mean the same memory is used from host side.

This information displays information about memory requested by Cycles,
not memory really allocated on a device. Real memory usage might be
higher because of memory fragmentation or optimistic memory allocator.

There's really nothing we can do against this.

Also in contrast with blender internal's render cycles memory usage
does not include memory used by scene, only memory needed by cycles
itself will be displayed. So don't freak out if memory usage reported
by cycles would be much lower than blender internal's.

This commit also adds RenderEngine.update_memory_stats callback which
is used to tell memory consumption from external engine to blender.
This information is used to generate information line after rendering
is finished.
2012-11-05 08:04:57 +00:00
Joshua Leung
ead0005b20 Compile fix on Mingw:
"interface" appeared to be a shadowed var (or even a macro/define elsewhere)
which was causing errors like:
intern\cycles\blender\blender_mesh.cpp:124:23: error: multiple types in one
declaration
intern\cycles\blender\blender_mesh.cpp:124:23: error: declaration does not
declare anything [-fpermissive]
2012-11-05 02:40:10 +00:00
Brecht Van Lommel
2ba840652d Cycles: improve Anisotropic BSDF node, changing the Roughness U/V inputs to
Roughness, Anisotropy and Rotation. Also a fix for automatic tangents and
OSL attribute handling.

Meaning of new sockets explained in the documentation:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Shaders#Anisotropic
2012-11-04 22:31:32 +00:00
Brecht Van Lommel
9db3f2368c Cycles: use mikktspace now for computing tangents from UV maps. This avoids ugly
averaged tangents at UV seams but instead now the seams will show as discontinuities
in the tangent.
2012-11-03 15:36:02 +00:00
Campbell Barton
060ea498b0 use library argument for bpy.path.abspath in case of linked nodes. 2012-11-03 15:05:09 +00:00
Brecht Van Lommel
eb87529e23 Cycles OSL: shader script node
Documentation here:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/OSL
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.65/Cycles

These changes require an OSL build from this repository:
https://github.com/DingTo/OpenShadingLanguage

The lib/ OSL has not been updated yet, so you might want to keep OSL disabled
until that is done.

Still todo:
* Auto update for external .osl files not working currently, press update manually
* Node could indicate better when a refresh is needed
* Attributes like UV or generated coordinates may be missing when requested from
  an OSL shader, need a way to request them to be loaded by cycles
* Expose string, enum and other non-socket parameters
* Scons build support

Thanks to Thomas, Lukas and Dalai for the implementation.
2012-11-03 14:32:35 +00:00
Brecht Van Lommel
615fe0295f Cycles OSL: refactoring and fixes
* Moved kernel/osl/nodes to kernel/shaders
* Renamed standard attributes to use geom:, particle:, object: prefixes
* Update stdosl.h to properly reflect the closures we support
* Fix the wrong stdosl.h being used for building shaders
* Add geom:numpolyvertices, geom:trianglevertices, geom:polyvertices attributes
2012-11-03 14:32:13 +00:00
Brecht Van Lommel
40b3c3a4e6 RNA C++: fixes for lookup_int/lookup_string which were not working in some cases,
and don't use ReportList for function arguments.
2012-11-02 13:36:20 +00:00
Brecht Van Lommel
0c3d3e5562 Cycles: optimization to not compile shaders and load images that are not
used by any mesh/lamp/world.
2012-10-30 11:51:17 +00:00
Brecht Van Lommel
d19894c8cb Fix #32972: cycles crash switching OSL to SVM in viewport render. 2012-10-26 09:25:02 +00:00
Brecht Van Lommel
05f563339b Fix #31894: cycles node muting not working, was not implemented yet. 2012-10-24 21:05:44 +00:00
Sergey Sharybin
1fecf8ff31 Patch #29142: Reduce hopping when switching between perspective and orthographic on 3D view
Patch by Yasuhiro Fujii, thanks!

Original issue was that in vases viewport's lens are different from default
value switching between perspective and orthographic projections will change
viewplane a lot, which is disorienting and annoying.
2012-10-24 16:15:46 +00:00
Sergey Sharybin
8a2c30ac57 RNA C++ API improvements
Added support of such features, as:

- Ability to call RNA functions using C++ classes
  For example RenderEngine.tag_update

- Property setters (for scalars and arrays)
  Used Qt/jQuery-like getters/setters style, meaning Class.prop() is a getter,
  Class.prop(value) is a setter.

Still to come:

Collection functions are not currently registering inside a property
Meaning BlendData.meshes wouldn't be a subclass of BlendDataMeshes result
you'll need to explicitly create BlendDataMeshes for now instead of doing
BlendData.meshes.remove()
2012-10-22 17:34:16 +00:00
Bastien Montagne
26d0492653 A final bunch of UI messages fixes and tweaks, and some BKE_report()<->BKE_reportf() fixes. 2012-10-21 14:02:30 +00:00
Joshua Leung
a1a0c8da13 Bugfix [#32932] Can't see the Speaker properties when using Cycles 2012-10-21 05:23:58 +00:00
Lukas Toenne
d36dc6d8de Integer socket support in Cycles. Int values are already supported natively in OSL, but were not used as actual ints on the SVM stack. This patch implements all the necessary functionality to support reading input values from RNA properties and convert between SHADER_SOCKET_INT and other types. 2012-10-20 13:11:45 +00:00
Brecht Van Lommel
497ea5f306 Fix #32912: cycles crash with dead particles, actual crash was caused by an
inconsistency in the particle system code, using <= and <. Also tightened up
checks on cycles side to avoid other potential crashes.
2012-10-18 15:00:32 +00:00
Brecht Van Lommel
9d260eedeb Fix #32904: strange pattern on subdivided cube with anistropic shader. Now
tangents from generated coordinates are computed per pixel on the fly, avoids
bad interpolation of singularities.
2012-10-17 23:09:12 +00:00
Lukas Toenne
617cdb4642 Fix for second bug reported in #32846: Particle emitters are still shown for secondary instances with "show emitter" disabled. This requires checking the duplicator visibility on dupli objects themselves after generating the dupli-list.
The emitter visibility option is messy design, it makes such checks unnecessarily complicated. A better approach would be to allow non-mesh objects to carry particle data, these objects would just be invisible anyway without having to care about extra settings. However, this conflicts with the simplistic particle design of "owner is the emitter" ...
2012-10-16 15:38:52 +00:00
Sergey Sharybin
9be4c94204 Cycles: non-camera viewport render border support
This makes it possible to do a border render inside a viewport even
when not looking through the camera.

Render border could be defined by Ctrl-B shortcut (works for both
camera render border and viewport render border).

Camera render border could still be defined using Shift-B (so no
muscule memory would be broken). Currently used a special flag of
operator to do this, otherwise you'll need to either two operators
with different poll callback or it could go into conflict with a
border zoom,

Border render of a viewport could be enabled/disabled in View
panel using "Render Border" option.
2012-10-16 11:57:46 +00:00