import bpy
class CustomRenderEngine(bpy.types.RenderEngine):
# These three members are used by blender to set up the
# RenderEngine; define its internal name, visible name and capabilities.
bl_idname = 'custom_renderer'
bl_label = 'Flat Color Renderer'
bl_use_preview = True
# This is the only method called by blender, in this example
# we use it to detect preview rendering and call the implementation
# in another method.
def render(self, scene):
scale = scene.render.resolution_percentage / 100.0
self.size_x = int(scene.render.resolution_x * scale)
self.size_y = int(scene.render.resolution_y * scale)
if scene.name == 'preview':
self.render_preview(scene)
else:
self.render_scene(scene)
# In this example, we fill the preview renders with a flat green color.
def render_preview(self, scene):
pixel_count = self.size_x * self.size_y
# The framebuffer is defined as a list of pixels, each pixel
# itself being a list of R,G,B,A values
green_rect = [[0.0, 1.0, 0.0, 1.0]] * pixel_count
# Here we write the pixel values to the RenderResult
result = self.begin_result(0, 0, self.size_x, self.size_y)
layer = result.layers[0]
layer.rect = green_rect
self.end_result(result)
# In this example, we fill the full renders with a flat blue color.
def render_scene(self, scene):
pixel_count = self.size_x * self.size_y
# The framebuffer is defined as a list of pixels, each pixel
# itself being a list of R,G,B,A values
blue_rect = [[0.0, 0.0, 1.0, 1.0]] * pixel_count
# Here we write the pixel values to the RenderResult
result = self.begin_result(0, 0, self.size_x, self.size_y)
layer = result.layers[0]
layer.rect = blue_rect
self.end_result(result)
# Register the RenderEngine
bpy.utils.register_class(CustomRenderEngine)
# RenderEngines also need to tell UI Panels that they are compatible
# Otherwise most of the UI will be empty when the engine is selected.
# In this example, we need to see the main render image button and
# the material preview panel.
from bl_ui import properties_render
properties_render.RENDER_PT_render.COMPAT_ENGINES.add('custom_renderer')
del properties_render
from bl_ui import properties_material
properties_material.MATERIAL_PT_preview.COMPAT_ENGINES.add('custom_renderer')
del properties_material
base class — bpy_struct
subclasses — CYCLES
Render engine
Type : | string, default “”, (never None) |
---|
Type : | string, default “”, (never None) |
---|
Type : | boolean, default False |
---|
Type : | boolean, default False |
---|
Type : | boolean, default False |
---|
Type : | boolean, default False |
---|
Type : | boolean, default False |
---|
Type : | int in [-inf, inf], default 0, (readonly) |
---|
Type : | int in [-inf, inf], default 0, (readonly) |
---|
Type : | int in [0, inf], default 0 |
---|
Type : | int in [0, inf], default 0 |
---|
Export scene data for render
Render scene into an image
Update on data changes for viewport render
Draw viewport render
Request update call for viewport rendering
tag_redraw
tag_update
begin_result
Parameters: |
|
---|---|
Returns: | Result |
Return type: |
update_result
Parameters: | result (RenderResult) – Result |
---|
end_result
Parameters: |
|
---|
test_break
Returns: | Break |
---|---|
Return type: | boolean |
update_stats
Parameters: |
|
---|
update_progress
Parameters: | progress (float in [0, 1]) – Percentage of render that’s done |
---|
update_memory_stats
Parameters: |
|
---|
report
Parameters: |
|
---|
Inherited Properties
Inherited Functions
|