base¶
警告
这部分内容涉及 JAnim 实现原理,可能较为复杂,若没有研究源码的需求,你应酌情阅读
- class janim.render.base.Renderer(*args, **kwargs)¶
基类:
object渲染器的基类
- data_ctx: ContextVar = <ContextVar name='Renderer.data_ctx'>¶
- init() None¶
- render(item) None¶
- static get_u_fix_in_frame(prog: Program) Uniform¶
- 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¶