Commit Graph

699 Commits

Author SHA1 Message Date
6c941bb3e1 Bugfix #5217
Call to refresh Image Icon on load should not be done for background
renders... crashed blender then.
2006-11-13 13:32:52 +00:00
56cd48a5ea Bugfix #5155
Option "Add UV image" didn't set tilesXY to 1. Caused crash or bad opengl
behaviour when tiles option used.
2006-11-01 12:54:29 +00:00
9f77785d7c Coding work while on the trip to london (based on Plumiferos wishlist);
- Icon previews for Images were created always for old files, which made
  browsing (menus) incredible slow. Added a minor change in the flow, so
  icons only get created when the user invokes loading images.
  Andrea; you might check this, probably not al cases are covered yet?

- Compositor: the 'File Output' node now has a min/max frame for which it
  writes files

- Compositor: fixed a very bad bug (even in 2.42a release) that made the
  depsgraph for nodes not work... while editing, only the nodes that change
  should be recalculated, but accidentally all of them were done each time.
2006-10-26 10:13:16 +00:00
6587c3c6ba Some UV/Image window changes:
- A new Save image function, next to the existing Save As.
- Shortcut keys Alt+S, Alt+R, Alt+O and Alt+N for Save, Reload, Open
  and New image respectively, consistent with the text editor window.
- Hide Select and UVs menus when UV editing isn't active.
- Removed duplicate and unused code, also moved some functions.
2006-09-25 22:00:52 +00:00
7639f0890a * Updated the auto-generated UV test image (Image Editor -> Image -> New). The
previous one was ok as a quick fix during orange and showed distortion obviously
but it was kind of extreme, and I'd rather not be blamed for causing blindness
or brain tumours because of it. This pattern is nicer, and still shows
distortion and its location on the map well.
2006-09-25 03:15:58 +00:00
e7d6537f1c Added support for threadsafe MEM_mallocN/MEM_freeN in the guardedalloc
module itself, replacing the special MEM_mallocT/MEM_freeT functions.
Mutex locking is only enabled when threads are running.

There was no good reason to have these separate, it just led to ugly
hacks when calling functions with non-threadsafe malloc from threads.
2006-09-06 19:13:23 +00:00
b894ee5b87 Bugfix #4892
Compositor: Image nodes used for Movie files didn't convert the relative
paths (if used), so it could not load the movie file.

This bug explains why sometimes movies worked in the Compositor... so for
the current release the bypass is to disable the "Relative" button in the
File Window.
2006-08-20 10:18:01 +00:00
7440aba482 Compositor: finished work on node "File Output".
- It saves a file with indicated type on each change, with number
  appended denoting the current frame (like ANIM saving).
- Output filename button supports relative paths ("//")
- Shows optional preview image too
- For now, added a print on each file save as feedback

To make this option work nicely, changed the BKE_makepicstring() function
to have less globals inside, so it is more generic. Todo: allow amount of
digits in filenames to be set (to support files like tmp_123456.jpg)
2006-08-10 10:38:50 +00:00
00b55aba24 1)
The F3 key 'save rendered image' made inconsistant choices to save either
in jpg or tga, when the output panel was indicating to render to movies.
Even worse, it was sometimes saying 'save jpg' and saved a targa!

Made it consistantly save .jpg now, since tga isn't a good common format.

2)
Forgot to commit transform.h for previous bugfix in transform numeric input
2006-07-08 13:18:57 +00:00
be3c3a24b5 Bugfix #4620
Hurmf, then you bring back old backbuffer, and they want to have fields
work on that!
OK... here it is. Although using Compositor features will make this much
easier and advanced to control. :)
2006-07-05 17:32:49 +00:00
adff7aacad bugfix 4324
Old issue... Blender saves jpg RGBA files. That's unsupported in all
programs except Blender, always a source of problems with that feature.

