Commit Graph

425 Commits

Author SHA1 Message Date
a73dd3476e Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.

This introduces two configurable color spaces:

- Input color space for images and movie clips. This space is used to convert
  images/movies from color space in which file is saved to Blender's linear
  space (for float images, byte images are not internally converted, only input
  space is stored for such images and used later).

  This setting could be found in image/clip data block settings.

- Display color space which defines space in which particular display is working.

  This settings could be found in scene's Color Management panel.

When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.

This conversions are:

- View, which defines tone curve applying before display transformation.
  These are different ways to view the image on the same display device.
  For example it could be used to emulate film view on sRGB display.

- Exposure affects on image exposure before tone map is applied.

- Gamma is post-display gamma correction, could be used to match particular
  display gamma.

- RGB curves are user-defined curves which are applying before display
  transformation, could be used for different purposes.

All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.

This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).

Some technical notes:

- Image buffer's float buffer is now always in linear space, even if it was
  created from 16bit byte images.

- Space of byte buffer is stored in image buffer's rect_colorspace property.

- Profile of image buffer was removed since it's not longer meaningful.

- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
  to support other spaces, but it's quite large project which isn't so
  much important.

- Legacy Color Management option disabled is emulated by using None display.
  It could have some regressions, but there's no clear way to avoid them.

- If OpenColorIO is disabled on build time, it should make blender behaving
  in the same way as previous release with color management enabled.

More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management

--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
fed6b2bcb7 code cleanup: remove paranoid/invalid NULL checks and also reduce some unneeded size_t -> int conversions. 2012-09-15 07:31:17 +00:00
b25ca62f20 Fix #32404: GLSL normal maps using float images were incorrectly getting
color managed.
2012-08-30 17:42:04 +00:00
a6d1b955ab Moving more duplicate code from GPU_create_gl_tex_compressed() and BL_Texture::InitGLCompressedTex() into GPU_Upload_dxt_texture(). This reduces code duplication and ensures that both paths are using the same settings. 2012-08-18 03:32:28 +00:00
9ff4fa6671 style cleanup 2012-08-04 12:30:16 +00:00
6d8fb7c0e7 Tweak to commit related to non-power-of-two textures, some cards claim to
support this but actually don't, so use the function that checks for that.
2012-07-31 15:05:14 +00:00
7755873771 Fix for [#27484] "Run-time command line options don't work in Multi-texture mode." reported by Josiah Lane (solarlune). The -g nomipmap = 1 option only changed the mipmapping option for bf_gpu, which BL_Texture wasn't checking. 2012-07-29 05:59:03 +00:00
831ae18622 Scaling non-power-of-two (NPOT) textures to powers of two is really time consuming and not necessary on graphics cards that can support NPOT textures. So, if the graphics card has NPOT texture support, don't bother scaling. If this patch causes issues, it can always be reverted and applied to Swiss instead. 2012-07-10 19:23:57 +00:00
4d2a6a8e21 Spellfixes: colour -> color 2012-07-04 12:19:50 +00:00
7ef55c62f3 A little bit of cleanup for the new DXT code:
* Using TRUE/FALSE instead of 1/0
  * Checking to make sure GL_EXT_texture_compression_s3tc is supported
  * Removing some debug error checking
2012-07-01 02:47:34 +00:00
39ca3146ff fix for some build warnings. 2012-06-30 16:56:23 +00:00
5a859c6ba3 GPU_upload_dxt_texture failed to compile if WITH_DDS was not defined 2012-06-30 10:31:25 +00:00
436f02ab9c Finally committing support for compressed textures on the GPU (DDS+DXT). This patch started out as a patch by me, then cleaned up by Kupoman during his work on Cucumber.
One important thing to keep in mind when using this feature is that you'll need to flip your textures vertically (both the GIMP and Photoshop DDS tools I've seen have support for this on export). This is a quirk in using a texture format originally made for DirectX/DirectDraw, and flipping the compressed data is a real headache. Another quick fix for this issue is to change the Y value for the Size in the Mapping panel in the Texture properties to -1 (default is 1).
2012-06-30 04:34:34 +00:00
a744fed46c style cleanup 2012-06-20 16:43:48 +00:00
f5f25b81e8 style cleanup:
also fix for building ghost test and fix double free in one of the tests
2012-06-17 09:58:26 +00:00
854502d2e3 Add user preference "GPU Mipmap Generation" under the System/OpenGL
subpanel to calculate image mipmapping on the GPU, saving upload and
calculation time. Default is off just in case.
2012-06-11 16:23:10 +00:00
68c365e2f0 Index: source/blender/gpu/intern/gpu_draw.c
===================================================================
--- source/blender/gpu/intern/gpu_draw.c	(revision 47568)
+++ source/blender/gpu/intern/gpu_draw.c	(working copy)
@@ -230,11 +230,12 @@
 	Image *ima, *curima;
 
 	int domipmap, linearmipmap;
