Age | Commit message (Collapse) | Author |
|
|
|
This patch supports auto-clamped handles for curves,
useful since without this it can be difficult to have 'flat' sections of a curve.
|
|
|
|
This diff adds a 6th drawing mode to the Waveform Scope.
The new mode shows the RGB colour channels overlaid as a "Full colour" waveform.
The old "Red Green Blue" mode is renamed "Parade" which is the standard industry
term for RGB channels shown side-by-side.
This full colour style of waveform is very much more useful for colour grading than the
Parade mode and is the default waveform for many artists.
Files from older Blender versions which show scopes open as expected.
Patch by John Cox (johnedwardcox), thanks!
Reviewers: sergey
Reviewed By: sergey
Subscribers: campbellbarton, tmw, Blendify
Differential Revision: https://developer.blender.org/D1936
|
|
Two were actual bugs, though they existed only in unused code:
* In Freestyle it was unintentionally copying a scene rather than referencing it.
* In BLI_array_store_is_valid there was use of uninitialized memory.
|
|
Gives over 50% faster scope update (from 4.5ms to 2.2ms here with SD shot)!
Probably mostly due to more clever usage of thread-local data (which avoids any lock,
when OMP code had a rather stupid critical section for minmax)...
|
|
|
|
Copied from original function.
|
|
|
|
Vector handle is only required for a symmetric curve to give nice a /\ shape.
Single slope curves better to use AUTO handle by default.
|
|
Shutter curve now can be controlled using curve mapping widget in the motion
blur panel in Render buttons. Only mapping from 0..1 by x axis are allowed,
Y values will be normalized to fill in 0..1 space as well automatically.
Y values of 0 means fully closed shutter, Y values of 1 means fully opened
shutter.
Default mapping is set to old behavior when shutter opens and closes instantly.
This shutter mapping curve could easily be used by any other render engine by
accessing scene.render.motion_blur_shutter_curve.
Reviewers: #cycles, brecht, juicyfruit, campbellbarton
Differential Revision: https://developer.blender.org/D1585
|
|
Previously curve mapping was always setting to only a single slope which then
was symmetrizied by a tools (such as brush or compositing).
With this change it's possible to set curve to symmetrical slopes as a part
of preset.
|
|
|
|
|
|
Scopes assumed all passes were RGBA, but some passes have 1-3 channels.
|
|
|
|
Was a rounding issue, which was previously solved by quite simple check.
Well, let's do the same check again :)
|
|
|
|
|
|
This commits makes scopes evaluation multithreaded by using OpenMP
for the outer loop of pixel processor. it also makes all the changes
needed for keeping performance as high as possible by keeping data
local to thread for as long as it's possible.
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D1334
|
|
Previously it was using accumulative counter of saved lines and so on in order
to detect cases when new sample is to be saved. This is not quite possible to
do with threaded scopes update.
Change it now with non-accumulative approach which saves a bit different lines
due to slightly different rounding, but this things are not strictly defined
anyway and results are close enough to each other.
|
|
Doing this as a separate commit so it's easier to troubleshoot in the future
if some regression happens.
|
|
Was doing clamping as fix for T42984. Seems we can ommit clamping for
sculpting if we make sure overlap is not zero with negative values.
Control for clamping is moved to the "Use Clipping" function of curves
(which is on by default), so both bugs remain squashed and advanced
users can now properly utilize curves in sculpting, though not all
brushes work well with negative curves.
|
|
We're currently only supporting save to a default format color space, which
makes it a bit tricky to prevent ImBuf from being changed.
For until when saving to a custom colorspace works we'll just reload image
if the space changes.
|
|
calculations and use the OCIO one instead.
|
|
|
|
|
|
Opted to keep includes if they are used indirectly (even if removing is possible).
|
|
|
|
|
|
correct.
The "premultiply" optimization here did not take the extrapolation into account.
|
|
|
|
|
|
The SAMPLELINE flag in histogram was set during the BKE_histogram_update_sample_line function. That function in turn is called during every scope update in area draw function, meaning that during render
it constantly gets set. OTOH the operator tries to disable the flag on invoke, which "cancels" the sample line by default. So during render the operator un-setting of the flag has no effect, because the
render job immediatly triggers a redraw, which updates scopes and sets it again.
Moved the flag out of the actual sample line update function into the operator execute. Now only the operator enables/disables overall sample line drawing, while the rest of the update works as before.
|
|
Throw a python error if user attempts to use CurveMap without calling
CurveMapping.initialize() first. Added access to the initialize function
to CurveMapping on RNA level.
Thanks to Campbel for the help and remarks!
|
|
Curves may not be not initialized when called from python. C code
explicilty says that curvemapping_initialize should be called prior to
evaluating the curve, however the curve clip rectangle is not available
when calling evaluation on the curvemap. This is not possible unless we
force the evaluation on CurveMapping level, not on CurveMap level.
For now just pass a rectangle with the x boundary values of the curvemap
for evaluation to avoid the crash.
|
|
|
|
This commit implement's OCIO's Looks idea which
is about applying some color correction on the
buffer before it get's affected by a display
transform.
This is mainly used to modify images in an
artistics way.
Currently we've got looks generated from film
response curves for all sorts of cameras.
Patch by both of me and Brecht.
|
|
indent.
also indent case's within the switch (we already did both of these almost everywhere)
|
|
|
|
- was reading outside memory bounds checking the 'x' point.
- inserting a point to the right of the last point would add a point to the very left instead.
|
|
* Fix precision overflow issue with overlay previews,
* Expose alpha mask mapping to UI (still not functional but coming soon).
* More overlay refactoring:
Overlay now does minimal checking for texture refresh.
Instead, we now have invalidation flags to set an aspect of the brush
overlay as invalid. This is necessary because this way we will be able to
separate and preview different brush attributes on the overlays, using
different textures:
These attributes/aspects are:
Primary texture (main texture for sculpt, vertex, imapaint)
Secondary texture (mask/alpha texture for imapaint)
Cursor texture (cursor texture. It involves brush strength and curves)
Modified the relevant RNA property update functions and C update callback
functions to call the relevant cursor invalidation functions instead
of checking every frame for multiple properties.
Properties that affect this are:
Image changes, if image is used by current brush,
Texture slot changes, similarly
Curve changes,
Object mode change invalidates the cursor
Paint tool change invalidates the cursor.
These changes give slightly more invalidation cases than simply
comparing the relevant properties each frame, but these do not occur in
performance critical moments and it's a much more elegant system than
adding more variables to check per frame each time we add something on
the system.
|
|
Sequencer histogram was calculating still badly, now it uses a per-color
component counter to calculate the levels (instead of counter for all)
|
|
|
|
The Scopes and Histogram (Image editor, Sequencer) were not updating on
changes in color or display settings.
- Missing notifiers for refreshing
- Missing code to draw correct for managed byte buffers.
|
|
|
|
|
|
data, since this would crash.
also rename modifier_sameTopology -> modifier_isSameTopology(), modifier_nonGeometrical -> modifier_isNonGeometrical()
|
|
Histogram in Blender was nearly useless - it just didnt work, showed
confusing blank results.
Two reasons for it:
- It was including Alpha in the weighted total value
(RGB images have alpha 255 for all pixels)
- It was counting the a total weight value max(R, G, B, A), instead of
using max(R) and max(G) etc.
Now it all draws much nicer - similar to Da Gimp! :)
|
|
authors to avoid bugs with accessing removed data.
|