Now it just falls back to saving 24 bits when the "RGBA" option is set.
2006-06-13 18:51:52 +00:00
e5218ce9aa - added saving of the image previews to the .blend file to prevent having to load the full images for the image previews
- new struct PreviewImage in DNA_image_types can in the future be moved to struct ID for storing previews for all types
2006-06-05 11:07:15 +00:00
Ken Hughes
dfb545a77c Fix some warning for unsigned vs signed comparisons. 2006-04-03 20:31:10 +00:00
de0262e4c8 New: Import/Export of Cineon and DPX image files. The first is Kodak's
standard for film scanning, 10 bits/channel and logarithmic. DPX is
derived from Cineon as the ANSI/SMPTE industry standard.
DPX supports 16 bits color/channel, linear as well as logarithmic.

Code has been gratefully copied from CinePaint and was integrated in
Blender by Joe Eagar.

According to CinePaint's dev Robin Rowe the DPX code defaults to log
colorspace. Can't find in the code clues yet how to enable/disable that.
However, tests with write/read of DPX seems to show no visible loss by
log conversion code. Might be because it uses the entire 16 bit range...

CinePaint dpx files have been succesfully imported in a Quantel IQ HD/2K
finishing/grading set without problem, so for now I guess we can
use it! :)

Changes in code: added tests for image magic numbers before entering
the actual reading code. Prevents error prints, and makes it faster too.
(Note; this because Blender doesn't check for extensions, but calls
reading functions on every file until one accepts it. :)
2006-03-12 14:11:23 +00:00
86511abe5a Reviewed octree filling times... found a way to optimize some 10% of time,
nothing radical. :)
Just remember to always try higher octree resolutions (256 or 512) or more
complex scenes. Can be 5-10 times faster.

For waiting pleasure; added a per-second header print update to tell where
octree is. Also added an ESC test in octree making.

(Commit in image.c is a faulty print for 'Not an anim').
2006-02-14 10:02:25 +00:00
ed4cc927a7 Couple of features/fixes:
- Compositor now frees memory of buffers internally used in groups
  immediately. This wasn't part of the event-based cache anyway

- New option: "Free Texture Images" (in render Output panel). This
  frees after each render of each scene all images and mipmaps as
  used by textures. As reference it prints total amount of MB freed.

- Render stage 'creating speed vectors' had no ESC checking yet

- Made drawing scanline updates during render draw 1 scanline less...
  dunno, still hunting for weird opengl crashes.

- 3D preview render didn't properly skip sequence or composit render.
2006-02-11 23:17:41 +00:00
f4e491e2f4 Thread rendering stability commit.
I noticed still several cases where the Imbuf library was called within a
thread... and that whilst the Imbuf itself isn't threadsafe. Also the
thread lock I added in rendering for loading images actually didn't
work, because then it was still possible both threads were accessing the
MEM_malloc function at same time.

This commit nearly fully replaces ImBuf calls in compositor (giving another
nice speedup btw, the way preview images in Nodes were calculated used
clumsy imbuf scaling code).

I've also centralized the 'mutex' locking for threading, which now only
resides in BLI_threads.h. This is used to secure the last ImBuf calls
I cannot replace, which is loading images and creating mipmaps.

Really hope we get something more stable now!
2006-02-11 15:55:00 +00:00
1ce9e196f7 Adds support for frameserver rendering to blender. This is done by
integrating a mini-webserver (around 300 lines of code) into blender.
Using the VFAPI-plugin in contrib/windows it enables blender to
directly feed its output into TMPGEnc, a commercial high quality MPEG-Encoder.
Since it is a mini-webserver, you can probably easily use it for other
interfacing purposes.
2006-02-05 19:12:25 +00:00
2a528b285e If Images have relative path, and come from a library, it uses the library
path as reference for loading the image.
2006-02-02 18:28:01 +00:00
042d612df2 Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:

Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.

Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender

PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)

3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!

Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)

The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again

OK... thats what I can quickly recall. Now go compiling!
2006-01-23 22:05:47 +00:00
014aa7261e Orange branch: OpenEXR finally in Blender!
Credits go to Gernot Ziegler, who originally coded EXR support, and to
Austin  Benesh for bringing it further. Kent Mein provided a lot of code
for integrating float buffers in Blender imbuf and ImBuf API cleanup,
and provided Make and Scons and static linking.

