Cycles: svn merge -r41613:41627 ^/trunk/blender
This commit is contained in:
commit
dca15b215d
@ -105,7 +105,6 @@ enable_testing()
|
||||
|
||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
|
||||
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
|
||||
set(INCLUDE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/include CACHE INTERNAL "" FORCE )
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Set default config options
|
||||
@ -300,10 +299,6 @@ if(WITH_CYCLES)
|
||||
set(WITH_BOOST ON)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEIO)
|
||||
set(WITH_BOOST ON)
|
||||
endif()
|
||||
|
||||
TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
|
||||
|
||||
# don't store paths to libs for portable distrobution
|
||||
@ -512,12 +507,7 @@ if(UNIX AND NOT APPLE)
|
||||
endif()
|
||||
|
||||
if(WITH_BOOST)
|
||||
if(CYCLES_BOOST)
|
||||
set(BOOST ${CYCLES_BOOST} CACHE PATH "Boost Directory")
|
||||
unset(CYCLES_BOOST CACHE)
|
||||
else()
|
||||
set(BOOST "/usr" CACHE PATH "Boost Directory")
|
||||
endif()
|
||||
set(BOOST "/usr" CACHE PATH "Boost Directory")
|
||||
|
||||
if(NOT BOOST_CUSTOM)
|
||||
set(BOOST_ROOT ${BOOST})
|
||||
@ -532,12 +522,7 @@ if(UNIX AND NOT APPLE)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEIO)
|
||||
|
||||
# temp, update
|
||||
if(CYCLES_OIIO)
|
||||
set(OPENIMAGEIO ${CYCLES_OIIO})
|
||||
unset(CYCLES_OIIO CACHE)
|
||||
endif()
|
||||
set(OPENIMAGEIO "/usr" CACHE PATH "OpenImageIO Directory")
|
||||
|
||||
set(OPENIMAGEIO_ROOT_DIR ${OPENIMAGEIO})
|
||||
find_package(OpenImageIO REQUIRED)
|
||||
@ -549,7 +534,6 @@ if(UNIX AND NOT APPLE)
|
||||
if(NOT OPENIMAGEIO_FOUND)
|
||||
set(WITH_OPENIMAGEIO OFF)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
|
||||
@ -1511,6 +1495,7 @@ if(FIRST_RUN)
|
||||
info_cfg_option(WITH_FFTW3)
|
||||
info_cfg_option(WITH_INTERNATIONAL)
|
||||
info_cfg_option(WITH_INPUT_NDOF)
|
||||
info_cfg_option(WITH_CYCLES)
|
||||
|
||||
info_cfg_text("Compiler Options:")
|
||||
info_cfg_option(WITH_BUILDINFO)
|
||||
@ -1530,7 +1515,6 @@ if(FIRST_RUN)
|
||||
info_cfg_option(WITH_IMAGE_OPENJPEG)
|
||||
info_cfg_option(WITH_IMAGE_REDCODE)
|
||||
info_cfg_option(WITH_IMAGE_TIFF)
|
||||
info_cfg_option(WITH_OPENIMAGEIO)
|
||||
|
||||
info_cfg_text("Audio:")
|
||||
info_cfg_option(WITH_OPENAL)
|
||||
|
@ -12,7 +12,9 @@ set(WITH_BUILTIN_GLEW OFF CACHE FORCE BOOL)
|
||||
set(WITH_BULLET OFF CACHE FORCE BOOL)
|
||||
set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL)
|
||||
set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL)
|
||||
set(WITH_CYCLES OFF CACHE FORCE BOOL)
|
||||
set(WITH_FFTW3 OFF CACHE FORCE BOOL)
|
||||
set(WITH_LIBMV OFF CACHE FORCE BOOL)
|
||||
set(WITH_GAMEENGINE OFF CACHE FORCE BOOL)
|
||||
set(WITH_IK_ITASC OFF CACHE FORCE BOOL)
|
||||
set(WITH_IMAGE_CINEON OFF CACHE FORCE BOOL)
|
||||
|
@ -19,16 +19,16 @@
|
||||
import bpy
|
||||
|
||||
def init():
|
||||
import libcycles_blender as lib
|
||||
import bcycles
|
||||
import os.path
|
||||
|
||||
path = os.path.dirname(__file__)
|
||||
user_path = os.path.dirname(os.path.abspath(bpy.utils.user_resource('CONFIG', '')))
|
||||
|
||||
lib.init(path, user_path)
|
||||
bcycles.init(path, user_path)
|
||||
|
||||
def create(engine, data, scene, region = 0, v3d = 0, rv3d = 0):
|
||||
import libcycles_blender as lib
|
||||
import bcycles
|
||||
|
||||
data = data.as_pointer()
|
||||
scene = scene.as_pointer()
|
||||
@ -39,36 +39,36 @@ def create(engine, data, scene, region = 0, v3d = 0, rv3d = 0):
|
||||
if rv3d:
|
||||
rv3d = rv3d.as_pointer()
|
||||
|
||||
engine.session = lib.create(engine.as_pointer(), data, scene, region, v3d, rv3d)
|
||||
engine.session = bcycles.create(engine.as_pointer(), data, scene, region, v3d, rv3d)
|
||||
|
||||
def free(engine):
|
||||
if "session" in dir(engine):
|
||||
if engine.session:
|
||||
import libcycles_blender as lib
|
||||
lib.free(engine.session)
|
||||
import bcycles
|
||||
bcycles.free(engine.session)
|
||||
del engine.session
|
||||
|
||||
def render(engine):
|
||||
import libcycles_blender as lib
|
||||
lib.render(engine.session)
|
||||
import bcycles
|
||||
bcycles.render(engine.session)
|
||||
|
||||
def update(engine, data, scene):
|
||||
import libcycles_blender as lib
|
||||
lib.sync(engine.session)
|
||||
import bcycles
|
||||
bcycles.sync(engine.session)
|
||||
|
||||
def draw(engine, region, v3d, rv3d):
|
||||
import libcycles_blender as lib
|
||||
import bcycles
|
||||
v3d = v3d.as_pointer()
|
||||
rv3d = rv3d.as_pointer()
|
||||
|
||||
# draw render image
|
||||
lib.draw(engine.session, v3d, rv3d)
|
||||
bcycles.draw(engine.session, v3d, rv3d)
|
||||
|
||||
def available_devices():
|
||||
import libcycles_blender as lib
|
||||
return lib.available_devices()
|
||||
import bcycles
|
||||
return bcycles.available_devices()
|
||||
|
||||
def with_osl():
|
||||
import libcycles_blender as lib
|
||||
return lib.with_osl()
|
||||
import bcycles
|
||||
return bcycles.with_osl()
|
||||
|
||||
|
@ -194,8 +194,8 @@ static PyMethodDef methods[] = {
|
||||
|
||||
static struct PyModuleDef module = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"libcycles_blender",
|
||||
"Blender RNA to render exporter",
|
||||
"bcycles",
|
||||
"Blender cycles render integration",
|
||||
-1,
|
||||
methods,
|
||||
NULL, NULL, NULL, NULL
|
||||
|
@ -62,7 +62,7 @@ class FILEBROWSER_HT_header(Header):
|
||||
row.prop(params, "use_filter_folder", text="")
|
||||
|
||||
if params.filter_glob:
|
||||
#if st.operator and hasattr(st.operator, "filter_glob"):
|
||||
#if st.active_operator and hasattr(st.active_operator, "filter_glob"):
|
||||
# row.prop(params, "filter_glob", text="")
|
||||
row.label(params.filter_glob)
|
||||
else:
|
||||
|
@ -592,7 +592,10 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
|
||||
|
||||
if(part->ren_as == PART_DRAW_OB && part->dup_ob) {
|
||||
node2 = dag_get_node(dag, part->dup_ob);
|
||||
dag_add_relation(dag, node2, node, DAG_RL_OB_OB, "Particle Object Visualisation");
|
||||
/* note that this relation actually runs in the wrong direction, the problem
|
||||
is that dupli system all have this (due to parenting), and the render
|
||||
engine instancing assumes particular ordering of objects in list */
|
||||
dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Object Visualisation");
|
||||
if(part->dup_ob->type == OB_MBALL)
|
||||
dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA, "Particle Object Visualisation");
|
||||
}
|
||||
|
@ -156,13 +156,10 @@ static void get_sequence_fname(MovieClip *clip, int framenr, char *name)
|
||||
autoguess offset for now. could be something smarter in the future */
|
||||
offset= sequence_guess_offset(clip->name, strlen(head), numlen);
|
||||
|
||||
if(numlen) BLI_stringenc(name, head, tail, numlen, offset+framenr-1);
|
||||
else strncpy(name, clip->name, sizeof(name));
|
||||
if (numlen) BLI_stringenc(name, head, tail, numlen, offset+framenr-1);
|
||||
else BLI_strncpy(name, clip->name, sizeof(clip->name));
|
||||
|
||||
if(clip->id.lib)
|
||||
BLI_path_abs(name, clip->id.lib->filepath);
|
||||
else
|
||||
BLI_path_abs(name, G.main->name);
|
||||
BLI_path_abs(name, ID_BLEND_PATH(G.main, &clip->id));
|
||||
}
|
||||
|
||||
/* supposed to work with sequences only */
|
||||
@ -174,7 +171,7 @@ static void get_proxy_fname(MovieClip *clip, int proxy_render_size, int undistor
|
||||
BLI_split_dirfile(clip->name, clipdir, clipfile, FILE_MAX, FILE_MAX);
|
||||
|
||||
if(clip->flag&MCLIP_USE_PROXY_CUSTOM_DIR) {
|
||||
strcpy(dir, clip->proxy.dir);
|
||||
BLI_strncpy(dir, clip->proxy.dir, sizeof(dir));
|
||||
} else {
|
||||
BLI_snprintf(dir, FILE_MAX, "%s/BL_proxy", clipdir);
|
||||
}
|
||||
@ -194,9 +191,9 @@ static ImBuf *movieclip_load_sequence_file(MovieClip *clip, MovieClipUser *user,
|
||||
{
|
||||
struct ImBuf *ibuf;
|
||||
char name[FILE_MAX];
|
||||
int loadflag, size, undistort;
|
||||
int loadflag /*, size */ /* UNUSED */, undistort;
|
||||
|
||||
size= rendersize_to_number(user->render_size);
|
||||
/* size= rendersize_to_number(user->render_size); */
|
||||
|
||||
undistort= user->render_flag&MCLIP_PROXY_RENDER_UNDISTORT;
|
||||
|
||||
@ -222,11 +219,7 @@ static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, in
|
||||
|
||||
if(!clip->anim) {
|
||||
BLI_strncpy(str, clip->name, FILE_MAX);
|
||||
|
||||
if(clip->id.lib)
|
||||
BLI_path_abs(str, clip->id.lib->filepath);
|
||||
else
|
||||
BLI_path_abs(str, G.main->name);
|
||||
BLI_path_abs(str, ID_BLEND_PATH(G.main, &clip->id));
|
||||
|
||||
/* FIXME: make several stream accessible in image editor, too */
|
||||
clip->anim= openanim(str, IB_rect, 0);
|
||||
@ -234,7 +227,7 @@ static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, in
|
||||
if(clip->anim) {
|
||||
if(clip->flag&MCLIP_USE_PROXY_CUSTOM_DIR) {
|
||||
char dir[FILE_MAX];
|
||||
strcpy(dir, clip->proxy.dir);
|
||||
BLI_strncpy(dir, clip->proxy.dir, sizeof(dir));
|
||||
BLI_path_abs(dir, G.main->name);
|
||||
IMB_anim_set_index_dir(clip->anim, dir);
|
||||
}
|
||||
@ -243,7 +236,7 @@ static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, in
|
||||
|
||||
if(clip->anim) {
|
||||
int dur;
|
||||
int fra= framenr-1;
|
||||
int fra;
|
||||
|
||||
dur= IMB_anim_get_duration(clip->anim, tc);
|
||||
fra= framenr-1;
|
||||
|
@ -1003,8 +1003,6 @@ void scene_update_tagged(Main *bmain, Scene *scene)
|
||||
/* flush recalc flags to dependencies */
|
||||
DAG_ids_flush_tagged(bmain);
|
||||
|
||||
BLI_exec_cb(bmain, &scene->id, BLI_CB_EVT_SCENE_UPDATE_PRE);
|
||||
|
||||
scene->physics_settings.quick_cache_step= 0;
|
||||
|
||||
/* update all objects: drivers, matrices, displists, etc. flags set
|
||||
@ -1068,8 +1066,6 @@ void scene_update_for_newframe(Main *bmain, Scene *sce, unsigned int lay)
|
||||
* so dont call within 'scene_update_tagged_recursive' */
|
||||
DAG_scene_update_flags(bmain, sce, lay, TRUE); // only stuff that moves or needs display still
|
||||
|
||||
BLI_exec_cb(bmain, (ID *)sce, BLI_CB_EVT_SCENE_UPDATE_PRE);
|
||||
|
||||
/* All 'standard' (i.e. without any dependencies) animation is handled here,
|
||||
* with an 'local' to 'macro' order of evaluation. This should ensure that
|
||||
* settings stored nestled within a hierarchy (i.e. settings in a Texture block
|
||||
|
@ -58,7 +58,9 @@
|
||||
#include "IMB_imbuf.h"
|
||||
|
||||
#ifdef WITH_LIBMV
|
||||
#include "libmv-capi.h"
|
||||
# include "libmv-capi.h"
|
||||
#else
|
||||
struct libmv_Features;
|
||||
#endif
|
||||
|
||||
typedef struct MovieDistortion {
|
||||
@ -1379,6 +1381,12 @@ float BKE_tracking_solve_reconstruction(MovieTracking *tracking, int width, int
|
||||
|
||||
return error;
|
||||
}
|
||||
#else
|
||||
(void)tracking;
|
||||
(void)width;
|
||||
(void)height;
|
||||
|
||||
return -1.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1581,6 +1589,10 @@ void BKE_tracking_apply_intrinsics(MovieTracking *tracking, float co[2], float n
|
||||
/* result is in image coords already */
|
||||
nco[0]= x;
|
||||
nco[1]= y;
|
||||
#else
|
||||
(void)camera;
|
||||
(void)co;
|
||||
(void)nco;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1597,9 +1609,14 @@ void BKE_tracking_invert_intrinsics(MovieTracking *tracking, float co[2], float
|
||||
|
||||
nco[0]= x * camera->focal + camera->principal[0];
|
||||
nco[1]= y * camera->focal + camera->principal[1] * aspy;
|
||||
#else
|
||||
(void)camera;
|
||||
(void)co;
|
||||
(void)nco;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef WITH_LIBMV
|
||||
static int point_in_stroke(bGPDstroke *stroke, float x, float y)
|
||||
{
|
||||
int i, prev;
|
||||
@ -1643,7 +1660,6 @@ static int point_in_layer(bGPDlayer *layer, float x, float y)
|
||||
static void retrieve_libmv_features(MovieTracking *tracking, struct libmv_Features *features,
|
||||
int framenr, int width, int height, bGPDlayer *layer, int place_outside_layer)
|
||||
{
|
||||
#ifdef WITH_LIBMV
|
||||
int a;
|
||||
|
||||
a= libmv_countFeatures(features);
|
||||
@ -1668,8 +1684,8 @@ static void retrieve_libmv_features(MovieTracking *tracking, struct libmv_Featur
|
||||
track->search_flag|= SELECT;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
void BKE_tracking_detect_fast(MovieTracking *tracking, ImBuf *ibuf,
|
||||
int framenr, int margin, int min_trackness, int min_distance, bGPDlayer *layer,
|
||||
@ -1686,6 +1702,15 @@ void BKE_tracking_detect_fast(MovieTracking *tracking, ImBuf *ibuf,
|
||||
retrieve_libmv_features(tracking, features, framenr, ibuf->x, ibuf->y, layer, place_outside_layer);
|
||||
|
||||
libmv_destroyFeatures(features);
|
||||
#else
|
||||
(void)tracking;
|
||||
(void)ibuf;
|
||||
(void)framenr;
|
||||
(void)margin;
|
||||
(void)min_trackness;
|
||||
(void)min_distance;
|
||||
(void)layer;
|
||||
(void)place_outside_layer;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -2048,6 +2073,8 @@ MovieDistortion *BKE_tracking_distortion_copy(MovieDistortion *distortion)
|
||||
|
||||
#ifdef WITH_LIBMV
|
||||
new_distortion->intrinsics= libmv_CameraIntrinsicsCopy(distortion->intrinsics);
|
||||
#else
|
||||
(void)distortion;
|
||||
#endif
|
||||
|
||||
return new_distortion;
|
||||
@ -2068,6 +2095,12 @@ void BKE_tracking_distortion_update(MovieDistortion *distortion, MovieTracking *
|
||||
camera->principal[0], camera->principal[1] * aspy,
|
||||
camera->k1, camera->k2, camera->k3, width, height * aspy);
|
||||
}
|
||||
#else
|
||||
(void)distortion;
|
||||
(void)width;
|
||||
(void)height;
|
||||
(void)camera;
|
||||
(void)aspy;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -2108,6 +2141,11 @@ ImBuf *BKE_tracking_distortion_exec(MovieDistortion *distortion, MovieTracking *
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef WITH_LIBMV
|
||||
(void)overscan;
|
||||
(void)undistort;
|
||||
#endif
|
||||
|
||||
return resibuf;
|
||||
}
|
||||
|
||||
|
@ -362,7 +362,7 @@ static int rewrite_path_alloc(char **path, BPathVisitor visit_cb, const char *ab
|
||||
void bpath_traverse_id(Main *bmain, ID *id, BPathVisitor visit_cb, const int flag, void *bpath_user_data)
|
||||
{
|
||||
Image *ima;
|
||||
const char *absbase= (flag & BPATH_TRAVERSE_ABS) ? (id->lib ? id->lib->filepath : bmain->name) : NULL;
|
||||
const char *absbase= (flag & BPATH_TRAVERSE_ABS) ? ID_BLEND_PATH(bmain, id) : NULL;
|
||||
|
||||
if ((flag & BPATH_TRAVERSE_SKIP_LIBRARY) && id->lib) {
|
||||
return;
|
||||
|
@ -12516,13 +12516,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
cam->sensor_y = DEFAULT_SENSOR_HEIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
bNodeTreeType *ntreetype= ntreeGetType(NTREE_SHADER);
|
||||
if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 2)) {
|
||||
bNodeTreeType *ntreetype= ntreeGetType(NTREE_SHADER);
|
||||
|
||||
if(ntreetype && ntreetype->foreach_nodetree)
|
||||
ntreetype->foreach_nodetree(main, NULL, do_version_ntree_tex_mapping_260);
|
||||
}
|
||||
if(ntreetype && ntreetype->foreach_nodetree)
|
||||
ntreetype->foreach_nodetree(main, NULL, do_version_ntree_tex_mapping_260);
|
||||
}
|
||||
|
||||
/* put compatibility code here until next subversion bump */
|
||||
|
@ -1772,8 +1772,6 @@ static tGPsdata *gpencil_stroke_begin(bContext *C, wmOperator *op)
|
||||
if (gp_session_initdata(C, p))
|
||||
gp_paint_initstroke(p, p->paintmode);
|
||||
|
||||
p= op->customdata;
|
||||
|
||||
if(p->status != GP_STATUS_ERROR)
|
||||
p->status= GP_STATUS_PAINTING;
|
||||
|
||||
|
@ -132,15 +132,14 @@ void uiDrawBox(int mode, float minx, float miny, float maxx, float maxy, float r
|
||||
glEnd();
|
||||
}
|
||||
|
||||
static void round_box_shade_col(const float col1[4], float const col2[4], const float fac)
|
||||
static void round_box_shade_col(const float col1[3], float const col2[3], const float fac)
|
||||
{
|
||||
float col[4];
|
||||
float col[3];
|
||||
|
||||
col[0]= (fac*col1[0] + (1.0f-fac)*col2[0]);
|
||||
col[1]= (fac*col1[1] + (1.0f-fac)*col2[1]);
|
||||
col[2]= (fac*col1[2] + (1.0f-fac)*col2[2]);
|
||||
col[3]= (fac*col1[3] + (1.0f-fac)*col2[3]);
|
||||
glColor4fv(col);
|
||||
glColor3fv(col);
|
||||
}
|
||||
|
||||
/* linear horizontal shade within button or in outline */
|
||||
@ -151,7 +150,7 @@ void uiDrawBoxShade(int mode, float minx, float miny, float maxx, float maxy, fl
|
||||
{0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}};
|
||||
const float div= maxy - miny;
|
||||
const float idiv= 1.0f / div;
|
||||
float coltop[4], coldown[4], color[4];
|
||||
float coltop[3], coldown[3], color[4];
|
||||
int a;
|
||||
|
||||
/* mult */
|
||||
@ -165,11 +164,9 @@ void uiDrawBoxShade(int mode, float minx, float miny, float maxx, float maxy, fl
|
||||
coltop[0]= color[0]+shadetop; if(coltop[0]>1.0f) coltop[0]= 1.0f;
|
||||
coltop[1]= color[1]+shadetop; if(coltop[1]>1.0f) coltop[1]= 1.0f;
|
||||
coltop[2]= color[2]+shadetop; if(coltop[2]>1.0f) coltop[2]= 1.0f;
|
||||
coltop[3]= color[3];
|
||||
coldown[0]= color[0]+shadedown; if(coldown[0]<0.0f) coldown[0]= 0.0f;
|
||||
coldown[1]= color[1]+shadedown; if(coldown[1]<0.0f) coldown[1]= 0.0f;
|
||||
coldown[2]= color[2]+shadedown; if(coldown[2]<0.0f) coldown[2]= 0.0f;
|
||||
coldown[3]= color[3];
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glBegin(mode);
|
||||
@ -261,7 +258,7 @@ void uiDrawBoxVerticalShade(int mode, float minx, float miny, float maxx, float
|
||||
{0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}};
|
||||
const float div= maxx - minx;
|
||||
const float idiv= 1.0f / div;
|
||||
float colLeft[4], colRight[4], color[4];
|
||||
float colLeft[3], colRight[3], color[4];
|
||||
int a;
|
||||
|
||||
/* mult */
|
||||
@ -275,11 +272,9 @@ void uiDrawBoxVerticalShade(int mode, float minx, float miny, float maxx, float
|
||||
colLeft[0]= color[0]+shadeLeft; if(colLeft[0]>1.0f) colLeft[0]= 1.0f;
|
||||
colLeft[1]= color[1]+shadeLeft; if(colLeft[1]>1.0f) colLeft[1]= 1.0f;
|
||||
colLeft[2]= color[2]+shadeLeft; if(colLeft[2]>1.0f) colLeft[2]= 1.0f;
|
||||
colLeft[3]= color[3];
|
||||
colRight[0]= color[0]+shadeRight; if(colRight[0]<0.0f) colRight[0]= 0.0f;
|
||||
colRight[1]= color[1]+shadeRight; if(colRight[1]<0.0f) colRight[1]= 0.0f;
|
||||
colRight[2]= color[2]+shadeRight; if(colRight[2]<0.0f) colRight[2]= 0.0f;
|
||||
colRight[3]= color[3];
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
glBegin(mode);
|
||||
|
@ -497,9 +497,6 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
|
||||
|
||||
uiFreeInactiveBlocks(C, &ar->uiblocks);
|
||||
|
||||
/* XXX test: add convention to end regions always in pixel space, for drawing of borders/gestures etc */
|
||||
ED_region_pixelspace(ar);
|
||||
|
||||
if(sa)
|
||||
region_draw_emboss(ar, &winrct);
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ static int file_browse_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
FileBrowseOp *fbo= op->customdata;
|
||||
ID *id;
|
||||
char *base, *str, path[FILE_MAX];
|
||||
char *str, path[FILE_MAX];
|
||||
const char *path_prop= RNA_struct_find_property(op->ptr, "directory") ? "directory" : "filepath";
|
||||
|
||||
if (RNA_property_is_set(op->ptr, path_prop)==0 || fbo==NULL)
|
||||
@ -113,10 +113,9 @@ static int file_browse_exec(bContext *C, wmOperator *op)
|
||||
char name[FILE_MAX];
|
||||
|
||||
id = fbo->ptr.id.data;
|
||||
base = (id && id->lib)? id->lib->filepath: G.main->name;
|
||||
|
||||
BLI_strncpy(path, str, FILE_MAX);
|
||||
BLI_path_abs(path, base);
|
||||
BLI_path_abs(path, id ? ID_BLEND_PATH(G.main, id) : G.main->name);
|
||||
|
||||
if(BLI_is_dir(path)) {
|
||||
str = MEM_reallocN(str, strlen(str)+2);
|
||||
|
@ -594,7 +594,7 @@ static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTra
|
||||
}
|
||||
|
||||
/* pyramid */
|
||||
if((sel == TRACK_SELECTED(track) && sel && (sc->flag&SC_SHOW_PYRAMID_LEVELS) && (track->tracker==TRACKER_KLT))) {
|
||||
if(sel && TRACK_SELECTED(track) && (sc->flag&SC_SHOW_PYRAMID_LEVELS) && (track->tracker==TRACKER_KLT) && (marker->flag&MARKER_DISABLED)==0) {
|
||||
if(track->flag&TRACK_LOCKED) {
|
||||
if(act) UI_ThemeColor(TH_ACT_MARKER);
|
||||
else if(track->pat_flag&SELECT) UI_ThemeColorShade(TH_LOCK_MARKER, 64);
|
||||
@ -626,7 +626,7 @@ static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTra
|
||||
glDisable(GL_LINE_STIPPLE);
|
||||
glPopMatrix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(tiny)
|
||||
glDisable(GL_LINE_STIPPLE);
|
||||
|
@ -184,10 +184,18 @@ static int selected_boundbox(SpaceClip *sc, float min[2], float max[2])
|
||||
if(marker) {
|
||||
float pos[3];
|
||||
|
||||
pos[0]= (marker->pos[0]+track->offset[0])*width;
|
||||
pos[1]= (marker->pos[1]+track->offset[1])*height;
|
||||
pos[0]= marker->pos[0]+track->offset[0];
|
||||
pos[1]= marker->pos[1]+track->offset[1];
|
||||
pos[2]= 0.0f;
|
||||
|
||||
/* undistortion happens for normalized coords */
|
||||
if(sc->user.render_flag&MCLIP_PROXY_RENDER_UNDISTORT)
|
||||
/* undistortion happens for normalized coords */
|
||||
ED_clip_point_undistorted_pos(sc, pos, pos);
|
||||
|
||||
pos[0]*= width;
|
||||
pos[1]*= height;
|
||||
|
||||
mul_v3_m4v3(pos, sc->stabmat, pos);
|
||||
|
||||
DO_MINMAX2(pos, min, max);
|
||||
|
@ -2873,10 +2873,11 @@ static int clean_tracks_exec(bContext *C, wmOperator *op)
|
||||
|
||||
BKE_tracking_free_track(track);
|
||||
BLI_freelinkN(&clip->tracking.tracks, track);
|
||||
track= NULL;
|
||||
}
|
||||
|
||||
/* happens when all tracking segments are not long enough */
|
||||
if(track->markersnr==0) {
|
||||
if(track && track->markersnr==0) {
|
||||
if(track==act_track)
|
||||
clip->tracking.act_track= NULL;
|
||||
|
||||
|
@ -949,7 +949,7 @@ static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), Poin
|
||||
PointerRNA mappingptr = RNA_pointer_get(ptr, "mapping");
|
||||
uiLayout *row;
|
||||
|
||||
uiItemL(layout, "Translation:", ICON_NONE);
|
||||
uiItemL(layout, "Location:", ICON_NONE);
|
||||
row= uiLayoutRow(layout, 1);
|
||||
uiItemR(row, &mappingptr, "location", 0, "", ICON_NONE);
|
||||
|
||||
@ -961,7 +961,6 @@ static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), Poin
|
||||
row= uiLayoutRow(layout, 1);
|
||||
uiItemR(row, &mappingptr, "scale", 0, "", ICON_NONE);
|
||||
|
||||
#if 0
|
||||
row= uiLayoutRow(layout, 1);
|
||||
uiItemR(row, &mappingptr, "use_min", 0, "Min", ICON_NONE);
|
||||
uiItemR(row, &mappingptr, "min", 0, "", ICON_NONE);
|
||||
@ -969,7 +968,6 @@ static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), Poin
|
||||
row= uiLayoutRow(layout, 1);
|
||||
uiItemR(row, &mappingptr, "use_max", 0, "Max", ICON_NONE);
|
||||
uiItemR(row, &mappingptr, "max", 0, "", ICON_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void node_shader_buts_vect_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
@ -996,20 +994,6 @@ static void node_shader_buts_geometry(uiLayout *layout, bContext *C, PointerRNA
|
||||
}
|
||||
}
|
||||
|
||||
/*static void node_layout_prop(uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname)
|
||||
{
|
||||
if(C && CTX_wm_space_node(C)) {
|
||||
uiItemR(layout, ptr, propname, 0, NULL, ICON_NONE);
|
||||
}
|
||||
else {
|
||||
uiLayout *split = uiLayoutSplit(layout, 0.35f, 0);
|
||||
PropertyRNA *prop = RNA_struct_find_property(ptr, propname);
|
||||
|
||||
uiItemL(uiLayoutColumn(split, 0), RNA_property_ui_name(prop), ICON_NONE);
|
||||
uiItemR(uiLayoutColumn(split, 0), ptr, propname, 0, "", ICON_NONE);
|
||||
}
|
||||
}*/
|
||||
|
||||
static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "attribute_name", 0, "Name", ICON_NONE);
|
||||
|
@ -57,7 +57,6 @@ set(SRC
|
||||
intern/metadata.c
|
||||
intern/module.c
|
||||
intern/moviecache.c
|
||||
intern/openimageio.cpp
|
||||
intern/png.c
|
||||
intern/readimage.c
|
||||
intern/rectop.c
|
||||
@ -179,11 +178,4 @@ if(WITH_IMAGE_HDR)
|
||||
add_definitions(-DWITH_HDR)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENIMAGEIO)
|
||||
list(APPEND INC_SYS
|
||||
${OPENIMAGEIO_INCLUDES}
|
||||
)
|
||||
# disabled for now add_definitions(-DWITH_OPENIMAGEIO ${OPENIMAGEIO_DEFINITIONS})
|
||||
endif()
|
||||
|
||||
blender_add_lib(bf_imbuf "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
@ -44,9 +44,6 @@ typedef struct ImFileType {
|
||||
int (*save)(struct ImBuf *ibuf, const char *name, int flags);
|
||||
void (*load_tile)(struct ImBuf *ibuf, unsigned char *mem, size_t size, int tx, int ty, unsigned int *rect);
|
||||
|
||||
int (*is_a_filepath)(const char *filepath);
|
||||
struct ImBuf *(*load_filepath)(const char *filepath, int flags);
|
||||
|
||||
int flag;
|
||||
int filetype;
|
||||
} ImFileType;
|
||||
@ -122,20 +119,5 @@ void imb_loadtiletiff(struct ImBuf *ibuf, unsigned char *mem, size_t size,
|
||||
int imb_savetiff(struct ImBuf *ibuf, const char *name, int flags);
|
||||
void *libtiff_findsymbol(char *name);
|
||||
|
||||
/* openimageio */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int imb_is_a_openimageio(unsigned char *buf);
|
||||
int imb_is_a_filepath_openimageio(const char *filepath);
|
||||
int imb_ftype_openimageio(struct ImFileType *type, struct ImBuf *ibuf);
|
||||
struct ImBuf *imb_load_openimageio(const char *filepath, int flags);
|
||||
int imb_save_openimageio(struct ImBuf *ibuf, const char *filepath, int flags);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* IMB_FILETYPE_H */
|
||||
|
||||
|
@ -49,6 +49,9 @@ static int imb_ftype_default(ImFileType *type, ImBuf *ibuf) { return (ibuf->ftyp
|
||||
static int imb_ftype_cocoa(ImFileType *type, ImBuf *ibuf) { return (ibuf->ftype & TIF); }
|
||||
#endif
|
||||
static int imb_ftype_iris(ImFileType *type, ImBuf *ibuf) { (void)type; return (ibuf->ftype == IMAGIC); }
|
||||
#ifdef WITH_QUICKTIME
|
||||
static int imb_ftype_quicktime(ImFileType *type, ImBuf *ibuf) { return 0; } // XXX
|
||||
#endif
|
||||
|
||||
#ifdef WITH_QUICKTIME
|
||||
void quicktime_init(void);
|
||||
@ -56,39 +59,36 @@ void quicktime_exit(void);
|
||||
#endif
|
||||
|
||||
ImFileType IMB_FILE_TYPES[]= {
|
||||
#ifdef WITH_OPENIMAGEIO
|
||||
{NULL, NULL, imb_is_a_openimageio, imb_ftype_openimageio, NULL, imb_save_openimageio, NULL, imb_is_a_filepath_openimageio, imb_load_openimageio, 0, 0},
|
||||
#endif
|
||||
{NULL, NULL, imb_is_a_jpeg, imb_ftype_default, imb_load_jpeg, imb_savejpeg, NULL, NULL, NULL, 0, JPG},
|
||||
{NULL, NULL, imb_is_a_png, imb_ftype_default, imb_loadpng, imb_savepng, NULL, NULL, NULL, 0, PNG},
|
||||
{NULL, NULL, imb_is_a_bmp, imb_ftype_default, imb_bmp_decode, imb_savebmp, NULL, NULL, NULL, 0, BMP},
|
||||
{NULL, NULL, imb_is_a_targa, imb_ftype_default, imb_loadtarga, imb_savetarga, NULL, NULL, NULL, 0, TGA},
|
||||
{NULL, NULL, imb_is_a_iris, imb_ftype_iris, imb_loadiris, imb_saveiris, NULL, NULL, NULL, 0, IMAGIC},
|
||||
{NULL, NULL, imb_is_a_jpeg, imb_ftype_default, imb_load_jpeg, imb_savejpeg, NULL, 0, JPG},
|
||||
{NULL, NULL, imb_is_a_png, imb_ftype_default, imb_loadpng, imb_savepng, NULL, 0, PNG},
|
||||
{NULL, NULL, imb_is_a_bmp, imb_ftype_default, imb_bmp_decode, imb_savebmp, NULL, 0, BMP},
|
||||
{NULL, NULL, imb_is_a_targa, imb_ftype_default, imb_loadtarga, imb_savetarga, NULL, 0, TGA},
|
||||
{NULL, NULL, imb_is_a_iris, imb_ftype_iris, imb_loadiris, imb_saveiris, NULL, 0, IMAGIC},
|
||||
#ifdef WITH_CINEON
|
||||
{NULL, NULL, imb_is_dpx, imb_ftype_default, imb_loaddpx, imb_save_dpx, NULL, NULL, NULL, IM_FTYPE_FLOAT, DPX},
|
||||
{NULL, NULL, imb_is_cineon, imb_ftype_default, imb_loadcineon, imb_savecineon, NULL, NULL, NULL, IM_FTYPE_FLOAT, CINEON},
|
||||
{NULL, NULL, imb_is_dpx, imb_ftype_default, imb_loaddpx, imb_save_dpx, NULL, IM_FTYPE_FLOAT, DPX},
|
||||
{NULL, NULL, imb_is_cineon, imb_ftype_default, imb_loadcineon, imb_savecineon, NULL, IM_FTYPE_FLOAT, CINEON},
|
||||
#endif
|
||||
#ifdef WITH_TIFF
|
||||
{imb_inittiff, NULL, imb_is_a_tiff, imb_ftype_default, imb_loadtiff, imb_savetiff, imb_loadtiletiff, NULL, NULL, 0, TIF},
|
||||
{imb_inittiff, NULL, imb_is_a_tiff, imb_ftype_default, imb_loadtiff, imb_savetiff, imb_loadtiletiff, 0, TIF},
|
||||
#elif defined(__APPLE__) && defined(IMBUF_COCOA)
|
||||
{NULL, NULL, imb_is_a_cocoa, imb_ftype_cocoa, imb_imb_cocoaLoadImage, imb_savecocoa, NULL, NULL, NULL, 0, TIF},
|
||||
{NULL, NULL, imb_is_a_cocoa, imb_ftype_cocoa, imb_imb_cocoaLoadImage, imb_savecocoa, NULL, 0, TIF},
|
||||
#endif
|
||||
#ifdef WITH_HDR
|
||||
{NULL, NULL, imb_is_a_hdr, imb_ftype_default, imb_loadhdr, imb_savehdr, NULL, NULL, NULL, IM_FTYPE_FLOAT, RADHDR},
|
||||
{NULL, NULL, imb_is_a_hdr, imb_ftype_default, imb_loadhdr, imb_savehdr, NULL, IM_FTYPE_FLOAT, RADHDR},
|
||||
#endif
|
||||
#ifdef WITH_OPENEXR
|
||||
{NULL, NULL, imb_is_a_openexr, imb_ftype_default, imb_load_openexr, imb_save_openexr, NULL, NULL, NULL, IM_FTYPE_FLOAT, OPENEXR},
|
||||
{NULL, NULL, imb_is_a_openexr, imb_ftype_default, imb_load_openexr, imb_save_openexr, NULL, IM_FTYPE_FLOAT, OPENEXR},
|
||||
#endif
|
||||
#ifdef WITH_OPENJPEG
|
||||
{NULL, NULL, imb_is_a_jp2, imb_ftype_default, imb_jp2_decode, imb_savejp2, NULL, NULL, NULL, IM_FTYPE_FLOAT, JP2},
|
||||
{NULL, NULL, imb_is_a_jp2, imb_ftype_default, imb_jp2_decode, imb_savejp2, NULL, IM_FTYPE_FLOAT, JP2},
|
||||
#endif
|
||||
#ifdef WITH_DDS
|
||||
{NULL, NULL, imb_is_a_dds, imb_ftype_default, imb_load_dds, NULL, NULL, NULL, NULL, 0, DDS},
|
||||
{NULL, NULL, imb_is_a_dds, imb_ftype_default, imb_load_dds, NULL, NULL, 0, DDS},
|
||||
#endif
|
||||
#ifdef WITH_QUICKTIME
|
||||
{quicktime_init, quicktime_exit, imb_is_a_quicktime, NULL, imb_quicktime_decode, NULL, NULL, NULL, 0, QUICKTIME},
|
||||
{quicktime_init, quicktime_exit, imb_is_a_quicktime, imb_ftype_quicktime, imb_quicktime_decode, NULL, NULL, 0, QUICKTIME},
|
||||
#endif
|
||||
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0}};
|
||||
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0}};
|
||||
|
||||
void imb_filetypes_init(void)
|
||||
{
|
||||
|
@ -1,237 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
* $Id: png.c 36777 2011-05-19 11:54:03Z blendix $
|
||||
*/
|
||||
|
||||
/** \file blender/imbuf/intern/png.c
|
||||
* \ingroup imbuf
|
||||
*/
|
||||
|
||||
#ifdef WITH_OPENIMAGEIO
|
||||
|
||||
#include "MEM_sys_types.h"
|
||||
|
||||
#include "imbuf.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
#include "IMB_imbuf.h"
|
||||
|
||||
#include "IMB_allocimbuf.h"
|
||||
#include "IMB_metadata.h"
|
||||
#include "IMB_filetype.h"
|
||||
|
||||
}
|
||||
|
||||
#include <OpenImageIO/imageio.h>
|
||||
|
||||
OIIO_NAMESPACE_USING
|
||||
|
||||
int imb_is_a_openimageio(unsigned char *buf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int imb_is_a_filepath_openimageio(const char *filepath)
|
||||
{
|
||||
ImageInput *in = ImageInput::create(filepath);
|
||||
ImageSpec spec;
|
||||
int recognized = in->open(filepath, spec);
|
||||
in->close();
|
||||
|
||||
return recognized;
|
||||
}
|
||||
|
||||
template<typename T> static void pack_pixels(T *pixels, int width, int height, int components, T alpha)
|
||||
{
|
||||
if(components == 3) {
|
||||
for(int i = width*height-1; i >= 0; i--) {
|
||||
pixels[i*4+3] = alpha;
|
||||
pixels[i*4+2] = pixels[i*3+2];
|
||||
pixels[i*4+1] = pixels[i*3+1];
|
||||
pixels[i*4+0] = pixels[i*3+0];
|
||||
}
|
||||
}
|
||||
else if(components == 1) {
|
||||
for(int i = width*height-1; i >= 0; i--) {
|
||||
pixels[i*4+3] = alpha;
|
||||
pixels[i*4+2] = pixels[i];
|
||||
pixels[i*4+1] = pixels[i];
|
||||
pixels[i*4+0] = pixels[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int imb_ftype_openimageio(ImFileType *type, ImBuf *ibuf)
|
||||
{
|
||||
return ibuf->ftype & (PNG|TGA|JPG|BMP|RADHDR|TIF|OPENEXR|CINEON|DPX|DDS|JP2);
|
||||
}
|
||||
|
||||
static int format_name_to_ftype(const char *format_name)
|
||||
{
|
||||
if(strcmp(format_name, "png") == 0)
|
||||
return PNG;
|
||||
else if(strcmp(format_name, "targa") == 0)
|
||||
return TGA; /* RAWTGA */
|
||||
else if(strcmp(format_name, "jpeg") == 0)
|
||||
return JPG;
|
||||
else if(strcmp(format_name, "bmp") == 0)
|
||||
return BMP;
|
||||
else if(strcmp(format_name, "hdr") == 0)
|
||||
return RADHDR;
|
||||
else if(strcmp(format_name, "tiff") == 0)
|
||||
return TIF; /* TIF_16BIT */
|
||||
else if(strcmp(format_name, "openexr") == 0)
|
||||
return OPENEXR; /* OPENEXR_HALF, OPENEXR_COMPRESS */
|
||||
else if(strcmp(format_name, "cineon") == 0)
|
||||
return CINEON;
|
||||
else if(strcmp(format_name, "dpx") == 0)
|
||||
return DPX;
|
||||
else if(strcmp(format_name, "dds") == 0)
|
||||
return DDS;
|
||||
else if(strcmp(format_name, "jpeg2000") == 0)
|
||||
return JP2; /* JP2_12BIT, JP2_16BIT, JP2_YCC , JP2_CINE , JP2_CINE_48FPS */
|
||||
|
||||
/* not handled: "field3d", "fits", "ico", "iff", "pnm", "ptex", "sgi", "zfile" */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ImBuf *imb_load_openimageio(const char *filepath, int flags)
|
||||
{
|
||||
ImageInput *in = ImageInput::create(filepath);
|
||||
ImageSpec spec;
|
||||
bool success;
|
||||
|
||||
if(!in->open(filepath, spec)) {
|
||||
delete in;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* we only handle certain number of components */
|
||||
int width = spec.width;
|
||||
int height = spec.height;
|
||||
int components = spec.nchannels;
|
||||
|
||||
if(!(components == 1 || components == 3 || components == 4)) {
|
||||
delete in;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ImBuf *ibuf = IMB_allocImBuf(width, height, 32, 0);
|
||||
ibuf->ftype = format_name_to_ftype(in->format_name());
|
||||
|
||||
/* TODO: handle oiio:ColorSpace, oiio:Gamma, metadata, multilayer, size_t_safe */
|
||||
|
||||
/* read RGBA pixels */
|
||||
if(spec.format == TypeDesc::UINT8 || spec.format == TypeDesc::INT8) {
|
||||
//if(in->get_string_attribute("oiio:ColorSpace") == "sRGB")
|
||||
ibuf->profile = IB_PROFILE_SRGB;
|
||||
|
||||
imb_addrectImBuf(ibuf);
|
||||
|
||||
uint8_t *pixels = (uint8_t*)ibuf->rect;
|
||||
int scanlinesize = width*components;
|
||||
|
||||
success = in->read_image(TypeDesc::UINT8,
|
||||
pixels + (height-1)*scanlinesize,
|
||||
AutoStride,
|
||||
-scanlinesize*sizeof(uint8_t),
|
||||
AutoStride);
|
||||
|
||||
pack_pixels<uint8_t>(pixels, width, height, components, 255);
|
||||
}
|
||||
else {
|
||||
ibuf->profile = IB_PROFILE_LINEAR_RGB; /* XXX assumption */
|
||||
|
||||
imb_addrectfloatImBuf(ibuf);
|
||||
|
||||
float *pixels = ibuf->rect_float;
|
||||
int scanlinesize = width*components;
|
||||
|
||||
success = in->read_image(TypeDesc::FLOAT,
|
||||
pixels + (height-1)*scanlinesize,
|
||||
AutoStride,
|
||||
-scanlinesize*sizeof(float),
|
||||
AutoStride);
|
||||
|
||||
pack_pixels<float>(pixels, width, height, components, 1.0f);
|
||||
}
|
||||
|
||||
if(!success)
|
||||
fprintf(stderr, "OpenImageIO: error loading image: %s\n", in->geterror().c_str());
|
||||
|
||||
in->close();
|
||||
delete in;
|
||||
|
||||
return ibuf;
|
||||
}
|
||||
|
||||
int imb_save_openimageio(struct ImBuf *ibuf, const char *filepath, int flags)
|
||||
{
|
||||
ImageOutput *out = ImageOutput::create(filepath);
|
||||
|
||||
if(ibuf->rect_float) {
|
||||
/* XXX profile */
|
||||
|
||||
/* save as float image XXX works? */
|
||||
ImageSpec spec(ibuf->x, ibuf->y, 4, TypeDesc::FLOAT);
|
||||
int scanlinesize = ibuf->x*4;
|
||||
|
||||
out->open(filepath, spec);
|
||||
|
||||
/* conversion for different top/bottom convention */
|
||||
out->write_image(TypeDesc::FLOAT,
|
||||
ibuf->rect_float + (ibuf->y-1)*scanlinesize,
|
||||
AutoStride,
|
||||
-scanlinesize*sizeof(float),
|
||||
AutoStride);
|
||||
}
|
||||
else {
|
||||
/* save as 8bit image */
|
||||
ImageSpec spec(ibuf->x, ibuf->y, 4, TypeDesc::UINT8);
|
||||
int scanlinesize = ibuf->x*4;
|
||||
|
||||
out->open(filepath, spec);
|
||||
|
||||
/* conversion for different top/bottom convention */
|
||||
out->write_image(TypeDesc::UINT8,
|
||||
(uint8_t*)ibuf->rect + (ibuf->y-1)*scanlinesize,
|
||||
AutoStride,
|
||||
-scanlinesize*sizeof(uint8_t),
|
||||
AutoStride);
|
||||
}
|
||||
|
||||
out->close();
|
||||
delete out;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* WITH_OPENIMAGEIO */
|
||||
|
@ -50,28 +50,6 @@
|
||||
#include "IMB_imbuf.h"
|
||||
#include "IMB_filetype.h"
|
||||
|
||||
static ImBuf *imb_ibImageFromFile(const char *filepath, int flags)
|
||||
{
|
||||
ImBuf *ibuf;
|
||||
ImFileType *type;
|
||||
|
||||
for(type=IMB_FILE_TYPES; type->is_a; type++) {
|
||||
if(type->load_filepath) {
|
||||
ibuf= type->load_filepath(filepath, flags);
|
||||
if(ibuf) {
|
||||
if(flags & IB_premul) {
|
||||
IMB_premultiply_alpha(ibuf);
|
||||
ibuf->flags |= IB_premul;
|
||||
}
|
||||
|
||||
return ibuf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ImBuf *IMB_ibImageFromMemory(unsigned char *mem, size_t size, int flags, const char *descr)
|
||||
{
|
||||
ImBuf *ibuf;
|
||||
@ -148,15 +126,10 @@ ImBuf *IMB_loadiffname(const char *filepath, int flags)
|
||||
|
||||
imb_cache_filename(filepath_tx, filepath, flags);
|
||||
|
||||
ibuf= imb_ibImageFromFile(filepath_tx, flags);
|
||||
file = open(filepath_tx, O_BINARY|O_RDONLY);
|
||||
if(file < 0) return NULL;
|
||||
|
||||
if(!ibuf) {
|
||||
file = open(filepath_tx, O_BINARY|O_RDONLY);
|
||||
if(file < 0) return NULL;
|
||||
|
||||
ibuf= IMB_loadifffile(file, flags, filepath_tx);
|
||||
close(file);
|
||||
}
|
||||
ibuf= IMB_loadifffile(file, flags, filepath_tx);
|
||||
|
||||
if(ibuf) {
|
||||
BLI_strncpy(ibuf->name, filepath, sizeof(ibuf->name));
|
||||
@ -166,6 +139,8 @@ ImBuf *IMB_loadiffname(const char *filepath, int flags)
|
||||
if(flags & IB_fields) IMB_de_interlace(ibuf);
|
||||
}
|
||||
|
||||
close(file);
|
||||
|
||||
return ibuf;
|
||||
}
|
||||
|
||||
@ -209,7 +184,7 @@ static void imb_loadtilefile(ImBuf *ibuf, int file, int tx, int ty, unsigned int
|
||||
}
|
||||
|
||||
for(type=IMB_FILE_TYPES; type->is_a; type++)
|
||||
if(type->load_tile && type->ftype && type->ftype(type, ibuf))
|
||||
if(type->load_tile && type->ftype(type, ibuf))
|
||||
type->load_tile(ibuf, mem, size, tx, ty, rect);
|
||||
|
||||
if(munmap(mem, size))
|
||||
|
@ -153,10 +153,6 @@ static int IMB_ispic_name(const char *name)
|
||||
int fp, buf[10];
|
||||
|
||||
if(UTIL_DEBUG) printf("IMB_ispic_name: loading %s\n", name);
|
||||
|
||||
/*for(type=IMB_FILE_TYPES; type->is_a; type++)
|
||||
if(type->is_a_filepath && type->is_a_filepath(name))
|
||||
return type->filetype;*/
|
||||
|
||||
if(stat(name,&st) == -1)
|
||||
return FALSE;
|
||||
@ -178,7 +174,7 @@ static int IMB_ispic_name(const char *name)
|
||||
return JPG;
|
||||
|
||||
for(type=IMB_FILE_TYPES; type->is_a; type++)
|
||||
if(type->is_a && type->is_a((uchar*)buf))
|
||||
if(type->is_a((uchar*)buf))
|
||||
return type->filetype;
|
||||
|
||||
return FALSE;
|
||||
|
@ -48,7 +48,7 @@ short IMB_saveiff(struct ImBuf *ibuf, const char *name, int flags)
|
||||
ibuf->flags = flags;
|
||||
|
||||
for(type=IMB_FILE_TYPES; type->is_a; type++) {
|
||||
if(type->save && type->ftype && type->ftype(type, ibuf)) {
|
||||
if(type->save && type->ftype(type, ibuf)) {
|
||||
if(!(type->flag & IM_FTYPE_FLOAT)) {
|
||||
if(ibuf->rect==NULL && ibuf->rect_float)
|
||||
IMB_rect_from_float(ibuf);
|
||||
|
@ -63,7 +63,6 @@ struct bScreen;
|
||||
struct Scene;
|
||||
struct wmOperator;
|
||||
struct wmTimer;
|
||||
struct Tex;
|
||||
struct MovieClip;
|
||||
struct MovieClipScopes;
|
||||
|
||||
|
@ -95,41 +95,6 @@ static void engine_render(RenderEngine *engine, struct Scene *scene)
|
||||
RNA_parameter_list_free(&list);
|
||||
}
|
||||
|
||||
static void engine_preview_update(RenderEngine *engine, const struct bContext *context, struct ID *id)
|
||||
{
|
||||
extern FunctionRNA rna_RenderEngine_preview_update_func;
|
||||
PointerRNA ptr;
|
||||
ParameterList list;
|
||||
FunctionRNA *func;
|
||||
|
||||
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
|
||||
func= &rna_RenderEngine_preview_update_func;
|
||||
|
||||
RNA_parameter_list_create(&list, &ptr, func);
|
||||
RNA_parameter_set_lookup(&list, "context", &context);
|
||||
RNA_parameter_set_lookup(&list, "id", &id);
|
||||
engine->type->ext.call(NULL, &ptr, func, &list);
|
||||
|
||||
RNA_parameter_list_free(&list);
|
||||
}
|
||||
|
||||
static void engine_preview_render(RenderEngine *engine)
|
||||
{
|
||||
extern FunctionRNA rna_RenderEngine_preview_render_func;
|
||||
|
||||
PointerRNA ptr;
|
||||
ParameterList list;
|
||||
FunctionRNA *func;
|
||||
|
||||
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
|
||||
func= &rna_RenderEngine_preview_render_func;
|
||||
|
||||
RNA_parameter_list_create(&list, &ptr, func);
|
||||
engine->type->ext.call(NULL, &ptr, func, &list);
|
||||
|
||||
RNA_parameter_list_free(&list);
|
||||
}
|
||||
|
||||
static void engine_view_update(RenderEngine *engine, const struct bContext *context)
|
||||
{
|
||||
extern FunctionRNA rna_RenderEngine_view_update_func;
|
||||
@ -183,7 +148,7 @@ static StructRNA *rna_RenderEngine_register(Main *bmain, ReportList *reports, vo
|
||||
RenderEngineType *et, dummyet = {NULL};
|
||||
RenderEngine dummyengine= {NULL};
|
||||
PointerRNA dummyptr;
|
||||
int have_function[6];
|
||||
int have_function[4];
|
||||
|
||||
/* setup dummy engine & engine type to store static properties in */
|
||||
dummyengine.type= &dummyet;
|
||||
@ -220,10 +185,8 @@ static StructRNA *rna_RenderEngine_register(Main *bmain, ReportList *reports, vo
|
||||
|
||||
et->update= (have_function[0])? engine_update: NULL;
|
||||
et->render= (have_function[1])? engine_render: NULL;
|
||||
et->preview_update= (have_function[2])? engine_preview_update: NULL;
|
||||
et->preview_render= (have_function[3])? engine_preview_render: NULL;
|
||||
et->view_update= (have_function[4])? engine_view_update: NULL;
|
||||
et->view_draw= (have_function[5])? engine_view_draw: NULL;
|
||||
et->view_update= (have_function[2])? engine_view_update: NULL;
|
||||
et->view_draw= (have_function[3])? engine_view_draw: NULL;
|
||||
|
||||
BLI_addtail(&R_engines, et);
|
||||
|
||||
@ -324,17 +287,6 @@ static void rna_def_render_engine(BlenderRNA *brna)
|
||||
RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
|
||||
RNA_def_pointer(func, "scene", "Scene", "", "");
|
||||
|
||||
/* preview render callbacks */
|
||||
func= RNA_def_function(srna, "preview_update", NULL);
|
||||
RNA_def_function_ui_description(func, "Export scene data for preview render of the given datablock");
|
||||
RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
|
||||
RNA_def_pointer(func, "context", "Context", "", "");
|
||||
RNA_def_pointer(func, "id", "ID", "", "");
|
||||
|
||||
func= RNA_def_function(srna, "preview_render", NULL);
|
||||
RNA_def_function_ui_description(func, "Execute preview render");
|
||||
RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
|
||||
|
||||
/* viewport render callbacks */
|
||||
func= RNA_def_function(srna, "view_update", NULL);
|
||||
RNA_def_function_ui_description(func, "Update on data changes for viewport render");
|
||||
|
@ -3761,7 +3761,7 @@ void RNA_def_scene(BlenderRNA *brna)
|
||||
RNA_def_property_struct_type(prop, "TransformOrientation");
|
||||
RNA_def_property_ui_text(prop, "Transform Orientations", "");
|
||||
|
||||
/* acctive MovieClip */
|
||||
/* active MovieClip */
|
||||
prop= RNA_def_property(srna, "active_clip", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "clip");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
|
@ -118,10 +118,10 @@ void RNA_api_environment_map(StructRNA *srna)
|
||||
|
||||
RNA_def_pointer(func, "scene", "Scene", "", "Overrides the scene from which image parameters are taken");
|
||||
|
||||
parm = RNA_def_float_array(func, "layout", 12, default_layout, 0.0f, 0.0f, "File layout",
|
||||
"Flat array describing the X,Y position of each cube face in the "
|
||||
"output image, where 1 is the size of a face - order is [+Z -Z +Y -X -Y +X] "
|
||||
"(use -1 to skip a face)", 0.0f, 0.0f);
|
||||
RNA_def_float_array(func, "layout", 12, default_layout, 0.0f, 0.0f, "File layout",
|
||||
"Flat array describing the X,Y position of each cube face in the "
|
||||
"output image, where 1 is the size of a face - order is [+Z -Z +Y -X -Y +X] "
|
||||
"(use -1 to skip a face)", 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -488,7 +488,7 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
|
||||
RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPyramid_update");
|
||||
|
||||
/* minmal correlation - only used for SAD tracker */
|
||||
prop= RNA_def_property(srna, "minimum_correlation", PROP_FLOAT, PROP_NONE);
|
||||
prop= RNA_def_property(srna, "correlation_min", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "minimum_correlation");
|
||||
RNA_def_property_range(prop, -1.0f, 1.0f);
|
||||
|
@ -427,9 +427,9 @@ void RNA_api_ui_layout(StructRNA *srna)
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
|
||||
parm= RNA_def_string(func, "active_property", "", 0, "", "Identifier of property in data, for the active element");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED);
|
||||
parm= RNA_def_string(func, "prop_list", "", 0, "",
|
||||
"Identifier of a string property in each data member, specifying which "
|
||||
"of its properties should have a widget displayed in its row");
|
||||
RNA_def_string(func, "prop_list", "", 0, "",
|
||||
"Identifier of a string property in each data member, specifying which "
|
||||
"of its properties should have a widget displayed in its row");
|
||||
RNA_def_int(func, "rows", 5, 0, INT_MAX, "", "Number of rows to display", 0, INT_MAX);
|
||||
RNA_def_int(func, "maxrows", 5, 0, INT_MAX, "", "Maximum number of rows to display", 0, INT_MAX);
|
||||
RNA_def_enum(func, "type", list_type_items, 0, "Type", "Type of list to use");
|
||||
|
@ -67,7 +67,7 @@ static void node_shader_exec_mapping(void *UNUSED(data), bNode *node, bNodeStack
|
||||
}
|
||||
|
||||
|
||||
static void node_shader_default_mapping(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
static void node_shader_init_mapping(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
node->storage= add_tex_mapping();
|
||||
}
|
||||
@ -94,7 +94,7 @@ void register_node_type_sh_mapping(ListBase *lb)
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_mapping_in, sh_node_mapping_out);
|
||||
node_type_size(&ntype, 240, 160, 320);
|
||||
node_type_init(&ntype, node_shader_default_mapping);
|
||||
node_type_init(&ntype, node_shader_init_mapping);
|
||||
node_type_storage(&ntype, "TexMapping", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, node_shader_exec_mapping);
|
||||
node_type_gpu(&ntype, gpu_shader_mapping);
|
||||
|
@ -187,7 +187,7 @@ static struct _inittab bpy_internal_modules[]= {
|
||||
{(char *)"aud", AUD_initPython},
|
||||
#endif
|
||||
#ifdef WITH_CYCLES
|
||||
{(char *)"libcycles_blender", CYCLES_initPython},
|
||||
{(char *)"bcycles", CYCLES_initPython},
|
||||
#endif
|
||||
{(char *)"gpu", GPU_initPython},
|
||||
{NULL, NULL}
|
||||
|
@ -72,9 +72,6 @@ typedef struct RenderEngineType {
|
||||
void (*update)(struct RenderEngine *engine, struct Main *bmain, struct Scene *scene);
|
||||
void (*render)(struct RenderEngine *engine, struct Scene *scene);
|
||||
|
||||
void (*preview_update)(struct RenderEngine *engine, const struct bContext *context, struct ID *id);
|
||||
void (*preview_render)(struct RenderEngine *engine);
|
||||
|
||||
void (*view_update)(struct RenderEngine *engine, const struct bContext *context);
|
||||
void (*view_draw)(struct RenderEngine *engine, const struct bContext *context);
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
||||
static RenderEngineType internal_render_type = {
|
||||
NULL, NULL,
|
||||
"BLENDER_RENDER", "Blender Render", RE_INTERNAL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
{NULL, NULL, NULL}};
|
||||
|
||||
#ifdef WITH_GAMEENGINE
|
||||
@ -69,7 +69,7 @@ static RenderEngineType internal_render_type = {
|
||||
static RenderEngineType internal_game_type = {
|
||||
NULL, NULL,
|
||||
"BLENDER_GAME", "Blender Game", RE_INTERNAL|RE_GAME,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
{NULL, NULL, NULL}};
|
||||
|
||||
#endif
|
||||
@ -265,8 +265,7 @@ int RE_engine_render(Render *re, int do_all)
|
||||
/* verify if we can render */
|
||||
if(!type->render)
|
||||
return 0;
|
||||
if((re->r.scemode & R_PREVIEWBUTS) && !((type->flag & RE_USE_PREVIEW) ||
|
||||
(type->preview_update && type->preview_render)))
|
||||
if((re->r.scemode & R_PREVIEWBUTS) && !(type->flag & RE_USE_PREVIEW))
|
||||
return 0;
|
||||
if(do_all && !(type->flag & RE_USE_POSTPROCESS))
|
||||
return 0;
|
||||
@ -296,16 +295,10 @@ int RE_engine_render(Render *re, int do_all)
|
||||
if((re->r.scemode & (R_NO_FRAME_UPDATE|R_PREVIEWBUTS))==0)
|
||||
scene_update_for_newframe(re->main, re->scene, re->lay);
|
||||
|
||||
if(type->preview_update && type->preview_render) {
|
||||
//type->preview_update(engine, scene, id);
|
||||
type->preview_render(engine);
|
||||
}
|
||||
else {
|
||||
if(type->update)
|
||||
type->update(engine, re->main, re->scene);
|
||||
if(type->render)
|
||||
type->render(engine, re->scene);
|
||||
}
|
||||
if(type->update)
|
||||
type->update(engine, re->main, re->scene);
|
||||
if(type->render)
|
||||
type->render(engine, re->scene);
|
||||
|
||||
free_render_result(&engine->fullresult, engine->fullresult.first);
|
||||
|
||||
|
@ -733,7 +733,7 @@ int WM_write_file(bContext *C, const char *target, int fileflags, ReportList *re
|
||||
/* send the OnSave event */
|
||||
for (li= G.main->library.first; li; li= li->id.next) {
|
||||
if (BLI_path_cmp(li->filepath, filepath) == 0) {
|
||||
BKE_reportf(reports, RPT_ERROR, "Can't overwrite used library '%.200s'", filepath);
|
||||
BKE_reportf(reports, RPT_ERROR, "Can't overwrite used library '%.240s'", filepath);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -728,7 +728,7 @@ elseif(APPLE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# install more files XXX pass target dir
|
||||
# install more files specified elsewhere
|
||||
delayed_do_install(${TARGETDIR_VER})
|
||||
|
||||
unset(BLENDER_TEXT_FILES)
|
||||
@ -864,8 +864,6 @@ endif()
|
||||
bf_blenfont
|
||||
bf_intern_audaspace
|
||||
bf_intern_mikktspace
|
||||
extern_recastnavigation
|
||||
bf_editor_util # --- BAD LEVEL CALL HERE --- XXX, this should be removed before release!
|
||||
bf_intern_cycles
|
||||
cycles_render
|
||||
cycles_bvh
|
||||
|
Loading…
Reference in New Issue
Block a user