Commit: bbbb8405b6547cdff9f248da86b2205c7963c3dd
Author: Clément Foucault
Date:   Fri Jan 20 01:11:42 2017 +0100
Branches: clay-engine
https://developer.blender.org/rBbbbb8405b6547cdff9f248da86b2205c7963c3dd

Removed Batch storage
Also lots of renaming
Small visual tweaks
Material Settings Struct is now shared by Scene and material

===================================================================

M       release/scripts/startup/bl_ui/properties_render.py
M       source/blender/blenkernel/intern/scene.c
M       source/blender/blenloader/intern/readfile.c
M       source/blender/blenloader/intern/versioning_280.c
M       source/blender/draw/engines/clay/clay.c
M       source/blender/draw/engines/clay/clay.h
M       source/blender/draw/engines/clay/shaders/clay_frag.glsl
M       source/blender/draw/engines/clay/shaders/ssao_groundtruth.glsl
M       source/blender/draw/intern/DRW_render.h
M       source/blender/draw/intern/draw_manager.c
M       source/blender/draw/intern/draw_mode_pass.c
M       source/blender/draw/intern/draw_mode_pass.h
M       source/blender/makesdna/DNA_material_types.h
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_material.c
M       source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_render.py 
b/release/scripts/startup/bl_ui/properties_render.py
index 8ddc99af70..0d473d79ed 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -591,15 +591,16 @@ class RENDER_PT_clay(RenderButtonsPanel, Panel):
     def draw(self, context):
         layout = self.layout;
         settings = context.scene.clay_settings
-        layout.template_icon_view(settings, "matcap_icon")
-        layout.prop(settings, "matcap_rotation")
-        layout.prop(settings, "matcap_hue")
-        layout.prop(settings, "matcap_saturation")
-        layout.prop(settings, "matcap_value")
-        layout.prop(settings, "ssao_factor_cavity")
-        layout.prop(settings, "ssao_factor_edge")
-        layout.prop(settings, "ssao_distance")
-        layout.prop(settings, "ssao_attenuation")
+        matsettings = context.scene.clay_settings.mat_settings
+        layout.template_icon_view(matsettings, "matcap_icon")
+        layout.prop(matsettings, "matcap_rotation")
+        layout.prop(matsettings, "matcap_hue")
+        layout.prop(matsettings, "matcap_saturation")
+        layout.prop(matsettings, "matcap_value")
+        layout.prop(matsettings, "ssao_factor_cavity")
+        layout.prop(matsettings, "ssao_factor_edge")
+        layout.prop(matsettings, "ssao_distance")
+        layout.prop(matsettings, "ssao_attenuation")
         layout.prop(settings, "ssao_samples")
 
 
diff --git a/source/blender/blenkernel/intern/scene.c 
b/source/blender/blenkernel/intern/scene.c
index 2d9b4fcd2b..efaea4f9c3 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -558,6 +558,10 @@ void BKE_scene_free(Scene *sce)
        BKE_collection_master_free(sce);
        MEM_freeN(sce->collection);
        sce->collection = NULL;
+
+       /* Runtime Engine Data */
+       if (sce->claydata.defsettings.runtime)
+               MEM_freeN(sce->claydata.defsettings.runtime);
 }
 
 void BKE_scene_init(Scene *sce)
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 0f79a42111..e98e72295c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6197,6 +6197,8 @@ static void direct_link_scene(FileData *fd, Scene *sce)
                sl->basact = newdataadr(fd, sl->basact);
                direct_link_layer_collections(fd, &sl->layer_collections);
        }
+
+       sce->claydata.defsettings.runtime = NULL;
 }
 
 /* ************ READ WM ***************** */
diff --git a/source/blender/blenloader/intern/versioning_280.c 
b/source/blender/blenloader/intern/versioning_280.c
index 8ae921ab69..64340ebcdb 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -30,6 +30,7 @@
 
 #include "DNA_object_types.h"
 #include "DNA_layer_types.h"
+#include "DNA_material_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_genfile.h"
 
@@ -165,14 +166,14 @@ void blo_do_versions_280(FileData *fd, Library 
*UNUSED(lib), Main *main)
                        for (Scene *scene = main->scene.first; scene; scene = 
scene->id.next) {
                                EngineDataClay *settings = &scene->claydata;
 
-                               settings->matcap_rot = 0.0f;
-                               settings->matcap_hue = 0.5f;
-                               settings->matcap_sat = 0.5f;
-                               settings->matcap_val = 0.5f;
-                               settings->ssao_distance = 0.2;
-                               settings->ssao_attenuation = 1.0f;
-                               settings->ssao_factor_cavity = 1.0f;
-                               settings->ssao_factor_edge = 1.0f;
+                               settings->defsettings.matcap_rot = 0.0f;
+                               settings->defsettings.matcap_hue = 0.5f;
+                               settings->defsettings.matcap_sat = 0.5f;
+                               settings->defsettings.matcap_val = 0.5f;
+                               settings->defsettings.ssao_distance = 0.2;
+                               settings->defsettings.ssao_attenuation = 1.0f;
+                               settings->defsettings.ssao_factor_cavity = 1.0f;
+                               settings->defsettings.ssao_factor_edge = 1.0f;
                                settings->ssao_samples = 32;
                        }
                }