At this moment; the EXR libraries are a *dependency*, so you cannot get
the Orange branch compiled without having OpenEXR installed. Get the
(precompiled or sources) stuff from www.openexr.com. Current default is
that the headers and lib resides in /user/local/

Several changes/additions/fixes were added:

- EXR code only supported 'half' format (16 bits per channel). I've added
  float writing, but for reading it I need tomorrow. :)
- Quite some clumsy copying of data happened in EXR code.
- cleaned up the api calls already a bit, preparing for more advanced
  support
- Zbuffers were saved 16 bits, now 32 bits
- automatic adding of .exr extensions went wrong

Imbuf:

- added proper imbuf->flags and imbuf->mall support for float buffers, it
  was created for *each* imbuf. :)
- found bugs for float buffers in scaling and flipping. Code there will
  need more checks still
- imbuf also needs to be verified to behave properly when no 32 bits
  rect exists (for saving for example)

TODO:

- support internal float images for textures, backbuf, AO probes, and
  display in Image window

Hope this commit won't screwup syncing with bf-blender... :/
2006-01-09 00:40:35 +00:00
17210112a1 Orange: Warning cleanup for Icons commit, missing declarations of some
calls caused icon hashing not to work too. Runs smooth here :)
2005-12-21 23:39:20 +00:00
80eb4d3b9e Big commit in orange: Interface icons for materials, textures
world and lamp. Also for images in pupmenus.
Also preparation for work on using preview images in imagebrowser.

-- Andrea
2005-12-21 22:21:43 +00:00
0e0cafcada "UV Test Grid" option in Image Window > Image menu > New, to generate
a colored grid instead of a blank image, for quickly spotting distortion
in UV maps.
2005-11-27 16:21:25 +00:00
00f266c651 This is a modified version of patch #2995
To enable dynamic tiff support.
I had to fix some of the logic in the fileselect box for icons,
I also expanded the patch to look in various default locations for
a dynamic libtiff.so/libtiff.dll
and look at the env variable BF_TIFF_LIB if it can't find it automatically.
If unable to load the library it prints a message about setting BF_TIFF_LIB
to the console.

I haven't been able to test it on a lot of platforms but hopefully it
will just work ;)  I added the files to scons but have not had a chance to
test that as well.

Kent
2005-11-22 18:50:03 +00:00
c52170b4ed Patch provided by Alfredo de Greef
This adds Radiance HDR image file support. So now at least we can save
the 'fbuf' (4x32 bits float colors) in Blender.
It doesn't change anything for internal support in imbuf for floa colors,
so when reading .hdr files it still converts it to 32 bits RGBA.

As an extra I've added that saving images with F3 now also adds the
optional extension, when the F10 "Extensions" option is set.

One important note; I don't know the proper license for the code, it was
provided without... will await feedback from Alfredo about it. For now
I've added the standard Blender GPL header.
2005-11-20 14:32:07 +00:00
0804d66f79 - Imagepaint code cleanup:
- Move UVTEXTTOOL variables into global Gip struct (like Gvp for
    vertex paint). This will probably be moved into SpaceImage later,
    so it is saved with the .blend file.
  - Disable tool drawing. a better solution needs to be found.
  - Panel button layout is still the same, this will change.

- Removed the NAN_TPT define, it has no use anymore.
2005-09-16 20:17:09 +00:00
2e73199ea7 Image memory garbage collection:
clock seemed to work weird on some machine, switching to PIL_check_seconds_timer.
It's more in line with the rest of Blender anyway.
2005-07-27 07:43:48 +00:00
fe30da1775 Image memory garbage collection wasn't working correctly due to a poorly constructed if clause (it was collecting only images marked as NO_COLLECT, which only happens with Python loaded images).
Another problem now is that the userpref values aren't correctly saved in .b.blend, they always reset to the default. Will look into that.
2005-07-27 06:21:50 +00:00
ef73b6f140 New: B-Bones now support adjusting the 'handle length', with the values
"In" and "Out" in the new posemode Panel, editing buttons.

http://www.blender.org/cms/Armature_draw_modes.629.0.html

