Merge branch 'blender2.8-workbench' into blender2.8
This commit is contained in:
commit
ba9b01d3c0
@ -763,6 +763,32 @@ class RENDER_PT_eevee_film(RenderButtonsPanel, Panel):
|
||||
col.prop(rd, "alpha_mode", text="Alpha")
|
||||
|
||||
|
||||
class RENDER_PT_workbench_environment_light(RenderButtonsPanel, Panel):
|
||||
bl_label = "Workbench Environment Light"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
scene = context.scene
|
||||
props = scene.layer_properties['BLENDER_WORKBENCH']
|
||||
|
||||
row = layout.row(align=True)
|
||||
col = row.column(align=True)
|
||||
col.prop(props, "diffuse_light_x_neg", text="Left/Right")
|
||||
col.prop(props, "diffuse_light_x_pos", text="")
|
||||
col = row.column(align=True)
|
||||
col.prop(props, "diffuse_light_y_pos", text="Up/Down")
|
||||
col.prop(props, "diffuse_light_y_neg", text="")
|
||||
col = row.column(align=True)
|
||||
col.prop(props, "diffuse_light_z_pos", text="Front/Back")
|
||||
col.prop(props, "diffuse_light_z_neg", text="")
|
||||
|
||||
|
||||
classes = (
|
||||
RENDER_MT_presets,
|
||||
RENDER_MT_ffmpeg_presets,
|
||||
@ -789,6 +815,7 @@ classes = (
|
||||
RENDER_PT_eevee_motion_blur,
|
||||
RENDER_PT_eevee_depth_of_field,
|
||||
RENDER_PT_eevee_bloom,
|
||||
RENDER_PT_workbench_environment_light,
|
||||
)
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
|
@ -17,7 +17,7 @@ float bayer_dither_noise() {
|
||||
* Using Method #4: Spheremap Transform */
|
||||
vec3 normal_decode(vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc * 4.0 - 2.0;
|
||||
vec2 fenc = enc.xy * 4.0 - 2.0;
|
||||
float f = dot(fenc, fenc);
|
||||
float g = sqrt(1.0 - f / 4.0);
|
||||
vec3 n;
|
||||
@ -31,5 +31,5 @@ vec3 normal_decode(vec2 enc)
|
||||
vec2 normal_encode(vec3 n)
|
||||
{
|
||||
float p = sqrt(n.z * 8.0 + 8.0);
|
||||
return n.xy / p + 0.5;
|
||||
return vec2(n.xy / p + 0.5);
|
||||
}
|
||||
|
@ -40,14 +40,22 @@ void main()
|
||||
}
|
||||
#endif /* !V3D_DRAWOPTION_OBJECT_OVERLAP */
|
||||
|
||||
vec3 diffuse_color = texelFetch(colorBuffer, texel, 0).rgb;
|
||||
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
vec4 diffuse_color = texelFetch(colorBuffer, texel, 0);
|
||||
#ifdef WORKBENCH_ENCODE_NORMALS
|
||||
vec3 normal_viewport = normal_decode(texelFetch(normalBuffer, texel, 0).rg);
|
||||
if (diffuse_color.a == 1.0) {
|
||||
normal_viewport = - normal_viewport;
|
||||
}
|
||||
#else /* WORKBENCH_ENCODE_NORMALS */
|
||||
vec3 normal_viewport = texelFetch(normalBuffer, texel, 0).rgb;
|
||||
#endif /* WORKBENCH_ENCODE_NORMALS */
|
||||
vec3 diffuse_light = get_world_diffuse_light(world_data, normal_viewport);
|
||||
vec3 shaded_color = diffuse_light * diffuse_color;
|
||||
vec3 shaded_color = diffuse_light * diffuse_color.rgb;
|
||||
|
||||
#else /* V3D_LIGHTING_STUDIO */
|
||||
vec3 diffuse_color = texelFetch(colorBuffer, texel, 0).rgb;
|
||||
vec3 shaded_color = diffuse_color;
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
struct WorldData {
|
||||
vec4 diffuse_light_xp;
|
||||
vec4 diffuse_light_xn;
|
||||
vec4 diffuse_light_yp;
|
||||
vec4 diffuse_light_yn;
|
||||
vec4 diffuse_light_zp;
|
||||
vec4 diffuse_light_zn;
|
||||
vec4 diffuse_light_x_pos;
|
||||
vec4 diffuse_light_x_neg;
|
||||
vec4 diffuse_light_y_pos;
|
||||
vec4 diffuse_light_y_neg;
|
||||
vec4 diffuse_light_z_pos;
|
||||
vec4 diffuse_light_z_neg;
|
||||
vec4 background_color_low;
|
||||
vec4 background_color_high;
|
||||
};
|
||||
|
@ -9,5 +9,5 @@ float calculate_object_overlap(usampler2D objectId, ivec2 texel, uint object_id)
|
||||
texelFetchOffset(objectId, texel, 0, ivec2(-OBJECT_OVERLAP_OFFSET, 0)).r,
|
||||
texelFetchOffset(objectId, texel, 0, ivec2( OBJECT_OVERLAP_OFFSET, 0)).r);
|
||||
|
||||
return dot(vec4(equal(uvec4(object_id), oid_offset)), vec4(1.0/4.0));
|
||||
return dot(vec4(equal(uvec4(object_id), oid_offset)), vec4(0.25));
|
||||
}
|
||||
|
@ -1,15 +1,34 @@
|
||||
uniform int object_id = 0;
|
||||
uniform vec3 object_color = vec3(1.0, 0.0, 1.0);
|
||||
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
in vec3 normal_viewport;
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
out uint objectId;
|
||||
out vec3 diffuseColor;
|
||||
out vec4 diffuseColor;
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
#ifdef WORKBENCH_ENCODE_NORMALS
|
||||
out vec2 normalViewport;
|
||||
#else /* WORKBENCH_ENCODE_NORMALS */
|
||||
out vec3 normalViewport;
|
||||
#endif /* WORKBENCH_ENCODE_NORMALS */
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
void main()
|
||||
{
|
||||
objectId = uint(object_id);
|
||||
diffuseColor = object_color;
|
||||
normalViewport = normal_encode(normal_viewport);
|
||||
diffuseColor = vec4(object_color, 0.0);
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
#ifdef WORKBENCH_ENCODE_NORMALS
|
||||
if (!gl_FrontFacing) {
|
||||
normalViewport = normal_encode(-normal_viewport);
|
||||
diffuseColor.a = 1.0;
|
||||
} else {
|
||||
normalViewport = normal_encode(normal_viewport);
|
||||
}
|
||||
#else /* WORKBENCH_ENCODE_NORMALS */
|
||||
normalViewport = normal_viewport;
|
||||
#endif /* WORKBENCH_ENCODE_NORMALS */
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
}
|
||||
|
@ -1,13 +1,21 @@
|
||||
uniform mat4 ModelViewProjectionMatrix;
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
uniform mat3 NormalMatrix;
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
in vec3 pos;
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
in vec3 nor;
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
out vec3 normal_viewport;
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
|
||||
void main()
|
||||
{
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
normal_viewport = normalize(NormalMatrix * nor);
|
||||
#endif /* V3D_LIGHTING_STUDIO */
|
||||
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
vec3 get_world_diffuse_light(WorldData world_data, vec3 N)
|
||||
{
|
||||
vec4 result = world_data.diffuse_light_xp * clamp(N.x, 0.0, 1.0);
|
||||
result = mix(result, world_data.diffuse_light_xn, clamp(-N.x, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_yp, clamp( N.y, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_yn, clamp(-N.y, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_zp, clamp( N.z, 0.0, 1.0));
|
||||
return mix(result, world_data.diffuse_light_zn, clamp(-N.z, 0.0, 1.0)).xyz;
|
||||
vec4 result = world_data.diffuse_light_x_pos * clamp(N.x, 0.0, 1.0);
|
||||
result = mix(result, world_data.diffuse_light_x_neg, clamp(-N.x, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_y_pos, clamp( N.y, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_y_neg, clamp(-N.y, 0.0, 1.0));
|
||||
result = mix(result, world_data.diffuse_light_z_pos, clamp( N.z, 0.0, 1.0));
|
||||
return mix(result, world_data.diffuse_light_z_neg, clamp(-N.z, 0.0, 1.0)).xyz;
|
||||
}
|
||||
|
@ -53,12 +53,33 @@ static void workbench_layer_collection_settings_create(RenderEngine *UNUSED(engi
|
||||
BKE_collection_engine_property_add_float(props, "random_object_color_value", 0.9f);
|
||||
}
|
||||
|
||||
static void workbench_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
|
||||
{
|
||||
BLI_assert(props &&
|
||||
props->type == IDP_GROUP &&
|
||||
props->subtype == IDP_GROUP_SUB_ENGINE_RENDER);
|
||||
|
||||
const float diffuse_x_pos[3] = {1.0, 0.8, 0.6};
|
||||
const float diffuse_x_neg[3] = {1.0, 0.6, 0.6};
|
||||
const float diffuse_y_pos[3] = {0.9, 0.9, 1.0};
|
||||
const float diffuse_y_neg[3] = {0.05, 0.025, 0.025};
|
||||
const float diffuse_z_pos[3] = {0.8, 0.8, 0.75};
|
||||
const float diffuse_z_neg[3] = {1.0, 0.95, 0.8};
|
||||
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_x_pos", diffuse_x_pos, 3);
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_x_neg", diffuse_x_neg, 3);
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_y_pos", diffuse_y_pos, 3);
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_y_neg", diffuse_y_neg, 3);
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_z_pos", diffuse_z_pos, 3);
|
||||
BKE_collection_engine_property_add_float_array(props, "diffuse_light_z_neg", diffuse_z_neg, 3);
|
||||
}
|
||||
|
||||
/* Note: currently unused, we may want to register so we can see this when debugging the view. */
|
||||
|
||||
RenderEngineType DRW_engine_viewport_workbench_type = {
|
||||
NULL, NULL,
|
||||
WORKBENCH_ENGINE, N_("Workbench"), RE_INTERNAL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, &workbench_layer_collection_settings_create, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, &workbench_layer_collection_settings_create, &workbench_view_layer_settings_create,
|
||||
&draw_engine_workbench_solid,
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
@ -29,6 +29,8 @@
|
||||
|
||||
#include "BKE_particle.h"
|
||||
|
||||
#include "DNA_modifier_types.h"
|
||||
|
||||
#include "GPU_shader.h"
|
||||
|
||||
#include "UI_resources.h"
|
||||
@ -75,6 +77,10 @@ static char *workbench_build_defines(WORKBENCH_PrivateData *wpd)
|
||||
BLI_dynstr_appendf(ds, "#define V3D_LIGHTING_STUDIO\n");
|
||||
}
|
||||
|
||||
#ifdef WORKBENCH_ENCODE_NORMALS
|
||||
BLI_dynstr_appendf(ds, "#define WORKBENCH_ENCODE_NORMALS\n");
|
||||
#endif
|
||||
|
||||
str = BLI_dynstr_get_cstring(ds);
|
||||
BLI_dynstr_free(ds);
|
||||
return str;
|
||||
@ -201,7 +207,11 @@ void workbench_materials_engine_init(WORKBENCH_Data *vedata)
|
||||
const int size[2] = {(int)viewport_size[0], (int)viewport_size[1]};
|
||||
e_data.object_id_tx = DRW_texture_pool_query_2D(size[0], size[1], DRW_TEX_R_32U, &draw_engine_workbench_solid);
|
||||
e_data.color_buffer_tx = DRW_texture_pool_query_2D(size[0], size[1], DRW_TEX_RGBA_8, &draw_engine_workbench_solid);
|
||||
#ifdef WORKBENCH_ENCODE_NORMALS
|
||||
e_data.normal_buffer_tx = DRW_texture_pool_query_2D(size[0], size[1], DRW_TEX_RG_8, &draw_engine_workbench_solid);
|
||||
#else
|
||||
e_data.normal_buffer_tx = DRW_texture_pool_query_2D(size[0], size[1], DRW_TEX_RGBA_32, &draw_engine_workbench_solid);
|
||||
#endif
|
||||
|
||||
GPU_framebuffer_ensure_config(&fbl->prepass_fb, {
|
||||
GPU_ATTACHMENT_TEXTURE(dtxl->depth),
|
||||
@ -233,6 +243,9 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
|
||||
WORKBENCH_PrivateData *wpd = stl->g_data;
|
||||
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
|
||||
DRWShadingGroup *grp;
|
||||
const DRWContextState *draw_ctx = DRW_context_state_get();
|
||||
ViewLayer *view_layer = draw_ctx->view_layer;
|
||||
IDProperty *props = BKE_view_layer_engine_evaluated_get(view_layer, COLLECTION_MODE_NONE, RE_engine_id_BLENDER_WORKBENCH);
|
||||
|
||||
const DRWContextState *DCS = DRW_context_state_get();
|
||||
|
||||
@ -252,14 +265,14 @@ void workbench_materials_cache_init(WORKBENCH_Data *vedata)
|
||||
/* Deferred Mix Pass */
|
||||
{
|
||||
WORKBENCH_UBO_World *wd = &wpd->world_data;
|
||||
wd->diffuse_light_xp[0] = 0.8; wd->diffuse_light_xp[1] = 0.8; wd->diffuse_light_xp[2] = 1.0;
|
||||
wd->diffuse_light_xn[0] = 0.8; wd->diffuse_light_xn[1] = 0.8; wd->diffuse_light_xn[2] = 1.0;
|
||||
wd->diffuse_light_yp[0] = 0.8; wd->diffuse_light_yp[1] = 0.8; wd->diffuse_light_yp[2] = 1.0;
|
||||
wd->diffuse_light_yn[0] = 0.8; wd->diffuse_light_yn[1] = 0.8; wd->diffuse_light_yn[2] = 1.0;
|
||||
wd->diffuse_light_zp[0] = 1.0; wd->diffuse_light_zp[1] = 1.0; wd->diffuse_light_zp[2] = 1.0;
|
||||
wd->diffuse_light_zn[0] = 0.0; wd->diffuse_light_zn[1] = 0.0; wd->diffuse_light_zn[2] = 0.0;
|
||||
UI_GetThemeColor3fv(UI_GetThemeValue(TH_SHOW_BACK_GRAD)?TH_LOW_GRAD:TH_HIGH_GRAD, wd->background_color_low);
|
||||
UI_GetThemeColor3fv(TH_HIGH_GRAD, wd->background_color_high);
|
||||
copy_v3_v3(wd->diffuse_light_x_pos, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_x_pos"));
|
||||
copy_v3_v3(wd->diffuse_light_x_neg, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_x_neg"));
|
||||
copy_v3_v3(wd->diffuse_light_y_pos, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_y_pos"));
|
||||
copy_v3_v3(wd->diffuse_light_y_neg, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_y_neg"));
|
||||
copy_v3_v3(wd->diffuse_light_z_pos, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_z_pos"));
|
||||
copy_v3_v3(wd->diffuse_light_z_neg, BKE_collection_engine_property_value_get_float_array(props, "diffuse_light_z_neg"));
|
||||
|
||||
psl->composite_pass = DRW_pass_create("Composite", DRW_STATE_WRITE_COLOR);
|
||||
grp = DRW_shgroup_create(wpd->composite_sh, psl->composite_pass);
|
||||
@ -317,22 +330,26 @@ static void workbench_cache_populate_particles(WORKBENCH_Data *vedata, IDPropert
|
||||
const DRWContextState *draw_ctx = DRW_context_state_get();
|
||||
|
||||
if (ob != draw_ctx->object_edit) {
|
||||
for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
|
||||
if (psys_check_enabled(ob, psys, false)) {
|
||||
ParticleSettings *part = psys->part;
|
||||
int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
|
||||
for (ModifierData *md = ob->modifiers.first; md; md = md->next) {
|
||||
if (md->type == eModifierType_ParticleSystem) {
|
||||
ParticleSystem *psys = ((ParticleSystemModifierData *)md)->psys;
|
||||
|
||||
if (draw_as == PART_DRAW_PATH && !psys->pathcache && !psys->childcache) {
|
||||
draw_as = PART_DRAW_DOT;
|
||||
}
|
||||
if (psys_check_enabled(ob, psys, false)) {
|
||||
ParticleSettings *part = psys->part;
|
||||
int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
|
||||
|
||||
static float mat[4][4];
|
||||
unit_m4(mat);
|
||||
if (draw_as == PART_DRAW_PATH && !psys->pathcache && !psys->childcache) {
|
||||
draw_as = PART_DRAW_DOT;
|
||||
}
|
||||
|
||||
if (draw_as == PART_DRAW_PATH) {
|
||||
struct Gwn_Batch *geom = DRW_cache_particles_get_hair(psys, NULL);
|
||||
WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, props, ob);
|
||||
DRW_shgroup_call_add(material->shgrp, geom, mat);
|
||||
static float mat[4][4];
|
||||
unit_m4(mat);
|
||||
|
||||
if (draw_as == PART_DRAW_PATH) {
|
||||
struct Gwn_Batch *geom = DRW_cache_particles_get_hair(psys, NULL);
|
||||
WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, props, ob);
|
||||
DRW_shgroup_call_add(material->shgrp, geom, mat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,6 +32,7 @@
|
||||
|
||||
#define WORKBENCH_ENGINE "BLENDER_WORKBENCH"
|
||||
#define M_GOLDEN_RATION_CONJUGATE 0.618033988749895
|
||||
#define WORKBENCH_ENCODE_NORMALS
|
||||
|
||||
typedef struct WORKBENCH_FramebufferList {
|
||||
struct GPUFrameBuffer *prepass_fb;
|
||||
@ -55,12 +56,12 @@ typedef struct WORKBENCH_Data {
|
||||
} WORKBENCH_Data;
|
||||
|
||||
typedef struct WORKBENCH_UBO_World {
|
||||
float diffuse_light_xp[4];
|
||||
float diffuse_light_xn[4];
|
||||
float diffuse_light_yp[4];
|
||||
float diffuse_light_yn[4];
|
||||
float diffuse_light_zp[4];
|
||||
float diffuse_light_zn[4];
|
||||
float diffuse_light_x_pos[4];
|
||||
float diffuse_light_x_neg[4];
|
||||
float diffuse_light_y_pos[4];
|
||||
float diffuse_light_y_neg[4];
|
||||
float diffuse_light_z_pos[4];
|
||||
float diffuse_light_z_neg[4];
|
||||
float background_color_low[4];
|
||||
float background_color_high[4];
|
||||
} WORKBENCH_UBO_World;
|
||||
|
@ -364,8 +364,16 @@ RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(hair_brightness_randomness)
|
||||
#endif /* WITH_CLAY_ENGINE */
|
||||
|
||||
/* workbench engine */
|
||||
/* Collection settings */
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT(random_object_color_saturation)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT(random_object_color_value)
|
||||
/* View Layer settings */
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_x_pos, 3)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_x_neg, 3)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_y_pos, 3)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_y_neg, 3)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_z_pos, 3)
|
||||
RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_z_neg, 3)
|
||||
|
||||
/* eevee engine */
|
||||
/* ViewLayer settings. */
|
||||
@ -532,6 +540,9 @@ static StructRNA *rna_ViewLayerSettings_refine(PointerRNA *ptr)
|
||||
if (STREQ(props->name, RE_engine_id_BLENDER_EEVEE)) {
|
||||
return &RNA_ViewLayerEngineSettingsEevee;
|
||||
}
|
||||
else if (STREQ(props->name, RE_engine_id_BLENDER_WORKBENCH)) {
|
||||
return &RNA_ViewLayerEngineSettingsWorkbench;
|
||||
}
|
||||
break;
|
||||
case IDP_GROUP_SUB_MODE_OBJECT:
|
||||
case IDP_GROUP_SUB_MODE_EDIT:
|
||||
@ -1679,6 +1690,67 @@ static void rna_def_layer_collection_engine_settings_clay(BlenderRNA *brna)
|
||||
#endif /* WITH_CLAY_ENGINE */
|
||||
|
||||
/* Workbench engine */
|
||||
static void rna_def_view_layer_engine_settings_workbench(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
srna = RNA_def_struct(brna, "ViewLayerEngineSettingsWorkbench", "ViewLayerSettings");
|
||||
RNA_def_struct_ui_text(srna, "Workbench Scene Layer Settings", "Workbench Engine settings");
|
||||
|
||||
RNA_define_verify_sdna(0); /* not in sdna */
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_x_pos", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_x_pos_get", "rna_LayerEngineSettings_Workbench_diffuse_light_x_pos_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse +X Light", "Diffuse light color in positive X direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_x_neg", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_x_neg_get", "rna_LayerEngineSettings_Workbench_diffuse_light_x_neg_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse -X Light", "Diffuse light color in negative X direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_y_pos", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_y_pos_get", "rna_LayerEngineSettings_Workbench_diffuse_light_y_pos_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse +Y Light", "Diffuse light color in positive Y direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_y_neg", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_y_neg_get", "rna_LayerEngineSettings_Workbench_diffuse_light_y_neg_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse -Y Light", "Diffuse light color in negative Y direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_z_pos", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_z_pos_get", "rna_LayerEngineSettings_Workbench_diffuse_light_z_pos_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse +Z Light", "Diffuse light color in positive Z direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
prop = RNA_def_property(srna, "diffuse_light_z_neg", PROP_FLOAT, PROP_COLOR);
|
||||
RNA_def_property_array(prop, 3);
|
||||
RNA_def_property_float_funcs(prop, "rna_LayerEngineSettings_Workbench_diffuse_light_z_neg_get", "rna_LayerEngineSettings_Workbench_diffuse_light_z_neg_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Diffuse -Z Light", "Diffuse light color in negative Z direction");
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
|
||||
|
||||
RNA_define_verify_sdna(1); /* not in sdna */
|
||||
}
|
||||
|
||||
static void rna_def_layer_collection_engine_settings_workbench(BlenderRNA *brna)
|
||||
{
|
||||
StructRNA *srna;
|
||||
@ -1702,6 +1774,8 @@ static void rna_def_layer_collection_engine_settings_workbench(BlenderRNA *brna)
|
||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update");
|
||||
|
||||
RNA_define_verify_sdna(1); /* not in sdna */
|
||||
}
|
||||
|
||||
static void rna_def_layer_collection_mode_settings_object(BlenderRNA *brna)
|
||||
@ -1877,6 +1951,7 @@ static void rna_def_view_layer_settings(BlenderRNA *brna)
|
||||
#ifdef WITH_CLAY_ENGINE
|
||||
rna_def_view_layer_engine_settings_clay(brna);
|
||||
#endif
|
||||
rna_def_view_layer_engine_settings_workbench(brna);
|
||||
rna_def_view_layer_engine_settings_eevee(brna);
|
||||
|
||||
#if 0
|
||||
|
Loading…
Reference in New Issue
Block a user