+	int texpaint; /* store this so that new images created while texture painting won't be set to mipmapped */
 
 	int alphablend;
 	float anisotropic;
 	MTFace *lasttface;
-} GTS = {0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 1, 0, -1, 1.f, NULL};
+} GTS = {0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 1, 0, 0, -1, 1.f, NULL};
 
 /* Mipmap settings */
 
@@ -256,7 +257,7 @@
 
 static int gpu_get_mipmap(void)
 {
-	return GTS.domipmap;
+	return GTS.domipmap && !GTS.texpaint;
 }
 
 static GLenum gpu_get_mipmap_filter(int mag)
@@ -730,6 +731,8 @@
 	if (!GTS.domipmap)
 		return;
 
+	GTS.texpaint = !mipmap;
+
 	if (mipmap) {
 		for (ima=G.main->image.first; ima; ima=ima->id.next) {
 			if (ima->bindcode) {
2012-06-08 13:06:06 +00:00
57c292daf0 style cleanup 2012-05-25 09:51:53 +00:00
19dd66cf3b 3D View: add Backface Culling option, to hide faces when seen from the back side,
found in the Display panel.

Patch by Simon Kirk and Irie Shinsuke, refactored to also work for non-mesh objects
and avoid globals.
2012-05-25 09:26:47 +00:00
da710b3e14 style cleanup: brace placement/newlines 2012-05-24 16:35:45 +00:00
2d2d36fe3b code cleanup:
- style - multi-line ifs move braces onto new lines.
- iterators - convert some to macros, other split up and move brace.
2012-05-20 19:49:27 +00:00
af3e348430 code cleanup: use TRUE/FALSE rather then 1/0 for better readability, also replace do prefix with do_ for bool vars. 2012-05-19 13:28:19 +00:00
1dccd4c98a code cleanup: naming - pose/armature/image
also use ..._find_name(..., name) rather then ..._find_named(..., name) --- both were used.
2012-05-05 16:03:57 +00:00
299ff91ea1 code cleanup: BKE_scene api naming.
also stop numpy from being found in /usr/include with cmake.
2012-05-05 14:33:36 +00:00
a731e13043 code cleanup: function naming, use BKE_*type* prefix. 2012-05-05 14:03:12 +00:00
a0ce240de9 Renamed "fake" OpenGL identifiers.
Any identifier that looks like an OpenGL identifier, but isn't, causes a false alarm by the glreport.py tool.  Most of these were in comments so I just rephrased the comments.  There were a couple of static functions/macros that were easy enough to rename.  Only the glTexco and glIndex fields of the DMVertexAttribs struct was public and had non-local uses.
2012-05-04 11:50:11 +00:00
dcdf768147 Fix #31108: entering local view with glsl shows objects black. Now keeps lamps
affecting the material even if they are not part of the local view.
2012-05-03 09:31:59 +00:00
343edf2722 style cleanup: function calls & whitespace. 2012-04-29 17:11:40 +00:00
b340f930ec style cleanup: changes to brace placement / newlines - for/while/if/switch 2012-04-28 06:31:57 +00:00
ab4a2aaf4a style cleanup: follow style guide for formatting of if/for/while loops, and else if's 2012-03-24 06:38:07 +00:00
89a963fb7f style cleanup: comment blocks 2012-03-09 18:28:30 +00:00
31d2ee9bf7 style cleanup, brackets in else/if, some indentation. 2012-03-06 18:40:15 +00:00
40e2942f25 Fix related to #30152, rainbow colours produced when loading hdr image to 3D viewport/ the Nyan cat bug.
Issue is caused by scaling for power of 2 dimensions and mipmapping that happens through GLU. It looks like the library cannot handle float colour values above 1.0 correctly. Since we are close to release I will just clamp the srgb result for now even though it will result in a small performance loss for 16 bit textures only. 

I tried a few things before that, glGenerateMipmaps + no scaling (supported for 2.0 GL hardware and up), or using our own scaling instead of glu among them which worked very nicely and gave a speedup too. However, since we are close to release and there may be issues with GPU mipmap generation, see:

http://www.gamedev.net/topic/495747-another-glgeneratemipmap-question/
(old discussion but better be sure than sorry)

I went for the most compatible solution. Maybe after release this can be tested if other devs agree.
2012-02-14 13:25:23 +00:00
873386b22d Fix #30170: with file saved in texture painting mode, when going to object mode
the image texture is missing. The flag to indicate that the mipmap levels were
already loaded into GPU memory was incorrectly set then.
2012-02-13 21:12:14 +00:00
6e38297b82 Fix: Avoid freeing frect, it always points to a buffer that will be freed later, like srgb_frect or ftilerect on or must not be freed, like Imbuf array itself. 2012-02-12 11:27:51 +00:00
a8081c1d2b Uv Tools branch GSOC 2011
=========================
Documentation: http://wiki.blender.org/index.php/User:Psy-Fi/UV_Tools

Major features include:

*16 bit image support in viewport
*Subsurf aware unwrapping
*Smart Stitch(snap/rotate islands, preview, middlepoint/endpoint stitching)
*Seams from islands tool (marks seams and sharp, depending on settings)
*Uv Sculpting(Grab/Pinch/Rotate)

All tools are complete apart from stitching that is considered stable but with an extra edge mode under development(will be in soc-2011-onion-uv-tools).
2012-01-17 16:31:13 +00:00
4d7c44717a Code cleanup: fix some clang static checker warnings. 2011-12-22 20:29:44 +00:00
2253b63c97 static functions for getting power of 2 values were being copied about too much, add to the BLI_math api.
- is_power_of_2_i
- power_of_2_min_i
- power_of_2_max_i
2011-12-16 09:25:07 +00:00
3f39fde373 Compile fix for r.42546 typo 2011-12-10 03:24:19 +00:00
ae17390b77 picky edits & regen man page 2011-12-10 01:07:22 +00:00
82b9e4d16f verify existence of dm 2011-12-10 01:00:12 +00:00
965c287630 fixes scale on derivative maps 2011-12-09 23:26:06 +00:00
a5fb261016 Fix #29520: issue drawing with VBO + GLSL + alpha pass. Includes some refactoring
to hopefully make alpha material drawing code more clear.
2011-12-07 22:03:49 +00:00
f62ad8f69b remove header text:
"The Blender Foundation also sells licenses for use in proprietary software under the Blender Licens"

also remove NaN references from files that have been added since blender went opensource.
2011-11-29 10:54:47 +00:00
e84c0980a3 correct indentation and some whitespace edits (no functional changes) 2011-11-11 13:09:14 +00:00
094c9799f9 quiet -Wdouble-promotion warnings 2011-11-11 12:00:08 +00:00
28ee0f9218 Texturing: texture and 3d view draw type changes, these should only have any
effect for a render engine using new shading nodes. In short:

* No longer uses images assigned to faces in the uv layer, rather the active
  image texture node is what is edited/painted/drawn.
* Textured draw type now shows the active image texture node, with solid
  lighting.
* Material draw mode shows GLSL shader of a simplified material node tree,
  using solid lighting.
* Textures for modifiers, brushes, etc, are now available from a dropdown in
  the texture tab in the properties editor. These do not use new shading nodes
  yet.

http://wiki.blender.org/index.php/Dev:2.6/Source/Render/TextureWorkflow
2011-11-08 13:07:16 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
0a4814a6d0 Fix #28766: object properties > display > transparency no longer worked in solid
draw mode, after texface changes.
2011-10-05 15:28:02 +00:00
274b9c8fb8 whitespace cleanup 2011-09-25 12:31:21 +00:00