Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-02-07 13:20:15 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-02-07 13:31:22 +0300
commit83adc544382689217e19564fd5f2dd62160956cb (patch)
tree1026a590c1079b4907a6cab43e2c5759339c4350 /source/blender/makesdna/DNA_scene_types.h
parentaeb8e81f2741aabc95d14bce7a83cef45481959c (diff)
Clay-Engine (merge clay-engine)
Initial work by Clément Foucault with contributions from Dalai Felinto (mainly per-collection engine settings logic, and depsgraph iterator placeholder). This makes Blender require OpenGL 3.3. Which means Intel graphic card and OSX will break. Disable CLAY_ENGINE in CMake in those cases. This is a prototype render engine intended to help the design of real render engines. This is mainly an engine with enphasis in matcap and ambient occlusion. Implemented Features -------------------- * Clay Render Engine, following the new API, to be used as reference for future engines * A more complete Matcap customization with more options * Per-Collection render engine settings * New Ground Truth AO - not enabled Missing Features ---------------- * Finish object edit mode - Fix shaders to use new matrix - Fix artifacts when edge does off screen - Fix depth issue - Selection sillhouette - Mesh wires - Use mesh normals (for higher quality matcap) - Non-Mesh objects drawing - Widget drawing - Performance issues * Finish mesh edit mode - Derived-Mesh-less edit mode API (mesh_rende.c) * General edit mode - Per-collection edit mode settings * General engines - Per-collection engine settings (they are their, but they still need to be flushed by depsgraph, and used by the drawing code)
Diffstat (limited to 'source/blender/makesdna/DNA_scene_types.h')
-rw-r--r--source/blender/makesdna/DNA_scene_types.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index ba5e50ec441..6e56824b176 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -48,6 +48,7 @@ extern "C" {
#include "DNA_freestyle_types.h"
#include "DNA_gpu_types.h"
#include "DNA_layer_types.h"
+#include "DNA_material_types.h"
#include "DNA_userdef_types.h"
struct CurveMapping;
@@ -539,6 +540,50 @@ typedef enum BakePassFilter {
#define R_BAKE_PASS_FILTER_ALL (~0)
/* *************************************************************** */
+/* Engine Settings */
+
+typedef struct RenderEngineSettings {
+ struct RenderEngineSettings *next, *prev;
+ char name[32]; /* engine name */
+ void *data;
+} RenderEngineSettings;
+
+/* Render Data */
+typedef struct RenderEngineSettingsClay {
+ /* Use same layout as MaterialEngineSettingsClay so this struct
+ * can be used as Material Settings. */
+ short type;
+ short matcap_icon; /* Icon ID */
+
+ float matcap_rot;
+ float matcap_hue;
+ float matcap_sat;
+ float matcap_val;
+
+ float ssao_distance;
+ float ssao_attenuation;
+ float ssao_factor_cavity;
+ float ssao_factor_edge;
+
+ short flag;
+ short pad;
+ int ubo_index;
+ /* end of MaterialEngineSettingsClay */
+
+ /* Global Settings */
+ short options;
+ short pad1;
+ int ssao_samples;
+ int pad2[2];
+} RenderEngineSettingsClay;
+
+/* RenderEngineSettingsClay.options */
+typedef enum ClayFlagSettings {
+ CLAY_USE_AO = (1 << 0),
+ CLAY_USE_HSV = (1 << 1),
+} ClayFlagSettings;
+
+/* *************************************************************** */
/* Render Data */
typedef struct RenderData {
@@ -1707,6 +1752,9 @@ typedef struct Scene {
struct SceneCollection *collection;
int active_layer;
int pad4;
+
+ ListBase engines_settings; /* RenderEngineSettings */
+ int pad5[2];
} Scene;
/* **************** RENDERDATA ********************* */
@@ -1895,6 +1943,7 @@ enum {
/* scene->r.engine (scene.c) */
extern const char *RE_engine_id_BLENDER_RENDER;
extern const char *RE_engine_id_BLENDER_GAME;
+extern const char *RE_engine_id_BLENDER_CLAY;
extern const char *RE_engine_id_CYCLES;
/* **************** SCENE ********************* */