frame_effect¶
- class janim.items.effect.frame_effect.AppliedGroup(*items: Item, root_only: bool = False, **kwargs)¶
基类:
ItemFrameEffect等类的基础类提供了
apply()和discard()方法用于标记对指定的物件 应用/取消应用 效果- add(*objs, prepend=False, insert=None) Self¶
- remove(*objs) Self¶
- class janim.items.effect.frame_effect.FrameEffect(*items: Item, fragment_shader: str, cache_key: str | None = None, root_only: bool = False, **kwargs)¶
基类:
AppliedGroup将传入的着色器
fragment_shader应用到items上着色器基本格式:
#version 330 core in vec2 v_texcoord; // 传入的纹理坐标 out vec4 f_color; // 输出的颜色 #[JA_FINISH_UP_UNIFORMS] void main() { // 进行处理,例如 f_color = frame_texture(v_texcoord); // 注意:需要用 frame_texture 读取纹理颜色(即 items 的渲染结果) f_color.rgb = 1.0 - f_color.rgb; // 反色 #[JA_FINISH_UP] }
其中
#[JA_FINISH_UP]是一个占位符,JAnim 会在这里做一些额外的操作,前面的#[JA_FINISH_UP_UNIFORMS]与之对应上述代码最核心的是
main中“进行处理”的部分,其余的代码作为固定的写法照抄即可如果懒得抄,可以用
SimpleFrameEffect,这个类只要写“进行处理”这部分就好了,因为它把其余代码都封装了完整示例请参考 基础样例 中的对应代码
- renderer_cls¶
- apply_uniforms(*, optional: bool = False, **kwargs) None¶
- dynamic_uniforms() dict¶
- class janim.items.effect.frame_effect.SimpleFrameEffect(*items: Item, shader: str, uniforms: Iterable[str] = [], cache_key: str | None = None, root_only: bool = False, **kwargs)¶
基类:
FrameEffectFrameEffect的简化封装,具体请参考FrameEffect中的说明备注
如果该着色器代码中出现报错,会显示为
JA_SIMPLE_FRAMEEFFECT_SHADER中出现的