forked from bartvdbraak/blender
Proof-of-concept implementation of Freestyle support for Cycles.
This commit is contained in:
parent
d124bd1cd4
commit
f70e1ad2fb
@ -39,7 +39,7 @@ class RenderFreestyleButtonsPanel():
|
||||
class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Freestyle"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'CYCLES'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
@ -111,7 +111,7 @@ class RENDER_MT_lineset_specials(Menu):
|
||||
|
||||
class RENDERLAYER_PT_freestyle(RenderLayerFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Freestyle"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'CYCLES'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -165,7 +165,7 @@ class RENDERLAYER_PT_freestyle(RenderLayerFreestyleButtonsPanel, Panel):
|
||||
|
||||
class RENDERLAYER_PT_freestyle_lineset(RenderLayerFreestyleEditorButtonsPanel, Panel):
|
||||
bl_label = "Freestyle Line Set"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'CYCLES'}
|
||||
|
||||
def draw_edge_type_buttons(self, box, lineset, edge_type):
|
||||
# property names
|
||||
@ -257,7 +257,7 @@ class RENDERLAYER_PT_freestyle_lineset(RenderLayerFreestyleEditorButtonsPanel, P
|
||||
class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel, Panel):
|
||||
bl_label = "Freestyle Line Style"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'CYCLES'}
|
||||
|
||||
def draw_modifier_box_header(self, box, modifier):
|
||||
row = box.row()
|
||||
|
@ -98,7 +98,7 @@ BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : Str
|
||||
freestyle_scene->r.filtertype = old_scene->r.filtertype;
|
||||
freestyle_scene->r.gauss = old_scene->r.gauss;
|
||||
freestyle_scene->r.dither_intensity = old_scene->r.dither_intensity;
|
||||
BLI_strncpy(freestyle_scene->r.engine, old_scene->r.engine, sizeof(freestyle_scene->r.engine));
|
||||
strcpy(freestyle_scene->r.engine, "BLENDER_RENDER"); // old_scene->r.engine
|
||||
freestyle_scene->r.im_format.planes = R_IMF_PLANES_RGBA;
|
||||
freestyle_scene->r.im_format.imtype = R_IMF_IMTYPE_PNG;
|
||||
BKE_scene_disable_color_management(freestyle_scene);
|
||||
|
@ -234,6 +234,7 @@ void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene,
|
||||
unsigned int lay_override, int sfra, int efra, int tfra);
|
||||
#ifdef WITH_FREESTYLE
|
||||
void RE_RenderFreestyleStrokes(struct Render *re, struct Main *bmain, struct Scene *scene, int render);
|
||||
void RE_RenderFreestyleExternal(struct Render *re);
|
||||
#endif
|
||||
|
||||
/* error reporting */
|
||||
|
@ -647,6 +647,11 @@ int RE_engine_render(Render *re, int do_all)
|
||||
if (type->render)
|
||||
type->render(engine, re->scene);
|
||||
|
||||
#ifdef WITH_FREESTYLE
|
||||
if (re->r.mode & R_EDGE_FRS)
|
||||
RE_RenderFreestyleExternal(re);
|
||||
#endif
|
||||
|
||||
engine->tile_x = 0;
|
||||
engine->tile_y = 0;
|
||||
engine->flag &= ~RE_ENGINE_RENDERING;
|
||||
|
@ -2810,6 +2810,16 @@ void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render
|
||||
}
|
||||
re->result_ok = 1;
|
||||
}
|
||||
|
||||
void RE_RenderFreestyleExternal(Render *re)
|
||||
{
|
||||
if (!re->test_break(re->tbh)) {
|
||||
RE_Database_FromScene(re, re->main, re->scene, re->lay, 1);
|
||||
RE_Database_Preprocess(re);
|
||||
add_freestyle(re, 1);
|
||||
RE_Database_Free(re);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static int do_write_image_or_movie(Render *re, Main *bmain, Scene *scene, bMovieHandle *mh, const char *name_override)
|
||||
|
Loading…
Reference in New Issue
Block a user