Fix T41473: Cycles volume rendering is too dark
The issue was caused by the changed defaults from the Cycles side. Because of those properties being saved as an IDProp and not being saved to the file, every change to the defaults would ruin someone's day updating the values. Added a bpy.app.handler.version_update which is run after the regular do_versions() are done and could be sued by the scripts to apply versioning code on their settings. Reviewers: campbellbarton Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D761
This commit is contained in:
@@ -31,7 +31,7 @@ bl_info = {
|
||||
import bpy
|
||||
|
||||
from . import engine
|
||||
|
||||
from . import version_update
|
||||
|
||||
class CyclesRender(bpy.types.RenderEngine):
|
||||
bl_idname = 'CYCLES'
|
||||
@@ -100,12 +100,16 @@ def register():
|
||||
presets.register()
|
||||
bpy.utils.register_module(__name__)
|
||||
|
||||
bpy.app.handlers.version_update.append(version_update.do_versions)
|
||||
|
||||
|
||||
def unregister():
|
||||
from . import ui
|
||||
from . import properties
|
||||
from . import presets
|
||||
|
||||
bpy.app.handlers.version_update.remove(version_update.do_versions)
|
||||
|
||||
ui.unregister()
|
||||
properties.unregister()
|
||||
presets.unregister()
|
||||
|
||||
35
intern/cycles/blender/addon/version_update.py
Normal file
35
intern/cycles/blender/addon/version_update.py
Normal file
@@ -0,0 +1,35 @@
|
||||
#
|
||||
# Copyright 2011-2014 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License
|
||||
#
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import bpy
|
||||
|
||||
from bpy.app.handlers import persistent
|
||||
|
||||
|
||||
@persistent
|
||||
def do_versions(self):
|
||||
# We don't modify startup file because it assumes to
|
||||
# have all the default values only.
|
||||
if not bpy.data.is_saved:
|
||||
return
|
||||
|
||||
if bpy.data.version <= (2, 71, 0):
|
||||
for scene in bpy.data.scenes:
|
||||
cscene = scene.cycles
|
||||
if not cscene.is_property_set("volume_bounces"):
|
||||
cscene.volume_bounces = 1
|
||||
@@ -45,6 +45,7 @@ typedef enum {
|
||||
BLI_CB_EVT_SCENE_UPDATE_POST,
|
||||
BLI_CB_EVT_GAME_PRE,
|
||||
BLI_CB_EVT_GAME_POST,
|
||||
BLI_CB_EVT_VERSION_UPDATE,
|
||||
BLI_CB_EVT_TOT
|
||||
} eCbEvent;
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ static PyStructSequence_Field app_cb_info_fields[] = {
|
||||
{(char *)"scene_update_post", (char *)"Callback list - on updating the scenes data (after)"},
|
||||
{(char *)"game_pre", (char *)"Callback list - on starting the game engine"},
|
||||
{(char *)"game_post", (char *)"Callback list - on ending the game engine"},
|
||||
{(char *)"version_update", (char *)"Callback list - on ending the versioning code"},
|
||||
|
||||
/* sets the permanent tag */
|
||||
# define APP_CB_OTHER_FIELDS 1
|
||||
|
||||
@@ -459,6 +459,7 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
|
||||
#endif
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
|
||||
if (!G.background) {
|
||||
@@ -650,6 +651,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
||||
#endif
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
|
||||
WM_event_add_notifier(C, NC_WM | ND_FILEREAD, NULL);
|
||||
|
||||
@@ -238,6 +238,7 @@ void WM_init(bContext *C, int argc, const char **argv)
|
||||
*
|
||||
* unlikely any handlers are set but its possible,
|
||||
* note that recovering the last session does its own callbacks. */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user