diff --git a/source/blender/draw/engines/clay/clay.c 
b/source/blender/draw/engines/clay/clay.c
index 32d18e8da1..48fbb435e3 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -43,13 +43,6 @@ extern char datatoc_ssao_groundtruth_glsl[];
 
 /* Storage */
 
-typedef struct CLAY_BatchStorage {
-       float matcap_rot[2];
-       int matcap_id;
-       float matcap_hsv[3];
-       float ssao_params_var[4];
-} CLAY_BatchStorage;
-
 static struct CLAY_data {
        /* Depth Pre Pass */
        struct GPUShader *depth_sh;
@@ -61,7 +54,6 @@ static struct CLAY_data {
        float matcap_colors[24][3];
 
        /* Ssao */
-       float dfdyfac[2];
        float winmat[4][4];
        float viewvecs[3][4];
        float ssao_params[4];
@@ -111,7 +103,7 @@ typedef struct CLAY_PassList{
        struct DRWPass *mode_ob_center_pass;
 } CLAY_PassList;
 
-// #define GTAO
+//#define GTAO
 
 /* Functions */
 
@@ -225,7 +217,7 @@ static struct GPUTexture *create_jitter_texture(void)
        return DRW_texture_create_2D(64, 64, DRW_TEX_RG_16, DRW_TEX_FILTER | 
DRW_TEX_WRAP, &jitter[0][0]);
 }
 
-static void clay_engine_init(void)
+static void CLAY_engine_init(void)
 {
        /* Create Texture Array */
        if (!data.matcap_array) {
@@ -320,12 +312,12 @@ static void clay_engine_init(void)
        }
 }
 
-static DRWBatch *clay_batch_create(DRWPass *pass, CLAY_BatchStorage *storage)
+static DRWShadingGroup *CLAY_shgroup_create(DRWPass *pass, int *matcap_id, 
float *matcap_rot, float *matcap_hsv, float *ssao_params_var)
 {
        const int depthloc = 0, matcaploc = 1, jitterloc = 2, sampleloc = 3;
-       const bool use_rot = (storage->matcap_rot[1] != 0.0f);
-       const bool use_ao = (storage->ssao_params_var[1] != 0.0f || 
storage->ssao_params_var[2] != 0.0f);
-       const bool use_hsv = (storage->matcap_hsv[0] != 0.5f || 
storage->matcap_hsv[1] != 0.0f || storage->matcap_hsv[2] != 0.0f);
+       const bool use_rot = (matcap_rot[1] != 0.0f);
+       const bool use_ao = (ssao_params_var[1] != 0.0f || ssao_params_var[2] 
!= 0.0f);
+       const bool use_hsv = (matcap_hsv[0] != 0.5f || matcap_hsv[1] != 0.5f || 
matcap_hsv[2] != 0.5f);
        struct GPUShader *sh;
 
        if (use_rot && use_ao && use_hsv) {
@@ -353,77 +345,94 @@ static DRWBatch *clay_batch_create(DRWPass *pass, 
CLAY_BatchStorage *storage)
                sh = data.clay_sh[WITH_NONE];
        }
 
-       DRWBatch *batch = DRW_batch_create(sh, pass, storage);
+       DRWShadingGroup *grp = DRW_shgroup_create(sh, pass);
 
-       DRW_batch_uniform_ivec2(batch, "screenres", DRW_viewport_size_get(), 1);
-       DRW_batch_uniform_buffer(batch, "depthtex", SCENE_DEPTH, depthloc);
-       DRW_batch_uniform_texture(batch, "matcaps", data.matcap_array, 
matcaploc);
-       DRW_batch_uniform_int(batch, "matcap_index", &storage->matcap_id, 1);
-       DRW_batch_uniform_mat4(batch, "WinMatrix", (float *)data.winmat);
-       DRW_batch_uniform_vec4(batch, "viewvecs", (float *)data.viewvecs, 3);
-       DRW_batch_uniform_vec4(batch, "ssao_params", data.ssao_params, 1);
+       DRW_shgroup_uniform_ivec2(grp, "screenres", DRW_viewport_size_get(), 1);
+       DRW_shgroup_uniform_buffer(grp, "depthtex", SCENE_DEPTH, depthloc);
+       DRW_shgroup_uniform_texture(grp, "matcaps", data.matcap_array, 
matcaploc);
+       DRW_shgroup_uniform_int(grp, "matcap_index", matcap_id, 1);
+       DRW_shgroup_uniform_mat4(grp, "WinMatrix", (float *)data.winmat);
+       DRW_shgroup_uniform_vec4(grp, "viewvecs", (float *)data.viewvecs, 3);
+       DRW_shgroup_uniform_vec4(grp, "ssao_params", data.ssao_params, 1);
 
        if (use_rot) {
-               DRW_batch_uniform_vec2(batch, "matcap_rotation", (float 
*)storage->matcap_rot, 1);
+               DRW_shgroup_uniform_vec2(grp, "matcap_rotation", matcap_rot, 1);
        }
 
        if (use_hsv) {
-               DRW_batch_uniform_vec3(batch, "matcap_hsv", (float 
*)storage->matcap_hsv, 1);
+               DRW_shgroup_uniform_vec3(grp, "matcap_hsv", matcap_hsv, 1);
        }
 
        if (use_ao) {
-               DRW_batch_uniform_vec3(batch, "matcaps_color", (float 
*)data.matcap_colors, 24);
-               DRW_batch_uniform_vec4(batch, "ssao_params_var", 
storage->ssao_params_var, 1);
-               DRW_batch_uniform_texture(batch, "ssao_jitter", data.jitter_tx, 
jitterloc);
-               DRW_batch_uniform_texture(batch, "ssao_samples", 
data.sampling_tx, sampleloc);
+               DRW_shgroup_uniform_vec3(grp, "matcaps_color", (float 
*)data.matcap_colors, 24);
+               DRW_shgroup_uniform_vec4(grp, "ssao_params_var", 
ssao_params_var, 1);
+#ifndef GTAO
+               DRW_shgroup_uniform_texture(grp, "ssao_jitter", data.jitter_tx, 
jitterloc);
+               DRW_shgroup_uniform_texture(grp, "ssao_samples", 
data.sampling_tx, sampleloc);
+#endif
        }
 
 
-       return batch;
+       return grp;
+}
+
+static void CLAY_update_materials_runtime(MaterialSettingsClay *settings)
+{
+       MaterialDataClayRuntime *runtime_data;
+
+       if (!settings->runtime) {
+               settings->runtime = 
MEM_mallocN(sizeof(MaterialDataClayRuntime), "MaterialDataClayRuntime");
+       }
+
+       runtime_data = settings->runtime;
+
+       /* Update default material */
+       runtime_data->matcap_rot[0] = cosf(settings->matcap_rot * 3.14159f * 
2.0f);
+       runtime_data->matcap_rot[1] = sinf(settings->matcap_rot * 3.14159f * 
2.0f);
+
+       runtime_data->matcap_hsv[0] = settings->matcap_hue + 0.5f;
+       runtime_data->matcap_hsv[1] = settings->matcap_sat * 2.0f;
+       runtime_data->matcap_hsv[2] = settings->matcap_val * 2.0f;
+
+       runtime_data->ssao_params_var[0] = settings->ssao_distance;
+       runtime_data->ssao_params_var[1] = settings->ssao_factor_cavity;
+       runtime_data->ssao_params_var[2] = settings->ssao_factor_edge;
+       runtime_data->ssao_params_var[3] = settings->ssao_attenuation;
+
+       if (settings->matcap_icon < ICON_MATCAP_01 ||
+           settings->matcap_icon > ICON_MATCAP_24)
+       {
+               settings->matcap_icon = ICON_MATCAP_01;
+       }
+
+       runtime_data->matcap_id = matcap_to_index(settings->matcap_icon);
 }
 
-static void clay_populate_passes(CLAY_PassList *passes, const struct bContext 
*C)
+static void CLAY_create_cache(CLAY_PassList *passes, const struct bContext *C)
 {
        SceneLayer *sl = CTX_data_scene_layer(C);
-       DRWBatch *defaultbatch, *depthbatch;
+       DRWShadingGroup *defaultbatch, *depthbatch;
        Object *ob;
 
        /* Depth Pass */
        {
                passes->depth_pass = DRW_pass_create("Depth Pass", 
DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
 
-               depthbatch = DRW_batch_create(data.depth_sh, 
passes->depth_pass, NULL);
+               depthbatch = DRW_shgroup_create(data.depth_sh, 
passes->depth_pass);
        }
 
        /* Clay Pass */
        {
-               passes->clay_pass = DRW_pass_create("Clay Pass", 
DRW_STATE_WRITE_COLOR);
-
+               MaterialDataClayR

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to