Fix in image.c: just an unitialized variable.
2005-07-17 08:58:42 +00:00
22a18ecdb8 3D view orbit option: Around Active
This fixes the active object in place when orbiting the view.
	Choppy 15fps demo can be seen there: http://www.elysiun.com/~theeth/bf/around_active.html


Image Memory Grabage Collection
	This adds memory handling to the image code. An image is tagged each time it is used.
	During a collection cycle (frequency of cycles is user defined), if an image is older
	than a user defined limit, its buffer gets deallocated. This also applies to gl memory buffers.
	Images that are loading in GL memory needs to go through two time outs before being fully deallocated: the first time out deallocated the gl memorry, the second the buffer in ram.

	Notes:
		Image buffer loaded from python gets tagged as permanent upon load. That tag is removed when python stops using the image.
		I might have missed some tagging spots, especially in the rendering pipeline. Someone with more knowledge about this code should check to be careful.
		Tagging is done on every access, for rendering, this will probably be a performance hit. A scheme should be developped to only tag when the rendering is completed.
		Collecting is called in draw_object, most likely not the best place to do it.
		Safe from undo, since using undo deallocates memory anyway (like when loading a blend file with one currently opened)


Userpref DNA changes:
	I've changed a couple of flagging variables from short to int. Some because they needed more space, others to keep SDNA happy.


Info window changes:
	I've grouped a couple of buttons in aligned blocks and changed the color of mutually exclusive options to make them clearer.
	Matt didn't do any changes on that in tuhopuu, so hopefully I'm not stepping on anyone's feet with this.


Also changed double constants into floats with f in a couple of places (mostly space.c) to make compiler happier.
2005-07-06 00:33:41 +00:00
Nathan Letwory
1071d4a16e This commit fixes two related issues:
1:
* when a blendfile gets loaded, paths are corrected with OS specific slashes (see blender.c)
* made available BLI_char_switch(char *string, char from, char to)
* made available BLI_clean(char *string);. This function should be called whenever you're doing path stuff, so paths are correctly saved, and thus avoiding other path functions stopping to work

