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: | boolean, default False |
|---|
| Type: | boolean, default False |
|---|
| Type: | RenderSettings, (readonly) |
|---|
| 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 |
|---|
| Type: | boolean, default False |
|---|
Export scene data for render
Render scene into an image
Bake passes
| Parameters: |
|
|---|
Update on data changes for viewport render
Draw viewport render
Compile shader script node
Request redraw for viewport rendering
Request update call for viewport rendering
Create render result to write linear floating point render layers and passes
| Parameters: |
|
|---|---|
| Returns: | Result |
| Return type: |
Signal that pixels have been updated and can be redrawn in the user interface
| Parameters: | result (RenderResult) – Result |
|---|
All pixels in the render result have been set and are final
| Parameters: |
|
|---|
Test if the render operation should been canceled, this is a fast call that should be used regularly for responsiveness
| Returns: | Break |
|---|---|
| Return type: | boolean |
Update and signal to redraw render status text
| Parameters: |
|
|---|
Evaluate scene at a different frame (for motion blur)
| Parameters: |
|
|---|
Update progress percentage of render
| Parameters: | progress (float in [0, 1]) – Percentage of render that’s done |
|---|
Update memory usage statistics
| Parameters: |
|
|---|
Report info, warning or error messages
| Parameters: |
|
|---|
Bind GLSL fragment shader that converts linear colors to display space colors using scene color management settings
Unbind GLSL display space shader, must always be called after binding the shader
Test if GLSL display space shader is supported for the combination of graphics card and scene settings
| Returns: | Supported |
|---|---|
| Return type: | boolean |
Inherited Properties
Inherited Functions