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
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: |
|
---|
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