2:
* relative paths work now in sequencer too (due to slash mess that didn't work all too well).
2005-05-20 12:18:11 +00:00
d7d58accda Fix for reported (thanks Jens Ole!) error in rendering UV map textures.
Caused by making threadsafe envmap render...

Commit in convertblenderscene.c is just replacing constant with define.
2005-04-28 09:57:21 +00:00
ecf6de151c This commit reverses the OpenEXR specific stuff in the OpenEXR commit I
did last friday.  A patch will be available in the patches tracker
that will have the current stuff there until everything is working.

Kent
2005-03-14 14:56:40 +00:00
a1919e6db4 Gernot Ziegler's patch to add OpenEXR support to blender.
To enable it you will need to download OpenEXR and install it.
For the Makefiles you will need to set WITH_OPENEXR=true
and set NAN_OPENEXR to point to where OpenEXR is installed.

For scons you'll need to remove config.opts to get the new options
so you can enable OpenEXR, I was not able to get blender to link
with scons so the scons stuff may need to be tweaked a little but
I think it should work.

For other platform managers  The OpenEXR stuff is similar to QUICKTIME
you need to define WITH_OPENEXR and setup the library stuff and
as you'll notice in this commit there are two extra files.

Kent
2005-03-11 20:16:14 +00:00
c78e44cdc5 big warning hunt commit
lot of casts, added prototypes, missing includes and some true errors
2005-03-09 19:45:59 +00:00
610cec55c7 Biiig commit! Thanks to 2-3 weeks of cvs freeze...
Render:
- New; support for dual CPU render (SDL thread)
  Currently only works with alternating scanlines, but gives excellent
  performance. For both normal render as unified implemented.
  Note the "mutex" locks on z-transp buffer render and imbuf loads.
- This has been made possible by major cleanups in render code, especially
  getting rid of globals (example Tin Tr Tg Tb Ta for textures) or struct
  OSA or using Materials or Texture data to write to.
- Made normal render fully 4x32 floats too, and removed all old optimizes
  with chars or shorts.
- Made normal render and unified render use same code for sky and halo
  render, giving equal (and better) results for halo render. Old render
  now also uses PostProcess options (brightness, mul, gamma)
- Added option ("FBuf") in F10 Output Panel, this keeps a 4x32 bits buffer
  after render. Using PostProcess menu you will note an immediate re-
  display of image too (32 bits RGBA)
- Added "Hue" and "Saturation" sliders to PostProcess options

- Render module is still not having a "nice" API, but amount of dependencies
  went down a lot. Next todo: remove abusive "previewrender" code.
  The last main global in Render (struct Render) now can be re-used for fully
  controlling a render, to allow multiple "instances" of render to open.

- Renderwindow now displays a smal bar on top with the stats, and keeps the
  stats after render too. Including "spare" page support.
  Not only easier visible that way, but also to remove the awkward code that
  was drawing stats in the Info header (extreme slow on some ATIs too)

- Cleaned up blendef.h and BKE_utildefines.h, these two had overlapping
  defines.

- I might have forgotten stuff... and will write a nice doc on the architecture!
2004-12-27 19:28:52 +00:00
add84ea301 Fixed adding a filename extension for bmp images. 2004-12-19 18:06:28 +00:00
e4d428b539 Tweaked support for normalmaps to be OK.
http://www.blender3d.org/cms/Normal_Mapping.491.0.html

main changes:
- The "Map Input" in Blender for normals was negated
- Range for Z in normal map is Z (0-1) to Blue (0-255)
2004-12-06 18:05:42 +00:00
1e811c7886 Bugfix: normal mapping for textures wasn't rotated back to view space,
causing weird results on camera moves or object rotations.

Added: support for "normal maps". See for example:
http://members.shaw.ca/jimht03/normal.html

The Image panel in Texture buttons has new option "Normal Map" for it.
When this is used, normals are read straight from RGB values, and blended
with the current normal.
2004-12-05 21:49:13 +00:00
6346486995 fix for #1635
Field render, and field option for image texture, had error due to
returns in middle of calls... this bug was there already for long
while, not much used eh ;)
2004-10-14 23:03:12 +00:00
5c543698c9 Three in one:
- textures: added support for new mixers (div, diff etc) to work on the
  other map-to channels too, like ref or spec
  Also it works on lamp and world textures
- brought back uncommented line of code that was removed by leon, to have
  particle motion based on textures
- recoded the glPylonOffset hack to be nice function, this for future
  testing.
2004-07-03 14:18:21 +00:00
a8ef804146 NEW: Ramp shades for diffuse and specular
http://www.blender3d.org/cms/Ramp_Shaders.348.0.html

Material color and specular now can be defined by a Colorband. The actual
color then is defined during shading based on:
- shade value (like dotproduct)
- energy value (dot product plus light)
- normal
- result of all shading (useful for adding stuff in the end)

Special request from [A]ndy! :)
2004-06-30 18:54:09 +00:00
02ba73aaad Sneaked in new feature (request samo):
The Image texture repeat options, now allow a "Checker" repeat. With
odd and even tiles set separately, and a size button to set a
'Mortar' inbetween tiles.

http://www.blender3d.org/cms/Render_engine_features.215.0.html

Also fixed bug: using 'CalcAlpha' option for image textures didn't give
antialised edges for image.
2004-04-28 18:08:34 +00:00
d9ab27eda2 Fixed nasty #include. 2004-01-26 12:53:40 +00:00
a3283280bf Fixed behaviour of cyclic anim textures.
Note: the Fie/Ima (fields per rendered image) functionality is still broken.
2004-01-26 12:37:34 +00:00
76fe6daa15 - another series of translated c files.
-Ton-
2003-04-26 11:56:44 +00:00
3f2f1571e5 added the following to configure.ac
+case "$target" in
+  *sparc* )
+        AC_DEFINE(SUN_OGL_NO_VERTEX_MACROS,1,[Fix for Sun's GL])
+  ;;
+esac
+

Also added the include to the above .c files.
I'm going to add it to everything in source just haven't gotten that far yet.

Kent
2002-11-25 10:13:52 +00:00
Hans Lambermont
12315f4d0e Initial revision 2002-10-12 11:37:38 +00:00