base

警告

这部分内容涉及 JAnim 实现原理,可能较为复杂,若没有研究源码的需求,你应酌情阅读

class janim.render.base.Renderer(*args, **kwargs)

基类:object

渲染器的基类

重写 init()render() 以实现具体功能

data_ctx: ContextVar = <ContextVar name='Renderer.data_ctx'>
init() None
render(item) None
static get_u_fix_in_frame(prog: Program) Uniform
static update_fix_in_frame(uniform: mgl.Uniform, item: Item) None
class janim.render.base.RenderData(*, ctx: Context, camera_info: CameraInfo, anti_alias_radius: float)

基类:object

在渲染过程中需要配置的属性

通过 Renderer.data_ctx 进行设置和获取

ctx: Context
camera_info: CameraInfo
anti_alias_radius: float
janim.render.base.set_global_uniforms(ctx: Context, *uniforms: UniformPair) None

设置在每个着色器中都可以访问到的 uniforms (需要在着色器中声明后使用)

janim.render.base.apply_global_uniforms(uniforms: list[UniformPair], prog: Program) None

uniforms 设置到 prog 中,并且跳过 prog 中没有的属性

janim.render.base.get_program(filepath: str) Program

给定相对于 janim 路径的文件位置,自动遍历后缀并读取着色器代码, 例如传入 render/shaders/dotcloud 后,会自动读取以下位置的代码:

  • redner/shaders/dotcloud.vert

  • render/shaders/dotcloud.geom

  • render/shaders/dotcloud.frag

若没有则缺省,但要能创建可用的着色器

注:

  • filepath 对应着色器程序先前已创建过,则会复用先前的对象,否则另外创建新的对象并记录

  • 该方法只能读取 janim 内置的着色器,读取自定义着色器请使用 get_custom_program()

janim.render.base.get_custom_program(filepath: str) Program

给定文件位置自动遍历后缀并读取着色器代码, 例如传入 shaders/yourshader 后,会自动读取以下位置的代码:

  • shaders/yourshader.vert

  • shaders/yourshader.geom

  • shaders/yourshader.frag

若没有则缺省,但要能创建可用的着色器

注:

  • filepath 对应着色器程序先前已创建过,则会复用先前的对象,否则另外创建新的对象并记录

  • 该方法只能读取自定义的着色器,读取 janim 内置着色器请使用 get_program()

janim.render.base.get_compute_shader(filepath: str) ComputeShader

载入指定文件的 ComputeShader, 例如 render/shaders/map_points.comp.glsl 就会载入这个文件

注:若 filepath 对应的 ComputeShader 先前已创建过,则会复用先前的对象,否则另外创建新的对象并记录

janim.render.base.check_pyopengl_if_required(ctx: Context) None