
Jianying Editor
- 1.4k installs
- 2.7k repo stars
- Updated June 12, 2026
- luoluoluo22/jianying-editor-skill
jianying-editor is an agent skill for 剪映 (jianying) ai自动化剪辑的高级封装 api (jywrapper),提供开箱即用的 python 接口,支持录屏、素材导入、字幕生成、web 动效合成及项目导出。全面适配 macos (apple silicon/intel) 与 windows,支持 v5.9+ (draft_info.json).
About
The jianying-editor skill is designed for 剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json). JianYing Editor Skill Use this skill when the user wants to automate video editing, generate drafts, or manipulate media assets in JianYing Pro. 脚本位置:禁止在 Skill 内部目录创建剪辑脚本。所有的剪辑逻辑实现代码(.py 脚本)必须存放在用户当前项目的根目录(或子目录,如 scripts/),以保持 Skill 库的纯净和可移植性。 2. Invoke when the user asks about jianying editor or related SKILL.md workflows.
- rules/setup.md - Mandatory initialization code for all scripts.
- rules/core.md - Core operations: Saving, Exporting, and Draft management.
- rules/cli.md - CLI contracts and machine-readable output conventions.
- rules/media.md - Importing assets & AI Video Analysis Optimization (30m/360p).
- rules/text.md - Adding Subtitles, Text, and Captions.
Jianying Editor by the numbers
- 1,422 all-time installs (skills.sh)
- +42 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #282 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
jianying-editor capabilities & compatibility
- Capabilities
- rules/setup.md mandatory initialization code f · rules/core.md core operations: saving, exporti · rules/cli.md cli contracts and machine readabl · rules/media.md importing assets & ai video ana
- Use cases
- frontend
What jianying-editor says it does
剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json) 架构、工程自修复、智能配音字幕及录屏变焦
剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json)
npx skills add https://github.com/luoluoluo22/jianying-editor-skill --skill jianying-editorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.4k |
|---|---|
| repo stars | ★ 2.7k |
| Security audit | 0 / 3 scanners passed |
| Last updated | June 12, 2026 |
| Repository | luoluoluo22/jianying-editor-skill ↗ |
How do I 剪映 (jianying) ai自动化剪辑的高级封装 api (jywrapper),提供开箱即用的 python 接口,支持录屏、素材导入、字幕生成、web 动效合成及项目导出。全面适配 macos (apple silicon/intel) 与 windows,支持 v5.9+ (draft_info.json)?
剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json).
Who is it for?
Developers using jianying editor workflows documented in SKILL.md.
Skip if: Skip when the task falls outside jianying-editor scope or needs a different stack.
When should I use this skill?
User asks about jianying editor or related SKILL.md workflows.
What you get
Completed jianying-editor workflow with documented commands, files, and expected deliverables.
- Automated editor scripts
- Batch export outputs
- Validated API call results
By the numbers
- Ships 4 named Python scripts: api_validator.py, asset_search.py, auto_exporter.py, build_cloud_music_library.py
- CI runs on windows-latest with Python 3.12, ruff, and black
Files
JianYing Editor Skill
Use this skill when the user wants to automate video editing, generate drafts, or manipulate media assets in JianYing Pro.
Agent execution playbook: docs/agent-playbook.md Minimal command SOP: docs/minimal-command-sop.md Natural language usage guide: usage.md Draft inspector CLI: python <SKILL_ROOT>/scripts/draft_inspector.py list --limit 20 python <SKILL_ROOT>/scripts/draft_inspector.py summary --name "DraftName" python <SKILL_ROOT>/scripts/draft_inspector.py show --name "DraftName" --kind content --json For generic editing requests, always follow the "Quick Edit Runtime Template" and "Acceptance Checklist" in that playbook.
🚨 重要开发原则 (CRITICAL DEVELOPER RULES)
1. 脚本位置:禁止在 Skill 内部目录创建剪辑脚本。所有的剪辑逻辑实现代码(.py 脚本)必须存放在用户当前项目的根目录(或子目录,如 scripts/),以保持 Skill 库的纯净和可移植性。 2. 版本与架构:
- 双平台适配:已全面支持 MacOS (路径探测/录屏) 与 Windows。
- Auto-healing:支持 v5.9+ (
draft_info.json)。若草稿损坏或版本冲突,使用overwrite=True初始化JyProject可触发自动修复。
3. 配乐选择:
- 简单演示使用默认音乐。实际项目,应优先检索并推荐
data/cloud_music_library.csv中的相关曲目,或根据视频主题(如“科技”、“温暖”)进行关键词过滤。 - 询问用户:“我发现了几首符合主题的云端音乐,要不要试试?(如:
Illuminate- 科技感)”。
规则指南 (Rules)
Read the individual rule files for specific tasks and constraints:
- rules/setup.md - Mandatory initialization code for all scripts.
- rules/core.md - Core operations: Saving, Exporting, and Draft management.
- rules/cli.md - CLI contracts and machine-readable output conventions.
- rules/media.md - Importing assets & AI Video Analysis Optimization (30m/360p).
- rules/text.md - Adding Subtitles, Text, and Captions.
- rules/keyframes.md - Advanced: Adding Keyframe animations.
- rules/effects.md - Searching for and applying Filters, Effects, and Transitions.
- rules/recording.md - New: Screen Recording & Smart Zoom automation.
- rules/web-vfx.md - Advanced: Web-to-Video generation.
- rules/generative.md - Chain of Thought for generative editing.
- rules/audio-voice.md - New: TTS Voiceover & BGM sourcing.
🎯 Agent Quick Routing
- 云端视频 + 云端音乐:
rules/media.md+rules/audio-voice.md->examples/cloud_video_music_tts_demo.py - 智能配音与字幕 (Script-to-Video):
rules/text.md+rules/audio-voice.md-> 核心 APIadd_narrated_subtitles - 旁白与字幕对齐:
rules/text.md+rules/audio-voice.md->examples/cloud_video_music_tts_demo.py - 录屏与智能变焦:
rules/recording.md->tools/recording/recorder.py - 批量导出/无头导出:
rules/core.md+rules/cli.md->examples/robust_auto_export.py - 影视解说生成:
rules/generative.md->scripts/movie_commentary_builder.py
📖 经典示例 (Examples)
Refer to these for complete workflows:
- examples/my_first_vlog.py - A complete vlog creation demo with background music and animated text.
- examples/simple_clip_demo.py - Quick-start tutorial for basic cutting and track management.
- examples/compound_clip_demo.py - New: Professional nested project (Compound Clip) automation.
- examples/cloud_video_music_tts_demo.py - Cloud video + cloud BGM + TTS/subtitle alignment.
- examples/web_to_video_intro_demo.py - Web-to-Video intro demo (HTML animation -> timeline clip).
- examples/robust_auto_export.py - Stable export workflow and failure handling.
- examples/auto_exposure_align_demo.py - CV-assisted exposure alignment workflow.
- examples/video_transcribe_and_match.py - Advanced: AI-driven workflow (Transcribe Video -> Match B-Roll via AI semantics -> Assemble Draft).
🧠 提示词与集成工具 (Prompts & Integrated Tools)
Use these templates and scripts for complex tasks:
- Asset Search: Find filters, transitions, and animations by Chinese/English name:
python <SKILL_ROOT>/scripts/asset_search.py "复古" -c filters- Movie Commentary Builder: Generate 60s commentary videos from a storyboard JSON:
python <SKILL_ROOT>/scripts/movie_commentary_builder.py --video "video.mp4" --json "storyboard.json"- Sync Native Assets: Import your favorited/played BGM/Styles from JianYing App to the Skill:
python <SKILL_ROOT>/scripts/sync_jy_assets.py
# Index cloud materials from your existing drafts
python <SKILL_ROOT>/scripts/build_cloud_music_library.py
python <SKILL_ROOT>/scripts/build_cloud_text_styles_library.py- README to Tutorial: Convert a project's README.md into a full installation tutorial video script:
- Read prompt:
prompts/readme_to_tutorial.md - Inject content into
{{README_CONTENT}}variable - Screen Recorder & Smart Zoom: Record your screen and auto-apply zoom keyframes:
python <SKILL_ROOT>/tools/recording/recorder.py
# Web preview capture (high performance)
python <SKILL_ROOT>/scripts/web_recorder.py --url "http://localhost:3000" --duration 5
# Or apply zoom to existing video:
python <SKILL_ROOT>/scripts/jy_wrapper.py apply-zoom --name "Project" --video "v.mp4" --json "e.json"- Draft Inspector: Examine draft structure and metadata (v5.9+ support):
python <SKILL_ROOT>/scripts/draft_inspector.py list --limit 20
python <SKILL_ROOT>/scripts/draft_inspector.py summary --name "DraftName"- Auto Exporter: Headless export of a draft to MP4/SRT:
python <SKILL_ROOT>/scripts/auto_exporter.py "DraftName" "output.mp4" --res 1080 --fps 60
# For SRT only:
python <SKILL_ROOT>/scripts/jy_wrapper.py export-srt --name "DraftName"- Template Clone & Replacer: 安全克隆模板并批量替换物料 (防止损坏原模板):
# 克隆模板生成新项目
python <SKILL_ROOT>/scripts/jy_wrapper.py clone --template "酒店模板" --name "客户A_副本"- API Validator: Run a quick diagnostic of your environment:
python <SKILL_ROOT>/scripts/api_validator.py🚀 快速开始示例
import os
import sys
# 1. 环境初始化 (必须同步到脚本开头,支持 Win/Mac)
current_dir = os.path.dirname(os.path.abspath(__file__))
env_root = os.getenv("JY_SKILL_ROOT", "").strip()
# 探测 Skill 路径 (支持 Antigravity, Trae, Claude 等)
skill_root = next((p for p in [
env_root,
os.path.join(current_dir, ".agent", "skills", "jianying-editor"),
os.path.join(current_dir, ".trae", "skills", "jianying-editor"),
os.path.join(current_dir, ".claude", "skills", "jianying-editor"),
os.path.join(current_dir, "skills", "jianying-editor"),
os.path.abspath(".agent/skills/jianying-editor"),
os.path.abspath(".trae/skills/jianying-editor"),
os.path.abspath(".claude/skills/jianying-editor"),
os.path.abspath("skills/jianying-editor"),
os.path.dirname(current_dir)
] if p and os.path.exists(os.path.join(p, "scripts", "jy_wrapper.py"))), None)
if not skill_root: raise ImportError("Could not find jianying-editor skill root.")
sys.path.insert(0, os.path.join(skill_root, "scripts"))
from jy_wrapper import JyProject
if __name__ == "__main__":
# 2. 初始化工程 (支持 v5.9+ 及自修复)
project = JyProject("New AI Video", overwrite=True)
assets_dir = os.path.join(skill_root, "assets")
# 3. 智能配音与字幕 (One-click Script-to-Video)
project.add_narrated_subtitles(
text="欢迎使用剪映自动化 Skill。这是一个全面适配 MacOS 的进阶版本。",
speaker="zh_female_xiaopengyou"
)
# 4. 导入额外素材
project.add_media_safe(os.path.join(assets_dir, "video.mp4"), "0s")
project.add_media_safe(os.path.join(assets_dir, "audio.mp3"), "0s", track_name="Audio")
# 5. 添加带动画的标题
project.add_text_simple("剪映自动化开启", start_time="1s", duration="3s", anim_in="复古打字机")
project.save()🛠️ 初始化与项目规范 (Initialization & Project Rules)
在初始化 JyProject 时,请务必根据主视频素材的比例设置分辨率。默认值为横屏 (1920x1080)。
🚨 脚本存放位置规范
禁止在 Skill 安装目录下创建你的业务剪辑脚本。
- 正确做法:将你的剪辑 Python 脚本放在项目的根目录。
- 原因:Skill 目录应该只包含工具集源码,便于后续
git pull升级。业务代码混入会导致版本管理混乱。
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml,json,toml}]
indent_size = 2
Summary
- What changed?
- Why is this needed?
Scope
- Affected modules/files:
- Breaking changes: yes/no
Validation
- [ ]
ruff check scripts tests tools - [ ]
black --check scripts tests tools - [ ]
python -m pytest tests/test_wrapper.py -q - [ ]
python tools/check_repo_hygiene.py - [ ]
python tools/validate_data_schema.py
Risk and Rollback
- Risk level:
- Rollback plan:
Checklist
- [ ] Docs updated (
SKILL.md/rules//docs/api.md) if API/behavior changed - [ ] No runtime artifacts committed
name: CI
on:
push:
branches: ["**"]
pull_request:
jobs:
test:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install ruff black
- name: Lint
run: |
ruff check `
scripts/api_validator.py `
scripts/asset_search.py `
scripts/auto_exporter.py `
scripts/build_cloud_music_library.py `
scripts/cloud_manager.py `
scripts/universal_tts.py `
scripts/utils/cli_protocol.py `
scripts/utils/config.py `
scripts/utils/errors.py `
scripts/utils/logging_utils.py `
tests/test_wrapper.py `
tools/check_repo_hygiene.py `
tools/validate_data_schema.py
- name: Run unit tests
run: |
python -m unittest -v
working-directory: tests
- name: Format check
run: |
black --check `
scripts/api_validator.py `
scripts/asset_search.py `
scripts/auto_exporter.py `
scripts/build_cloud_music_library.py `
scripts/cloud_manager.py `
scripts/universal_tts.py `
scripts/utils/cli_protocol.py `
scripts/utils/config.py `
scripts/utils/errors.py `
scripts/utils/logging_utils.py `
tests/test_wrapper.py `
tools/check_repo_hygiene.py `
tools/validate_data_schema.py
- name: Repo hygiene
run: |
python tools/check_repo_hygiene.py
- name: Data schema
run: |
python tools/validate_data_schema.py
# Python
__pycache__/
*.py[cod]
*.pyo
*.bak
# IDE
.vscode/
.idea/
# OS
Thumbs.db
Desktop.ini
.DS_Store
# Build / temp
*.egg-info/
dist/
build/
*.log
test_run_artifacts/
cloud_cache/
scripts/cloud_cache/
*.webm
# Assets (large synced files - keep tracked manually)
# assets/jy_sync/
scratch/repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.2
hooks:
- id: ruff
args: ["--fix"]
- id: ruff-format
- repo: https://github.com/psf/black
rev: 25.1.0
hooks:
- id: black
- repo: local
hooks:
- id: pytest-wrapper
name: pytest (wrapper quick suite)
entry: python -m pytest tests/test_wrapper.py -q
language: system
pass_filenames: false
{
"effect": {
"Link": [
{
"type": "InfoSticker"
}
]
},
"version": "6.3.0"
}{
"filemap" :
{
"prefab" : "effect.prefab"
},
"requirement" :
{
"3dFaceMeshPerspective" : false,
"Bg" : false,
"FaceAttributes" : false,
"faceVerify" : false,
"hairColor" : false,
"handDetect" : false
},
"tag" : "AMG_1385374762513267573112617073645169376929"
}%SerializedFormat%@
�����?�I���������ʒa�������F�|ܛ���?v�Vx���"��ڰF�|ܛ��noFilter_entity�+ q'�|A��:Cf
��'��x���"�v�� g���%F�|ܛ����#j q'�|]�� q'�|�>�x q'�|~��ܛ��夏日游园会7UhG��H@I�fܛ��9�}ܛ��9sE�G���G��G���
>zG��N�� q'�|p.q2 q'�|�M�|s��|0�������0�2D��C�J�G��@�@I�V�`�'�?�?�?�?'�;�P`�'@�?�w/ q'�|JI`�`�'�?9фP`�'���=��̽�6��G������?�k(�G��@�z�?���' q'�|ŚQkG������?����G������?d�i�`�'�?��.� q'�|����`�'�?�?+lG���?���L�}U�05���������'F�|ܛ��I�V$"�
��o?���>��>�?����G������?'�;�P`�'@�?�%TRx���"��� F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?��z?��`?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|ԋ�h6�$�F�|ܛ����WG���Q��?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'��� q'�|Nߊ:Cf
�Ey�'EJ�!��R�image/1.png���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��@�z�?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'o���� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/shadow.materialc|�|6�$�F�|ܛ����WG��@�z�?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?��?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��@�z�?LK;P`�'
ף���� q'�|Nߊ:Cf
E��[ q'�|��+G���?��4G���?N-\� q'�|�hn�P`�' �h�F�|ܛ��SDFTextMeshRenderer��#j q'�|ީyx���"G�߮:Cf
�x q'�|6�7 q'�|v� q'�|���:Cf
I�gc�#a��F�|ܛ��noFilter_transform��#j q'�|E+��q`�'�za�q`�'�?�?�?�tAn��6��?.�x���"%SerializedFormat%@
10 UUS10������� F�|ܛ��W�� q'�|o�Y q'�|Oo=��M��@n=��M��OV)BTH�w������x������v������%SerializedFormat%@
��ha���a�����F�|ܛ��
Sticker_empty��ܛ��V4�?v��x���"��ڰF�|ܛ��
Camera_entity�X�v�� �+ q'�|A��:Cf
��'��x���"�v�� �qA�F�|ܛ��
Camera_camera��#j q'�|��{a�P��:Cf
��|0�Qo��Y$"�
�t?��#�@�4KF q'�|%��s��|�?�? �|G��N@y�,2G���?�-�G������?x,�|G��@�@&�1EJ�!��R�share://input.textureVl#X+EJ�!j���rt/outputTex.rt�;� q'�|���:Cf
��ڰF�|ܛ��noFilter_entity�X�v�� �+ q'�|A��:Cf
��'��x���"�v�� g���%F�|ܛ����#j q'�|]�� q'�|�>�x q'�|~��ܛ��夏日游园会7UhG��H@I�fܛ��9�}ܛ��9sE�G���G��G���
>zG��N�� q'�|p.q2 q'�|�M�|s��|0�������0�2D��C�J�G��@�@I�V�`�'�?�?�?�?'�;�P`�'@�?�w/ q'�|JI`�`�'�?9фP`�'���=��̽�6��G������?�k(�G��@�z�?���' q'�|ŚQkG������?����G������?d�i�`�'�?��.� q'�|����`�'�?�?+lG���?���L�}U�05���������'F�|ܛ��I�V$"�
��o?���>��>�?����G������?'�;�P`�'@�?�%TRx���"��� F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?��z?��`?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|ԋ�h6�$�F�|ܛ����WG���Q��?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'��� q'�|Nߊ:Cf
�Ey�'EJ�!��R�image/1.png���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��@�z�?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'o���� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/shadow.materialc|�|6�$�F�|ܛ����WG��@�z�?,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?�?�?��?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��@�z�?LK;P`�'
ף���� q'�|Nߊ:Cf
E��[ q'�|��+G���?��4G���?N-\� q'�|�hn�P`�' �h�F�|ܛ��SDFTextMeshRenderer��#j q'�|ީyx���"G�߮:Cf
�x q'�|6�7 q'�|v� q'�|���:Cf
S�a| q'�|{l��c�#2r*��:�U�����:�a��F�|ܛ��Camera_transform��#j q'�|E+��q`�' A�za�q`�'�?�?�?�tAn��6��?.�x���"a��F�|ܛ��noFilter_transform��#j q'�|E+��q`�'�za�q`�'�?�?�?�tAn��6��?.�x���"%SerializedFormat%@
t�K�lt�K�F�|ܛ��
sprite_mat44�,2EJ�!��Bxshader/effect.xshader2��l���F�| ܛ��sprite_propertySheetY�!c�#��qc�#���qc�#Sg�qc�#Y[�c�#���c�#ή�c�#J-��:Cf
�T=x���"�!c�#%SerializedFormat%@
t�K̡t�K�F�|ܛ��
sprite_mat44�,2EJ�!��Bxshader/shadow.xshader2�����F�| ܛ��sprite_propertySheetY�!c�#��qc�#���qc�#Sg�qc�#
_ShadowOffsetP`�'���=��̽Y[�c�#���c�#ή�c�#J-��:Cf
�T=x���"�!c�#BLUR:Cf
%SerializedFormat%@
j���Uj���F�|ܛ�����:Cf
�ވ�:Cf
��I:Cf
k��K�x\*AJ�!��}~��"O�Oo=��M��@n=��M��OV)BTH�w������x������v��������=��, ��SS���\� q'�|{
"app_params" :
{
"detectFlags" : "face_240_detect",
"faceModelName" : "perfect2",
"facetips" : 1,
"innerfilter" : true
},
"dev_version" : "10.4.0",
"min_version" : "10.24.0",
"systemList" :
[
"BehaviorSystem",
"CameraSystem",
"EventSystem",
"MeshRendererSystem",
"SDFTextSystem",
"TransformSystem"
],
"type" : "amazing",
"version" : "0.1"
}%SerializedFormat%@
������� F�|ܛ��W�� q'�|o�Y q'�|Oo=��M��@n=��M��OV)BTH�w������x������v������#version 300 es
precision highp float;
in vec2 uv0;
layout(location=0) out vec4 FragColor;
uniform sampler2D _MainTex;
void main()
{
FragColor = vec4(0.0, 0.0, 0.0, 0.0);
gl_FragDepth = 1.0;
}#version 300 es
precision lowp float;
in vec2 uv0;
in vec2 uv1;
in vec2 uv2;
in vec2 uv4; // random scale
in vec2 uv5;
in vec2 uv6;
in vec4 chcolor;
layout(location = 0) out vec4 FragColor;
uniform sampler2D _MainTex;
#ifdef TEXTURE_LEVEL
uniform sampler2D _Diffuse;
#endif
uniform vec4 _Color1;
uniform vec4 _Color1_2;
uniform vec4 _Color2;
uniform vec4 _Color2_3;
uniform vec4 _Color3;
uniform vec4 _ControlPercent;
uniform vec4 _ColorPercent;
uniform vec4 _AngleVec;
uniform float _Scale;
uniform vec4 _Outline1Color1;
uniform vec4 _Outline1Color1_2;
uniform vec4 _Outline1Color2;
uniform vec4 _Outline1Color2_3;
uniform vec4 _Outline1Color3;
uniform vec4 _Outline1ControlPercent;
uniform vec4 _Outline1ColorPercent;
uniform vec4 _Outline1AngleVec;
uniform float _Outline1Scale;
uniform vec4 _Outline2Color1;
uniform vec4 _Outline2Color1_2;
uniform vec4 _Outline2Color2;
uniform vec4 _Outline2Color2_3;
uniform vec4 _Outline2Color3;
uniform vec4 _Outline2ControlPercent;
uniform vec4 _Outline2ColorPercent;
uniform vec4 _Outline2AngleVec;
uniform float _Outline2Scale;
uniform vec4 _Outline3Color1;
uniform vec4 _Outline3Color1_2;
uniform vec4 _Outline3Color2;
uniform vec4 _Outline3Color2_3;
uniform vec4 _Outline3Color3;
uniform vec4 _Outline3ControlPercent;
uniform vec4 _Outline3ColorPercent;
uniform vec4 _Outline3AngleVec;
uniform float _Outline3Scale;
uniform vec4 _Inline1Color1;
uniform vec4 _Inline1Color1_2;
uniform vec4 _Inline1Color2;
uniform vec4 _Inline1Color2_3;
uniform vec4 _Inline1Color3;
uniform vec4 _Inline1ControlPercent;
uniform vec4 _Inline1ColorPercent;
uniform vec4 _Inline1AngleVec;
uniform float _Inline1Scale;
uniform float _Smoothing;
uniform vec2 _ShadowScale;
uniform float _AnimAlpha;
//
const vec4 bitSh = vec4(256. * 256. * 256., 256. * 256., 256., 1.);
const vec4 bitMsk = vec4(0., vec3(1. / 256.0));
const vec4 bitShifts = vec4(1.) / bitSh;
float unpack(vec4 color) { return dot(color, bitShifts); }
const vec2 bitSh16 = vec2(256., 1.);
const vec2 bitMsk16 = vec2(0., 1. / 256.);
const vec2 bitShifts16 = vec2(1.) / bitSh16;
float unpack16(vec2 color) { return dot(color, bitShifts16); }
float linearstep(float edge0, float edge1, float x) {
float t = (x - edge0) / (edge1 - edge0);
return clamp(t, 0.0, 1.0);
}
void main() {
float ktv_u = ((uv0.x - uv1.x) / (uv2.x - uv1.x));
float ktv_v = ((uv0.y - uv1.y) / (uv2.y - uv1.y));
float ktvDist = ktv_u * uv6.x + ktv_v * uv6.y;
float alpha_less = step(uv5.y, 0.0);
float alpha_greater = 1.0 - alpha_less;
float ktv_right = step(ktvDist, uv5.x);
float ktv_alpha = (1.0 - ktv_right) * alpha_less + ktv_right * alpha_greater;
//
float x;
vec4 cc;
vec4 diff;
float alpha;
float l;
float gradDist;
float grad_u = ((uv0.x - uv1.x) / (uv2.x - uv1.x) - 0.14) / 0.72;
float grad_v = ((uv0.y - uv1.y) / (uv2.y - uv1.y) - 0.14) / 0.72;
#ifdef TEXTURE_LEVEL
diff = texture(_Diffuse, vec2(uv4.x, 1.0 - uv4.y)) * _AnimAlpha;
#endif
#ifdef BLUR
float distance = unpack16(texture(_MainTex, uv0).ba);
float inner_dis = unpack16(texture(_MainTex, uv0 + _ShadowScale).ba);
#else
float distance = unpack16(texture(_MainTex, uv0).rg);
float inner_dis = unpack16(texture(_MainTex, uv0 + _ShadowScale).rg);
#endif
float smoothing_init = 0.6 * fwidth(distance);
float smoothing = smoothing_init + _Smoothing;
//--------------------------------------------------
//
alpha = 0.0;
FragColor = vec4(1.0, 1.0, 1.0, 1.0);
#ifdef INLINE1
cc = _Inline1Color1;
//
#ifdef INLINE1COLOR2
gradDist = ((grad_u - 0.5) * _InlineAngleVec.r + (grad_v - 0.5) * _InlineAngleVec.g) /
_InlineAngleVec.b +
0.5;
#ifdef INLINE1LINEAR
x = clamp(gradDist, _Inline1ColorPercent.x, _Inline1ControlPercent.x);
x = (x - _Inline1ColorPercent.x) /
(_Inline1ControlPercent.x - _Inline1ColorPercent.x);
cc = mix(cc, _Inline1Color1_2, x);
x = clamp(gradDist, _Inline1ControlPercent.x, _Inline1ColorPercent.y);
x = (x - _Inline1ControlPercent.x) /
(_Inline1ColorPercent.y - _Inline1ControlPercent.x);
cc = mix(cc, _Inline1Color2, x);
#else
x = linearstep(_Inline1ControlPercent.x - 0.4 * smoothing,
_Inline1ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Inline1Color2, x);
#endif // INLINE1LINEAR
#ifdef INLINE1COLOR3
#ifdef INLINE1LINEAR
x = clamp(gradDist, _Inline1ColorPercent.y _Inline1ControlPercent.y);
x = (x - _Inline1ColorPercent.y) /
(_Inline1ControlPercent.y - _Inline1ColorPercent.y);
cc = mix(cc, _Inline1Color2_3, x);
x = clamp(gradDist, _Inline1ControlPercent.y, _Inline1ColorPercent.z);
x = (x - _Inline1ControlPercent.y) /
(_Inline1ColorPercent.z - _Inline1ControlPercent.y);
cc = mix(cc, _Inline1Color3, x);
#else
x = linearstep(_Inline1ControlPercent.y - 0.4 * smoothing,
_Inline1ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Inline1Color3, x);
#endif // INLINE1LINEAR
#endif // INLINE1COLOR3
#endif // INLINE1COLOR2
//
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 1)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//
l = clamp(1.0 - _Inline1Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0 - _Inline1Scale + smoothing, distance);
#endif // INLINE1
//------------------------------------------------
cc = _Color1;
#ifdef COLOR2
gradDist = ((grad_u - 0.5) * _AngleVec.r + (grad_v - 0.5) * _AngleVec.g) /
_AngleVec.b +
0.5;
#ifdef LINEAR
x = clamp(gradDist, _ColorPercent.x, _ControlPercent.x);
x = (x - _ColorPercent.x) / (_ControlPercent.x - _ColorPercent.x);
cc = mix(cc, _Color1_2, x);
x = clamp(gradDist, _ControlPercent.x, _ColorPercent.y);
x = (x - _ControlPercent.x) / (_ColorPercent.y - _ControlPercent.x);
cc = mix(cc, _Color2, x);
#else
x = linearstep(_ControlPercent.x - 0.4 * smoothing,
_ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Color2, x);
#endif // LINEAR
#ifdef COLOR3
#ifdef LINEAR
x = clamp(gradDist, _ColorPercent.y, _ControlPercent.y);
x = (x - _ColorPercent.y) / (_ControlPercent.y - _ColorPercent.y);
cc = mix(cc, _Color2_3, x);
x = clamp(gradDist, _ControlPercent.y, _ColorPercent.z);
x = (x - _ControlPercent.y) / (_ColorPercent.z - _ControlPercent.y);
cc = mix(cc, _Color3, x);
#else
x = linearstep(_ControlPercent.y - 0.4 * smoothing,
_ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Color3, x);
#endif // LINEAR
#endif // COLOR3
#endif // COLOR2
//
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 1)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//
l = clamp(1.0 - _Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0 - _Scale + smoothing, distance);
#ifdef OUTLINE1
cc = _Outline1Color1;
//
#ifdef OUTLINE1COLOR2
gradDist = ((grad_u - 0.5f) * _Outline1AngleVec.r + (grad_v - 0.5) * _Outline1AngleVec.g) /
_Outline1AngleVec.b +
0.5;
#ifdef OUTLINE1LINEAR
x = clamp(gradDist, _Outline1ColorPercent.x, _Outline1ControlPercent.x);
x = (x - _Outline1ColorPercent.x) /
(_Outline1ControlPercent.x - _Outline1ColorPercent.x);
cc = mix(cc, _Outline1Color1_2, x);
x = clamp(gradDist, _Outline1ControlPercent.x, _Outline1ColorPercent.y);
x = (x - _Outline1ControlPercent.x) /
(_Outline1ColorPercent.y - _Outline1ControlPercent.x);
cc = mix(cc, _Outline1Color2, x);
#else
x = linearstep(_Outline1ControlPercent.x - 0.4 * smoothing,
_Outline1ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline1Color2, x);
#endif // OUTLINE1LINEAR
#ifdef OUTLINE1COLOR3
#ifdef OUTLINE1LINEAR
x = clamp(gradDist, _Outline1ColorPercent.y _Outline1ControlPercent.y);
x = (x - _Outline1ColorPercent.y) /
(_Outline1ControlPercent.y - _Outline1ColorPercent.y);
cc = mix(cc, _Outline1Color2_3, x);
x = clamp(gradDist, _Outline1ControlPercent.y, _Outline1ColorPercent.z);
x = (x - _Outline1ControlPercent.y) /
(_Outline1ColorPercent.z - _Outline1ControlPercent.y);
cc = mix(cc, _Outline1Color3, x);
#else
x = linearstep(_Outline1ControlPercent.y - 0.4 * smoothing,
_Outline1ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline1Color3, x);
#endif // OUTLINE1LINEAR
#endif // OUTLINE1COLOR3
#endif // OUTLINE1COLOR2
//
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 2)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//
l = clamp(1.0f - _Outline1Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline1Scale + smoothing, distance);
#ifdef OUTLINE2
cc = _Outline2Color1;
//
#ifdef OUTLINE2COLOR2
gradDist = ((grad_u - 0.5f) * _Outline2AngleVec.r + (grad_v - 0.5) * _Outline2AngleVec.g) /
_Outline2AngleVec.b +
0.5;
#ifdef OUTLINE2LINEAR
x = clamp(gradDist, _Outline2ColorPercent.x, _Outline2ControlPercent.x);
x = (x - _Outline2ColorPercent.x) /
(_Outline2ControlPercent.x - _Outline2ColorPercent.x);
cc = mix(cc, _Outline2Color1_2, x);
x = clamp(gradDist, _Outline2ControlPercent.x, _Outline2ColorPercent.y);
x = (x - _Outline2ControlPercent.x) /
(_Outline2ColorPercent.y - _Outline2ControlPercent.x);
cc = mix(cc, _Outline2Color2, x);
#else
x = linearstep(_Outline2ControlPercent.x - 0.4 * smoothing,
_Outline2ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline2Color2, x);
#endif // OUTLINE2LINEAR
#ifdef OUTLINE2COLOR3
#ifdef OUTLINE2LINEAR
x = clamp(gradDist, _Outline2ColorPercent.y _Outline2ControlPercent.y);
x = (x - _Outline2ColorPercent.y) /
(_Outline2ControlPercent.y - _Outline2ColorPercent.y);
cc = mix(cc, _Outline2Color2_3, x);
x = clamp(gradDist, _Outline2ControlPercent.y, _Outline2ColorPercent.z);
x = (x - _Outline2ControlPercent.y) /
(_Outline2ColorPercent.z - _Outline2ControlPercent.y);
cc = mix(cc, _Outline2Color3, x);
#else
x = linearstep(_Outline2ControlPercent.y - 0.4 * smoothing,
_Outline2ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline2Color3, x);
#endif // OUTLINE2LINEAR
#endif // OUTLINE2COLOR3
#endif // OUTLINE2COLOR2
//
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 3)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//
l = clamp(1.0f - _Outline2Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline2Scale + smoothing, distance);
#ifdef OUTLINE3
cc = _Outline3Color1;
//
#ifdef OUTLINE3COLOR2
gradDist = ((grad_u - 0.5f) * _Outline3AngleVec.r + (grad_v - 0.5) * _Outline3AngleVec.g) /
_Outline3AngleVec.b +
0.5;
#ifdef OUTLINE3LINEAR
x = clamp(gradDist, _Outline3ColorPercent.x, _Outline3ControlPercent.x);
x = (x - _Outline3ColorPercent.x) /
(_Outline3ControlPercent.x - _Outline3ColorPercent.x);
cc = mix(cc, _Outline3Color1_2, x);
x = clamp(gradDist, _Outline3ControlPercent.x, _Outline3ColorPercent.y);
x = (x - _Outline3ControlPercent.x) /
(_Outline3ColorPercent.y - _Outline3ControlPercent.x);
cc = mix(cc, _Outline3Color2, x);
#else
x = linearstep(_Outline3ControlPercent.x - 0.4 * smoothing,
_Outline3ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline3Color2, x);
#endif // OUTLINE3LINEAR
#ifdef OUTLINE3COLOR3
#ifdef OUTLINE3LINEAR
x = clamp(gradDist, _Outline3ColorPercent.y _Outline3ControlPercent.y);
x = (x - _Outline3ColorPercent.y) /
(_Outline3ControlPercent.y - _Outline3ColorPercent.y);
cc = mix(cc, _Outline3Color2_3, x);
x = clamp(gradDist, _Outline3ControlPercent.y, _Outline3ColorPercent.z);
x = (x - _Outline3ControlPercent.y) /
(_Outline3ColorPercent.z - _Outline3ControlPercent.y);
cc = mix(cc, _Outline3Color3, x);
#else
x = linearstep(_Outline3ControlPercent.y - 0.4 * smoothing,
_Outline3ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline3Color3, x);
#endif // OUTLINE3LINEAR
#endif // OUTLINE3COLOR3
#endif // OUTLINE3COLOR2
//
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 4)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//
l = clamp(1.0f - _Outline3Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline3Scale + smoothing, distance);
#endif // OUTLINE3
#endif // OUTLINE2
#endif // OUTLINE1
//
FragColor *= chcolor;
#ifdef INNERSHADOW
//
float inner_alpha =
linearstep(_Scale - smoothing_init, _Scale + smoothing_init, inner_dis);
alpha *= inner_alpha;
#endif
//
alpha *= FragColor.a;
alpha *= ktv_alpha;
// alpha =1.0f;
FragColor = vec4(FragColor.rgb * alpha, alpha);
//FragColor = vec4(diff);
// FragColor = _Color1;
gl_FragDepth = 1.0 - distance;
}
#version 300 es
layout(location = 0) in vec4 position;
layout(location = 1) in vec2 texcoord0;
layout(location = 2) in vec2 texcoord1;
layout(location = 3) in vec2 texcoord2;
layout(location = 4) in vec4 charcolor;
layout(location = 5) in vec2 texcoord3;
layout(location = 6) in vec2 texcoord4;
layout(location = 7) in vec2 texcoord5;
layout(location = 8) in vec2 texcoord6;
out vec2 uv0;
out vec2 uv1;
out vec2 uv2;
out vec2 uv4;
out vec2 uv5;
out vec2 uv6;
out vec4 chcolor;
uniform mat4 u_MVP;
uniform vec2 _ShadowOffset;
uniform vec2 _SquareSize;
void main() {
gl_Position =
u_MVP * vec4(position.xy + _ShadowOffset, position.z, position.w);
uv0 = texcoord0;
uv1 = texcoord1;
uv2 = texcoord2;
float tex_u = ((uv0.x - uv1.x) / _SquareSize.x - 0.14) / 0.72;
float tex_v = ((uv0.y - uv1.y) / _SquareSize.y - 0.14) / 0.72;
uv4 = vec2(tex_u, tex_v) * texcoord4 + texcoord3;
uv5 = texcoord5;
uv6 = texcoord6;
chcolor = charcolor;
}
%SerializedFormat%@
��B��y�ѹ��n��BF�|ܛ��sprite/xshaderJ-��:Cf
�T=xx���"���|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# charcolor+
X� texcoord3+
X� texcoord6+
X� texcoord5+
X� texcoord4+
X�
texcoord1+
X� texcoord0+
X� texcoord2+
X�position+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9�����|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# charcolor+
X� texcoord3+
X� texcoord6+
X� texcoord5+
X� texcoord4+
X�
texcoord1+
X� texcoord0+
X� texcoord2+
X�position+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9����F�|ܛ����|^L2b�T'�ܛ��xshader/effect.vertj�4
��:�SHADOW��F�|ܛ����|^L2b�T'�ܛ��xshader/effect.fragj�4
V��:�COLOR2COLOR3LINEARINLINE1
INLINE1COLOR2
INLINE1COLOR3
INLINE1LINEAROUTLINE1OUTLINE1COLOR2OUTLINE1COLOR3OUTLINE1LINEAROUTLINE2OUTLINE2COLOR2OUTLINE2COLOR3OUTLINE2LINEAROUTLINE3OUTLINE3COLOR2OUTLINE3COLOR3OUTLINE3LINEAR
TEXTURE_LEVELINNERSHADOWBLUR��F�|ܛ����|^L2b�T'�ܛ��xshader/depth.fragj�4
��:�%SerializedFormat%@
��B��y�ѹ��n��BF�|ܛ��sprite/xshaderJ-��:Cf
�T=xx���"���|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# position+
X� texcoord2+
X� texcoord0+
X� texcoord1+
X� texcoord4+
X�
texcoord5+
X� texcoord6+
X� texcoord3+
X� charcolor+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9�����|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# position+
X� texcoord2+
X� texcoord0+
X� texcoord1+
X� texcoord4+
X�
texcoord5+
X� texcoord6+
X� texcoord3+
X� charcolor+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9����F�|ܛ����|^L2b�T'�ܛ��xshader/effect.vertj�4
��:�SHADOW��F�|ܛ����|^L2b�T'�ܛ��xshader/effect.fragj�4
V��:�COLOR2COLOR3LINEARINLINE1
INLINE1COLOR2
INLINE1COLOR3
INLINE1LINEAROUTLINE1OUTLINE1COLOR2OUTLINE1COLOR3OUTLINE1LINEAROUTLINE2OUTLINE2COLOR2OUTLINE2COLOR3OUTLINE2LINEAROUTLINE3OUTLINE3COLOR2OUTLINE3COLOR3OUTLINE3LINEAR
TEXTURE_LEVELINNERSHADOWBLUR��F�|ܛ����|^L2b�T'�ܛ��xshader/depth.fragj�4
��:�{
"effect": {
"Link": [
{
"type": "InfoSticker"
}
]
},
"version": "6.3.0"
}{
"filemap" :
{
"prefab" : "effect.prefab"
},
"requirement" :
{
"3dFaceMeshPerspective" : false,
"Bg" : false,
"FaceAttributes" : false,
"faceDetect" : true,
"faceVerify" : false,
"hairColor" : false,
"handDetect" : false
},
"tag" : "AMG_32641685882344740219605865588502034054"
}%SerializedFormat%@
�?�?�<O��yc�����a�������F�|ܛ���?v��
x���"��ڰF�|ܛ��noFilter_entity�+ q'�|A��:Cf
��'�_
x���"�v�� g���%F�|ܛ����#j q'�|]�� q'�|�>�x q'�|~��ܛ�� 白红字7UhG��H@I�fܛ��9�}ܛ��9sE�G���G��G���
>zG��N�� q'�|p.q2 q'�|�M�|s��|IV�\ۅ�I�C\�C�J�G��@�@I�V�`�'�?�?�?�?'�;�P`�'@�?�w/ q'�|JI`�`�'�?9фP`�'���=��̽�6��G������?�k(�G��@�z�?���' q'�|ŚQkG������?����G������?d�i�`�'�?��.� q'�|����`�'�?�?+lG���?���L�}U�05������]��'F�|ܛ��I�V$"�
�?��{?��q?�?����G������?'�;�P`�'@�?�%T�x���"���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?��{?��q?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'��� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
��r?���>���>�?i���q`�' �)\O?�����ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'
�#�)\����� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�N>��N>��N>��X>i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��ף�?LK;P`�'
�#���� q'�|Nߊ:Cf
E��[ q'�|��+G���?��4G���?N-\� q'�|�hn�P`�' �h�F�|ܛ��SDFTextMeshRenderer��#j q'�|ީyx���"G�߮:Cf
�x q'�|6�7 q'�|v� q'�|���:Cf
I�gc�#a��F�|ܛ��noFilter_transform��#j q'�|E+��q`�'�za�q`�'�?�?�?�tAn��6��?.�x���"%SerializedFormat%@
������E?��������������� F�|ܛ��W�� q'�|o�Y q'�|Oo=��M��@n=��M��OV)BTH�w������x������v������%SerializedFormat%@
�����?�����������
a���a�����F�|ܛ��
Sticker_empty��ܛ��V4�?v�]
x���"��ڰF�|ܛ��
Camera_entity�X�v�� �+ q'�|A��:Cf
��'��x���"�v�� �qA�F�|ܛ��
Camera_camera��#j q'�|��{a�P��:Cf
��|0�Qo��Y$"�
�t?��#�@�4KF q'�|%��s��|�?�? �|G��N@y�,2G���?�-�G������?x,�|G��@�@&�1EJ�!��R�share://input.textureVl#X+EJ�!j���rt/outputTex.rt�;� q'�|���:Cf
��ڰF�|ܛ��noFilter_entity�X�v�� �+ q'�|A��:Cf
��'�_
x���"�v�� g���%F�|ܛ����#j q'�|]�� q'�|�>�x q'�|~��ܛ�� 白红字7UhG��H@I�fܛ��9�}ܛ��9sE�G���G��G���
>zG��N�� q'�|p.q2 q'�|�M�|s��|IV�\ۅ�I�C\�C�J�G��@�@I�V�`�'�?�?�?�?'�;�P`�'@�?�w/ q'�|JI`�`�'�?9фP`�'���=��̽�6��G������?�k(�G��@�z�?���' q'�|ŚQkG������?����G������?d�i�`�'�?��.� q'�|����`�'�?�?+lG���?���L�}U�05������]��'F�|ܛ��I�V$"�
�?��{?��q?�?����G������?'�;�P`�'@�?�%T�x���"���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�?��{?��q?�?i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'��� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
��r?���>���>�?i���q`�' �)\O?�����ҷG���E�G������>�I�G������>�Av q'�|}��IG��LK;P`�'
�#�)\����� q'�|Nߊ:Cf
���F�|ܛ�����4EJ�!t�K�material/effect.materialc|�|6�$�F�|ܛ����WG��,_G���z���
֖F�|ܛ����^� q'�|�(�G��D2=$"�
�N>��N>��N>��X>i���q`�'�ҷG���E�G������>�I�G������>�Av q'�|}��IG��ף�?LK;P`�'
�#���� q'�|Nߊ:Cf
E��[ q'�|��+G���?��4G���?N-\� q'�|�hn�P`�' �h�F�|ܛ��SDFTextMeshRenderer��#j q'�|ީyx���"G�߮:Cf
�x q'�|6�7 q'�|v� q'�|���:Cf
S�a| q'�|{l��c�#2r*��:�U�����:�a��F�|ܛ��Camera_transform��#j q'�|E+��q`�' A�za�q`�'�?�?�?�tAn��6��?.�x���"a��F�|ܛ��noFilter_transform��#j q'�|E+��q`�'�za�q`�'�?�?�?�tAn��6��?.�x���"%SerializedFormat%@
�����?��������t�K�lt�K�F�|ܛ��
sprite_mat44�,2EJ�!��Bxshader/effect.xshader2��l���F�| ܛ��sprite_propertySheetY�!c�#��qc�#���qc�#Sg�qc�#Y[�c�#���c�#ή�c�#J-��:Cf
�T=x���"�!c�#%SerializedFormat%@
�����?C�������t�K̡t�K�F�|ܛ��
sprite_mat44�,2EJ�!��Bxshader/shadow.xshader2�����F�| ܛ��sprite_propertySheetY�!c�#��qc�#���qc�#Sg�qc�#
_ShadowOffsetP`�'���=��̽Y[�c�#���c�#ή�c�#J-��:Cf
�T=x���"�!c�#BLUR:Cf
%SerializedFormat%@
������E?��������j���Uj���F�|ܛ�����:Cf
�ވ�:Cf
���I:Cf
k��K�x\*AJ�!��}~��"O�Oo=��M��@n=��M��OV)BTH�w������x������v��������=��, ��SS���\� q'�|{
"app_params" :
{
"detectFlags" : "face_240_detect",
"faceModelName" : "perfect2",
"facetips" : 1,
"innerfilter" : true
},
"dev_version" : "10.4.0",
"min_version" : "10.24.0",
"systemList" :
[
"BehaviorSystem",
"CameraSystem",
"EventSystem",
"MeshRendererSystem",
"SDFTextSystem",
"TransformSystem"
],
"type" : "amazing",
"version" : "0.1"
}%SerializedFormat%@
Tx^c|��z����-t��W������� F�|ܛ��W�� q'�|o�Y q'�|Oo=��M��@n=��M��OV)BTH�w������x������v������#version 300 es
precision highp float;
in vec2 uv0;
layout(location=0) out vec4 FragColor;
uniform sampler2D _MainTex;
void main()
{
FragColor = vec4(0.0, 0.0, 0.0, 0.0);
gl_FragDepth = 1.0;
}#version 300 es
precision lowp float;
in vec2 uv0;
in vec2 uv1;
in vec2 uv2;
in vec2 uv4; // random scale
in vec2 uv5;
in vec2 uv6;
in vec4 chcolor;
layout(location = 0) out vec4 FragColor;
uniform sampler2D _MainTex;
#ifdef TEXTURE_LEVEL
uniform sampler2D _Diffuse;
#endif
uniform vec4 _Color1;
uniform vec4 _Color1_2;
uniform vec4 _Color2;
uniform vec4 _Color2_3;
uniform vec4 _Color3;
uniform vec4 _ControlPercent;
uniform vec4 _ColorPercent;
uniform vec4 _AngleVec;
uniform float _Scale;
uniform vec4 _Outline1Color1;
uniform vec4 _Outline1Color1_2;
uniform vec4 _Outline1Color2;
uniform vec4 _Outline1Color2_3;
uniform vec4 _Outline1Color3;
uniform vec4 _Outline1ControlPercent;
uniform vec4 _Outline1ColorPercent;
uniform vec4 _Outline1AngleVec;
uniform float _Outline1Scale;
uniform vec4 _Outline2Color1;
uniform vec4 _Outline2Color1_2;
uniform vec4 _Outline2Color2;
uniform vec4 _Outline2Color2_3;
uniform vec4 _Outline2Color3;
uniform vec4 _Outline2ControlPercent;
uniform vec4 _Outline2ColorPercent;
uniform vec4 _Outline2AngleVec;
uniform float _Outline2Scale;
uniform vec4 _Outline3Color1;
uniform vec4 _Outline3Color1_2;
uniform vec4 _Outline3Color2;
uniform vec4 _Outline3Color2_3;
uniform vec4 _Outline3Color3;
uniform vec4 _Outline3ControlPercent;
uniform vec4 _Outline3ColorPercent;
uniform vec4 _Outline3AngleVec;
uniform float _Outline3Scale;
uniform vec4 _Inline1Color1;
uniform vec4 _Inline1Color1_2;
uniform vec4 _Inline1Color2;
uniform vec4 _Inline1Color2_3;
uniform vec4 _Inline1Color3;
uniform vec4 _Inline1ControlPercent;
uniform vec4 _Inline1ColorPercent;
uniform vec4 _Inline1AngleVec;
uniform float _Inline1Scale;
uniform float _Smoothing;
uniform vec2 _ShadowScale;
uniform float _AnimAlpha;
// 首先处理渐变色,然后处理是否有纹理贴图
const vec4 bitSh = vec4(256. * 256. * 256., 256. * 256., 256., 1.);
const vec4 bitMsk = vec4(0., vec3(1. / 256.0));
const vec4 bitShifts = vec4(1.) / bitSh;
float unpack(vec4 color) { return dot(color, bitShifts); }
const vec2 bitSh16 = vec2(256., 1.);
const vec2 bitMsk16 = vec2(0., 1. / 256.);
const vec2 bitShifts16 = vec2(1.) / bitSh16;
float unpack16(vec2 color) { return dot(color, bitShifts16); }
float linearstep(float edge0, float edge1, float x) {
float t = (x - edge0) / (edge1 - edge0);
return clamp(t, 0.0, 1.0);
}
void main() {
float ktv_u = ((uv0.x - uv1.x) / (uv2.x - uv1.x));
float ktv_v = ((uv0.y - uv1.y) / (uv2.y - uv1.y));
float ktvDist = ktv_u * uv6.x + ktv_v * uv6.y;
float alpha_less = step(uv5.y, 0.0);
float alpha_greater = 1.0 - alpha_less;
float ktv_right = step(ktvDist, uv5.x);
float ktv_alpha = (1.0 - ktv_right) * alpha_less + ktv_right * alpha_greater;
//提前定义要用的临时变量
float x;
vec4 cc;
vec4 diff;
float alpha;
float l;
float gradDist;
float grad_u = ((uv0.x - uv1.x) / (uv2.x - uv1.x) - 0.14) / 0.72;
float grad_v = ((uv0.y - uv1.y) / (uv2.y - uv1.y) - 0.14) / 0.72;
#ifdef TEXTURE_LEVEL
diff = texture(_Diffuse, vec2(uv4.x, 1.0 - uv4.y)) * _AnimAlpha;
#endif
#ifdef BLUR
float distance = unpack16(texture(_MainTex, uv0).ba);
float inner_dis = unpack16(texture(_MainTex, uv0 + _ShadowScale).ba);
#else
float distance = unpack16(texture(_MainTex, uv0).rg);
float inner_dis = unpack16(texture(_MainTex, uv0 + _ShadowScale).rg);
#endif
float smoothing_init = 0.6 * fwidth(distance);
float smoothing = smoothing_init + _Smoothing;
//--------------------------------------------------
//首次填入时alpha值是0
alpha = 0.0;
FragColor = vec4(1.0, 1.0, 1.0, 1.0);
#ifdef INLINE1
cc = _Inline1Color1;
//多层渐变色
#ifdef INLINE1COLOR2
gradDist = ((grad_u - 0.5) * _InlineAngleVec.r + (grad_v - 0.5) * _InlineAngleVec.g) /
_InlineAngleVec.b +
0.5;
#ifdef INLINE1LINEAR
x = clamp(gradDist, _Inline1ColorPercent.x, _Inline1ControlPercent.x);
x = (x - _Inline1ColorPercent.x) /
(_Inline1ControlPercent.x - _Inline1ColorPercent.x);
cc = mix(cc, _Inline1Color1_2, x);
x = clamp(gradDist, _Inline1ControlPercent.x, _Inline1ColorPercent.y);
x = (x - _Inline1ControlPercent.x) /
(_Inline1ColorPercent.y - _Inline1ControlPercent.x);
cc = mix(cc, _Inline1Color2, x);
#else
x = linearstep(_Inline1ControlPercent.x - 0.4 * smoothing,
_Inline1ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Inline1Color2, x);
#endif // INLINE1LINEAR
#ifdef INLINE1COLOR3
#ifdef INLINE1LINEAR
x = clamp(gradDist, _Inline1ColorPercent.y _Inline1ControlPercent.y);
x = (x - _Inline1ColorPercent.y) /
(_Inline1ControlPercent.y - _Inline1ColorPercent.y);
cc = mix(cc, _Inline1Color2_3, x);
x = clamp(gradDist, _Inline1ControlPercent.y, _Inline1ColorPercent.z);
x = (x - _Inline1ControlPercent.y) /
(_Inline1ColorPercent.z - _Inline1ControlPercent.y);
cc = mix(cc, _Inline1Color3, x);
#else
x = linearstep(_Inline1ControlPercent.y - 0.4 * smoothing,
_Inline1ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Inline1Color3, x);
#endif // INLINE1LINEAR
#endif // INLINE1COLOR3
#endif // INLINE1COLOR2
//纹理融合
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 1)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//计算好下一次alpha值
l = clamp(1.0 - _Inline1Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0 - _Inline1Scale + smoothing, distance);
#endif // INLINE1
//------------------------------------------------
cc = _Color1;
#ifdef COLOR2
gradDist = ((grad_u - 0.5) * _AngleVec.r + (grad_v - 0.5) * _AngleVec.g) /
_AngleVec.b +
0.5;
#ifdef LINEAR
x = clamp(gradDist, _ColorPercent.x, _ControlPercent.x);
x = (x - _ColorPercent.x) / (_ControlPercent.x - _ColorPercent.x);
cc = mix(cc, _Color1_2, x);
x = clamp(gradDist, _ControlPercent.x, _ColorPercent.y);
x = (x - _ControlPercent.x) / (_ColorPercent.y - _ControlPercent.x);
cc = mix(cc, _Color2, x);
#else
x = linearstep(_ControlPercent.x - 0.4 * smoothing,
_ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Color2, x);
#endif // LINEAR
#ifdef COLOR3
#ifdef LINEAR
x = clamp(gradDist, _ColorPercent.y, _ControlPercent.y);
x = (x - _ColorPercent.y) / (_ControlPercent.y - _ColorPercent.y);
cc = mix(cc, _Color2_3, x);
x = clamp(gradDist, _ControlPercent.y, _ColorPercent.z);
x = (x - _ControlPercent.y) / (_ColorPercent.z - _ControlPercent.y);
cc = mix(cc, _Color3, x);
#else
x = linearstep(_ControlPercent.y - 0.4 * smoothing,
_ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Color3, x);
#endif // LINEAR
#endif // COLOR3
#endif // COLOR2
//纹理融合
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 1)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//计算好下一次alpha值
l = clamp(1.0 - _Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0 - _Scale + smoothing, distance);
#ifdef OUTLINE1
cc = _Outline1Color1;
//多层渐变色
#ifdef OUTLINE1COLOR2
gradDist = ((grad_u - 0.5f) * _Outline1AngleVec.r + (grad_v - 0.5) * _Outline1AngleVec.g) /
_Outline1AngleVec.b +
0.5;
#ifdef OUTLINE1LINEAR
x = clamp(gradDist, _Outline1ColorPercent.x, _Outline1ControlPercent.x);
x = (x - _Outline1ColorPercent.x) /
(_Outline1ControlPercent.x - _Outline1ColorPercent.x);
cc = mix(cc, _Outline1Color1_2, x);
x = clamp(gradDist, _Outline1ControlPercent.x, _Outline1ColorPercent.y);
x = (x - _Outline1ControlPercent.x) /
(_Outline1ColorPercent.y - _Outline1ControlPercent.x);
cc = mix(cc, _Outline1Color2, x);
#else
x = linearstep(_Outline1ControlPercent.x - 0.4 * smoothing,
_Outline1ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline1Color2, x);
#endif // OUTLINE1LINEAR
#ifdef OUTLINE1COLOR3
#ifdef OUTLINE1LINEAR
x = clamp(gradDist, _Outline1ColorPercent.y _Outline1ControlPercent.y);
x = (x - _Outline1ColorPercent.y) /
(_Outline1ControlPercent.y - _Outline1ColorPercent.y);
cc = mix(cc, _Outline1Color2_3, x);
x = clamp(gradDist, _Outline1ControlPercent.y, _Outline1ColorPercent.z);
x = (x - _Outline1ControlPercent.y) /
(_Outline1ColorPercent.z - _Outline1ControlPercent.y);
cc = mix(cc, _Outline1Color3, x);
#else
x = linearstep(_Outline1ControlPercent.y - 0.4 * smoothing,
_Outline1ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline1Color3, x);
#endif // OUTLINE1LINEAR
#endif // OUTLINE1COLOR3
#endif // OUTLINE1COLOR2
//纹理融合
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 2)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//计算好下一次alpha值
l = clamp(1.0f - _Outline1Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline1Scale + smoothing, distance);
#ifdef OUTLINE2
cc = _Outline2Color1;
//多层渐变色
#ifdef OUTLINE2COLOR2
gradDist = ((grad_u - 0.5f) * _Outline2AngleVec.r + (grad_v - 0.5) * _Outline2AngleVec.g) /
_Outline2AngleVec.b +
0.5;
#ifdef OUTLINE2LINEAR
x = clamp(gradDist, _Outline2ColorPercent.x, _Outline2ControlPercent.x);
x = (x - _Outline2ColorPercent.x) /
(_Outline2ControlPercent.x - _Outline2ColorPercent.x);
cc = mix(cc, _Outline2Color1_2, x);
x = clamp(gradDist, _Outline2ControlPercent.x, _Outline2ColorPercent.y);
x = (x - _Outline2ControlPercent.x) /
(_Outline2ColorPercent.y - _Outline2ControlPercent.x);
cc = mix(cc, _Outline2Color2, x);
#else
x = linearstep(_Outline2ControlPercent.x - 0.4 * smoothing,
_Outline2ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline2Color2, x);
#endif // OUTLINE2LINEAR
#ifdef OUTLINE2COLOR3
#ifdef OUTLINE2LINEAR
x = clamp(gradDist, _Outline2ColorPercent.y _Outline2ControlPercent.y);
x = (x - _Outline2ColorPercent.y) /
(_Outline2ControlPercent.y - _Outline2ColorPercent.y);
cc = mix(cc, _Outline2Color2_3, x);
x = clamp(gradDist, _Outline2ControlPercent.y, _Outline2ColorPercent.z);
x = (x - _Outline2ControlPercent.y) /
(_Outline2ColorPercent.z - _Outline2ControlPercent.y);
cc = mix(cc, _Outline2Color3, x);
#else
x = linearstep(_Outline2ControlPercent.y - 0.4 * smoothing,
_Outline2ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline2Color3, x);
#endif // OUTLINE2LINEAR
#endif // OUTLINE2COLOR3
#endif // OUTLINE2COLOR2
//纹理融合
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 3)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//计算好下一次alpha值
l = clamp(1.0f - _Outline2Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline2Scale + smoothing, distance);
#ifdef OUTLINE3
cc = _Outline3Color1;
//多层渐变色
#ifdef OUTLINE3COLOR2
gradDist = ((grad_u - 0.5f) * _Outline3AngleVec.r + (grad_v - 0.5) * _Outline3AngleVec.g) /
_Outline3AngleVec.b +
0.5;
#ifdef OUTLINE3LINEAR
x = clamp(gradDist, _Outline3ColorPercent.x, _Outline3ControlPercent.x);
x = (x - _Outline3ColorPercent.x) /
(_Outline3ControlPercent.x - _Outline3ColorPercent.x);
cc = mix(cc, _Outline3Color1_2, x);
x = clamp(gradDist, _Outline3ControlPercent.x, _Outline3ColorPercent.y);
x = (x - _Outline3ControlPercent.x) /
(_Outline3ColorPercent.y - _Outline3ControlPercent.x);
cc = mix(cc, _Outline3Color2, x);
#else
x = linearstep(_Outline3ControlPercent.x - 0.4 * smoothing,
_Outline3ControlPercent.x + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline3Color2, x);
#endif // OUTLINE3LINEAR
#ifdef OUTLINE3COLOR3
#ifdef OUTLINE3LINEAR
x = clamp(gradDist, _Outline3ColorPercent.y _Outline3ControlPercent.y);
x = (x - _Outline3ColorPercent.y) /
(_Outline3ControlPercent.y - _Outline3ColorPercent.y);
cc = mix(cc, _Outline3Color2_3, x);
x = clamp(gradDist, _Outline3ControlPercent.y, _Outline3ColorPercent.z);
x = (x - _Outline3ControlPercent.y) /
(_Outline3ColorPercent.z - _Outline3ControlPercent.y);
cc = mix(cc, _Outline3Color3, x);
#else
x = linearstep(_Outline3ControlPercent.y - 0.4 * smoothing,
_Outline3ControlPercent.y + 0.4 * smoothing, gradDist);
cc = mix(cc, _Outline3Color3, x);
#endif // OUTLINE3LINEAR
#endif // OUTLINE3COLOR3
#endif // OUTLINE3COLOR2
//纹理融合
#ifdef TEXTURE_LEVEL
#if (TEXTURE_LEVEL >= 4)
cc = cc * (1.0 - diff.a) + diff;
#endif
#endif
FragColor = mix(cc, FragColor, alpha);
//计算好下一次alpha值
l = clamp(1.0f - _Outline3Scale - smoothing, 0.0, 1.0);
alpha = linearstep(l, 1.0f - _Outline3Scale + smoothing, distance);
#endif // OUTLINE3
#endif // OUTLINE2
#endif // OUTLINE1
//动画脚本控制单字颜色
FragColor *= chcolor;
#ifdef INNERSHADOW
//额外裁剪掉掉出字本体的部分
float inner_alpha =
linearstep(_Scale - smoothing_init, _Scale + smoothing_init, inner_dis);
alpha *= inner_alpha;
#endif
//最后一个alpha用来裁剪掉最外层轮廓以外的像素
alpha *= FragColor.a;
alpha *= ktv_alpha;
// alpha =1.0f;
FragColor = vec4(FragColor.rgb * alpha, alpha);
//FragColor = vec4(diff);
// FragColor = _Color1;
gl_FragDepth = 1.0 - distance;
}
#version 300 es
layout(location = 0) in vec4 position;
layout(location = 1) in vec2 texcoord0;
layout(location = 2) in vec2 texcoord1;
layout(location = 3) in vec2 texcoord2;
layout(location = 4) in vec4 charcolor;
layout(location = 5) in vec2 texcoord3;
layout(location = 6) in vec2 texcoord4;
layout(location = 7) in vec2 texcoord5;
layout(location = 8) in vec2 texcoord6;
out vec2 uv0;
out vec2 uv1;
out vec2 uv2;
out vec2 uv4;
out vec2 uv5;
out vec2 uv6;
out vec4 chcolor;
uniform mat4 u_MVP;
uniform vec2 _ShadowOffset;
uniform vec2 _SquareSize;
void main() {
gl_Position =
u_MVP * vec4(position.xy + _ShadowOffset, position.z, position.w);
uv0 = texcoord0;
uv1 = texcoord1;
uv2 = texcoord2;
float tex_u = ((uv0.x - uv1.x) / _SquareSize.x - 0.14) / 0.72;
float tex_v = ((uv0.y - uv1.y) / _SquareSize.y - 0.14) / 0.72;
uv4 = vec2(tex_u, tex_v) * texcoord4 + texcoord3;
uv5 = texcoord5;
uv6 = texcoord6;
chcolor = charcolor;
}
%SerializedFormat%@
�?�?�<O��yc���B��y�ѹ��n��BF�|ܛ��sprite/xshaderJ-��:Cf
�T=xx���"���|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# position+
X� texcoord2+
X� texcoord0+
X� texcoord1+
X� texcoord4+
X�
texcoord5+
X� texcoord6+
X� texcoord3+
X� charcolor+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9�����|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# position+
X� texcoord2+
X� texcoord0+
X� texcoord1+
X� texcoord4+
X�
texcoord5+
X� texcoord6+
X� texcoord3+
X� charcolor+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9����F�|ܛ����|^L2b�T'�ܛ��xshader/effect.vertj�4
��:�SHADOW��F�|ܛ����|^L2b�T'�ܛ��xshader/effect.fragj�4
V��:�COLOR2COLOR3LINEARINLINE1
INLINE1COLOR2
INLINE1COLOR3
INLINE1LINEAROUTLINE1OUTLINE1COLOR2OUTLINE1COLOR3OUTLINE1LINEAROUTLINE2OUTLINE2COLOR2OUTLINE2COLOR3OUTLINE2LINEAROUTLINE3OUTLINE3COLOR2OUTLINE3COLOR3OUTLINE3LINEAR
TEXTURE_LEVELINNERSHADOWBLUR��F�|ܛ����|^L2b�T'�ܛ��xshader/depth.fragj�4
��:�%SerializedFormat%@
���
��B��y�ѹ��n��BF�|ܛ��sprite/xshaderJ-��:Cf
�T=xx���"���|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# charcolor+
X� texcoord3+
X� texcoord6+
X� texcoord5+
X� texcoord4+
X�
texcoord1+
X� texcoord0+
X� texcoord2+
X�position+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9�����|
F�|ܛ��EՑ,c�#gles30x���"�v�� �v�� L}�,�c�# charcolor+
X� texcoord3+
X� texcoord6+
X� texcoord5+
X� texcoord4+
X�
texcoord1+
X� texcoord0+
X� texcoord2+
X�position+
X���Ҭ$�<F�|ܛ���RiG��+��F�|ܛ����^� q'�|�y<�ܛ���7Ǿk�"�Ax�ܛ��lh�� q'�|�H� q'�|�#]ܛ��)��bQjf��F�|ܛ����\~�`�'
)�ܛ����ܛ������ܛ�����T�x���"sdF� F�|ܛ���o� q'�|�R4��0D7�x�F�0D7.2t�0D7zT���0D7[(:Cf
�OC����{������ q'�|DR� q'�|�ޗ� q'�|����c�#k�'� q'�|>��9����F�|ܛ����|^L2b�T'�ܛ��xshader/effect.vertj�4
��:�SHADOW��F�|ܛ����|^L2b�T'�ܛ��xshader/effect.fragj�4
V��:�COLOR2COLOR3LINEARINLINE1
INLINE1COLOR2
INLINE1COLOR3
INLINE1LINEAROUTLINE1OUTLINE1COLOR2OUTLINE1COLOR3OUTLINE1LINEAROUTLINE2OUTLINE2COLOR2OUTLINE2COLOR3OUTLINE2LINEAROUTLINE3OUTLINE3COLOR2OUTLINE3COLOR3OUTLINE3LINEAR
TEXTURE_LEVELINNERSHADOWBLUR��F�|ܛ����|^L2b�T'�ܛ��xshader/depth.fragj�4
��:�{
"effect": {
"Link": [
{
"type": "TextStyle"
}
]
},
"version": "13.9.0"
}
{"fill":{"alpha":1.0,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.8666666746139526,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}}},"inner_shadows":[{"alpha":0.7021943933823529,"angle":-10.389619715073536,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"texture","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":44.0,"blend":"no","flip":[true,false],"path":"1709118789822.png","range":3,"scale":0.844076501317771}},"distance":0.0,"enable":true,"feather":0.0015957382301878787,"strokes":[]}],"shadows":[{"alpha":1.0,"angle":-180.0,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"distance":1.0,"enable":true,"feather":0.08333333333333333,"strokes":[]},{"alpha":1.0,"angle":-89.81723920036765,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"distance":1.0,"enable":true,"feather":0.08333333333333333,"strokes":[]},{"alpha":1.0,"angle":0.0,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"distance":1.0,"enable":true,"feather":0.08333333333333333,"strokes":[]},{"alpha":1.0,"angle":89.6930721507353,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"distance":1.0,"enable":true,"feather":0.08333333333333333,"strokes":[]},{"alpha":1.0,"angle":180.0,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"distance":1.0,"enable":true,"feather":0.08333333333333333,"strokes":[]}],"strokes":[{"alpha":1.0,"content":{"gradient":{"alpha":[1.0,1.0],"angle":90.0,"color":[[1.0,1.0,1.0],[0.686274528503418,0.686274528503418,0.686274528503418]],"mode":"character","percent":[0.0,1.0]},"render_type":"solid","solid":{"alpha":1.0,"color":[0.0,0.0,0.0]},"texture":{"alpha":1.0,"angle":90.0,"blend":"no","flip":[false,false],"path":"","range":4,"scale":1.0}},"enable":true,"width":0.04}],"textable":false,"version":3.0}1
00:00:00,710 --> 00:00:03,220
Lorem ipsum dolor sit amet
consectetur, adipisicing elit.
2
00:00:03,220 --> 00:00:05,970
Dignissimos et quod laboriosam
iure magni expedita
3
00:00:05,970 --> 00:00:09,130
nisi, quis quaerat. Rem, facere!Changelog
v1.6.0 - 2026-04-19
- Core Enhancements:
- Intelligent TTS (Narrated Subtitles): Unified
add_narrated_subtitlesAPI for one-click script-to-video workflow. - Auto-healing System: Modernized draft generator to support
draft_info.json(v5.9+) and automatic repair of corrupted projects. - MacOS Compatibility:
- Full path resolution for Apple Silicon and Intel Macs.
- Integrated
avfoundationfor high-performance screen recording on macOS. - Ecosystem Tools:
build_cloud_music_library.py: Automated scanning of local drafts to index used cloud assets.web_recorder.py: Pro-grade recording engine for web-based VFX assets.- Bug Fixes & API Polish:
- Fixed
pyJianYingDraftexport issues forTransition,Filter, andMask. - Refactored
VfxOpsMixinto use correct segment-level API calls. - Improved error handling for cloud music fallbacks.
v1.5.0 - 2026-03-04
- Security hardening:
- sanitized draft project names and blocked path traversal/out-of-root delete.
- restored TLS verification for SAMI TTS by default.
- added cloud download URL/header/size guards.
- API/CLI standardization:
- unified machine-readable
--jsonoutput for key scripts. - added strict mode for validator (
--strict). - centralized runtime config (
scripts/utils/config.py). - Quality engineering:
- expanded unit tests for security guards.
- added repo hygiene and data schema checks.
- added CI lint/format/test/schema pipeline.
- Repo organization:
- removed tracked runtime artifacts and cache binaries.
- added compatibility wrappers and common logger utility.
Contributing
Branching
- Use feature branches for all changes.
- Keep
mainreleasable. - Prefer small, focused pull requests.
Local Setup
pip install -r requirements.txt
pip install pytest ruff black pre-commit
pre-commit installRequired Checks
ruff check scripts tests tools
black --check scripts tests tools
python -m pytest tests/test_wrapper.py -q
python tools/check_repo_hygiene.py
python tools/validate_data_schema.pyCommit Rules
- Use clear commit messages with intent and scope.
- Include docs updates when behavior or APIs change.
- Do not commit runtime artifacts (
cloud_cache,__pycache__, logs).
Pull Request Rules
- Describe user impact and migration risk.
- Add concrete verification steps.
- Include before/after behavior for API-affecting changes.
# JianYing Cloud Sound Effects Library
# AI Guidance: Use 'effect_id' to reference. If not in cache, ask user to 'Sync Music' or use cloud API.
# Schema: identifier,title,duration_s,categories
effect_id,title,duration_s,categories
7330113401856724239,Gentle and pop marimba BGM(1040887),64.7,热门
7135753343380606242,Windows 开机,3.87,热门
7603320679395642643,“wei 咻!”,5.07,热门
7604693710638452004,一大群人笑,3.03,热门
7605852179731074358,俏皮弹跳吉他2,6.13,热门
7605846156651908406,俏皮弹跳弦乐12,2.17,热门
7605849976815586603,刮擦嘎吱声5,1.13,热门
7605849069864357139,剧场观众笑声4,27.4,热门
7605848259264810246,卡通低落木琴3,4.73,热门
7605852021257735487,卡通吱呀放屁声1,0.4,热门
7605851556579233060,卡通搞怪马叫声61,4.4,热门
7605849812646366505,卡通昆虫跑跳声6,5.73,热门
7605852562104929599,卡通滑稽下行3,1.03,热门
7605852771241282835,卡通滑稽咚声1,1.83,热门
7605851082220227894,卡通滑稽鼓点2,5.63,热门
7605847569352150278,卡通玩具手风琴音效2,4.2,热门
7605852917416938788,卡通男孩I got it,0.87,热门
7605845671589023018,卡通能量下滑呼呼声218,2.63,热门
7603320591747271999,女生大笑,5.07,热门
7605852073720155398,室内拍手音效3,0.97,热门
7605847357212626239,小提琴疑问,0.6,热门
7605847529942568246,少女清脆笑声40,1.13,热门
7605852749409832228,深沉滚雷烟花1,6.17,热门
7605853960552860964,清脆掌掴音效2,1.0,热门
7605854542688767275,火箭烟花升空16,0.7,热门
7605853715756518692,烟花发射音效9,1.03,热门
7605854488569580843,烟花火星声2,7.6,热门
7605852222533995839,烟花炸裂声8,1.63,热门
7605852687803993380,烟花爆炸音效19,1.73,热门
7605851085869206790,烟花爆裂音效10,2.0,热门
7605852135472909604,烟花玫瑰蕾旋转火花7,6.03,热门
7605854493942517034,烟花蛇形烟雾噼啪声1,7.2,热门
7605853474261044543,烟花闪光噼啪声3,33.53,热门
7605852650952772906,瓶式火箭发射9,0.57,热门
7605852749409848612,瓶火箭发射10,1.07,热门
7604694824037387563,甜美女声“你脑子呢?”,3.03,热门
7603321777284009258,疑惑“嗯?”,5.07,热门
7605852475454737700,科技提示音效,1.07,热门
7605846269457632548,综艺俏皮木琴1,1.63,热门
7605849080589258020,老年男性洪亮笑声47,3.3,热门
7605848729408654634,闪亮登场音效A,2.07,热门
7604694255688273195,需要为您刚才的发言叫辆救护车吗?,3.03,热门
# JianYing Cloud Text Styles Library (Flower Text / 花字)
# AI Guidance: Use style_id with project.add_styled_text(text, style_id, ...).
# These styles have local artistEffect assets in assets/artistEffect/<style_id>/.
# Schema: style_id,name_hint,categories
style_id,name_hint,categories
7351316503771368713,红色花字1,local|3月3日
7187739440347958589,红色花字2,local|3月3日
7127669365423508767,红色花字3,local|3月3日
identifier,category,enum_type,description
_1980,Filters,FilterType,Free
ABG,Filters,FilterType,Free
Ditto,Filters,FilterType,Free
KE1,Filters,FilterType,Free
KV5D,Filters,FilterType,Free
Lofi_II,Filters,FilterType,Free
VHS_III,Filters,FilterType,Free
三洋VPC,Filters,FilterType,Free
书意,Filters,FilterType,Free
亢奋,Filters,FilterType,Free
亮夏,Filters,FilterType,Free
亮肤,Filters,FilterType,Free
仲夏绿光,Filters,FilterType,Free
似锦,Filters,FilterType,Free
低保真,Filters,FilterType,Free
侘寂灰,Filters,FilterType,Free
元气新年,Filters,FilterType,Free
克洛伊,Filters,FilterType,Free
入夏,Filters,FilterType,Free
冬日烧烤,Filters,FilterType,Free
冬漫,Filters,FilterType,Free
冬离,Filters,FilterType,Free
冰火,Filters,FilterType,Free
冰肌,Filters,FilterType,Free
冷气机,Filters,FilterType,Free
冷白,Filters,FilterType,Free
冷蓝,Filters,FilterType,Free
净白肤,Filters,FilterType,Free
凛冬,Filters,FilterType,Free
凝黛,Filters,FilterType,Free
初恋,Filters,FilterType,Free
千玺IXU,Filters,FilterType,Free
千里江山,Filters,FilterType,Free
千金妝,Filters,FilterType,Free
卡露尔,Filters,FilterType,Free
即刻春光,Filters,FilterType,Free
原木,Filters,FilterType,Free
去黄增质,Filters,FilterType,Free
去黄提亮,Filters,FilterType,Free
古早韩系,Filters,FilterType,Free
古早韩风,Filters,FilterType,Free
古罗马,Filters,FilterType,Free
古风影视,Filters,FilterType,Free
告白,Filters,FilterType,Free
喜市,Filters,FilterType,Free
喜庆胶片,Filters,FilterType,Free
四喜,Filters,FilterType,Free
圣诞灯光,Filters,FilterType,Free
圣诞灯光II,Filters,FilterType,Free
圣诞灯光III,Filters,FilterType,Free
复古工业,Filters,FilterType,Free
夏日小美好,Filters,FilterType,Free
夏日泡泡,Filters,FilterType,Free
夏日清凉,Filters,FilterType,Free
夏日辣妹,Filters,FilterType,Free
夏日风吟,Filters,FilterType,Free
夏荷青瓷,Filters,FilterType,Free
大唐盛世,Filters,FilterType,Free
奈良,Filters,FilterType,Free
奥本海默,Filters,FilterType,Free
奶杏,Filters,FilterType,Free
奶油,Filters,FilterType,Free
奶油肤,Filters,FilterType,Free
奶绿,Filters,FilterType,Free
姜饼红,Filters,FilterType,Free
威尼之都,Filters,FilterType,Free
安愉,Filters,FilterType,Free
宫崎漫夏,Filters,FilterType,Free
富士CC_II,Filters,FilterType,Free
寻荷,Filters,FilterType,Free
小镇,Filters,FilterType,Free
山系,Filters,FilterType,Free
巧克力,Filters,FilterType,Free
布兰卡,Filters,FilterType,Free
布朗,Filters,FilterType,Free
希望,Filters,FilterType,Free
幽蓝,Filters,FilterType,Free
彩果,Filters,FilterType,Free
彩檐,Filters,FilterType,Free
影叙,Filters,FilterType,Free
微澜,Filters,FilterType,Free
德古拉,Filters,FilterType,Free
快照I,Filters,FilterType,Free
忽风,Filters,FilterType,Free
情感电影,Filters,FilterType,Free
情绪电影,Filters,FilterType,Free
扫街,Filters,FilterType,Free
探店博主III,Filters,FilterType,Free
摩卡灰,Filters,FilterType,Free
敦刻尔克,Filters,FilterType,Free
料理,Filters,FilterType,Free
新年电影,Filters,FilterType,Free
新闪,Filters,FilterType,Free
日出,Filters,FilterType,Free
日系奶油,Filters,FilterType,Free
日落橘,Filters,FilterType,Free
日落飞车,Filters,FilterType,Free
旧乐园,Filters,FilterType,Free
旧时代I,Filters,FilterType,Free
明晰,Filters,FilterType,Free
星云,Filters,FilterType,Free
春日暖阳,Filters,FilterType,Free
春日绿妍,Filters,FilterType,Free
昭和夏,Filters,FilterType,Free
晴好春日,Filters,FilterType,Free
晴沐,Filters,FilterType,Free
晴研,Filters,FilterType,Free
暖食,Filters,FilterType,Free
暗夜,Filters,FilterType,Free
暗调氛围,Filters,FilterType,Free
暗雅,Filters,FilterType,Free
暮光,Filters,FilterType,Free
暮色,Filters,FilterType,Free
月升之国,Filters,FilterType,Free
月夜,Filters,FilterType,Free
未央,Filters,FilterType,Free
朱栗,Filters,FilterType,Free
松果棕,Filters,FilterType,Free
林间,Filters,FilterType,Free
柠檬青,Filters,FilterType,Free
梨花白,Filters,FilterType,Free
梵时,Filters,FilterType,Free
棕咖,Filters,FilterType,Free
棕宥,Filters,FilterType,Free
棠梨,Filters,FilterType,Free
椰林,Filters,FilterType,Free
椿和,Filters,FilterType,Free
椿来,Filters,FilterType,Free
樱粉,Filters,FilterType,Free
比佛利,Filters,FilterType,Free
气泡水,Filters,FilterType,Free
江浙沪,Filters,FilterType,Free
治愈萌宠,Filters,FilterType,Free
泥金,Filters,FilterType,Free
活力夏,Filters,FilterType,Free
流光金属,Filters,FilterType,Free
浅岛,Filters,FilterType,Free
浪漫烟火,Filters,FilterType,Free
浮生,Filters,FilterType,Free
海浪梦境,Filters,FilterType,Free
海街日记,Filters,FilterType,Free
海雾,Filters,FilterType,Free
海鸥DC,Filters,FilterType,Free
深沉,Filters,FilterType,Free
深秋,Filters,FilterType,Free
深褐,Filters,FilterType,Free
清冷,Filters,FilterType,Free
清冷冬日,Filters,FilterType,Free
清新,Filters,FilterType,Free
清新夏颜,Filters,FilterType,Free
清新漫和,Filters,FilterType,Free
清明上河,Filters,FilterType,Free
清晰明亮,Filters,FilterType,Free
清晰烟花,Filters,FilterType,Free
清澈,Filters,FilterType,Free
清透自然,Filters,FilterType,Free
温述,Filters,FilterType,Free
港历,Filters,FilterType,Free
港风,Filters,FilterType,Free
演唱会,Filters,FilterType,Free
漫夏,Filters,FilterType,Free
漫彩,Filters,FilterType,Free
漫春,Filters,FilterType,Free
漫步,Filters,FilterType,Free
漫谷,Filters,FilterType,Free
烈焰红,Filters,FilterType,Free
烘培,Filters,FilterType,Free
烟岚,Filters,FilterType,Free
烟火增色,Filters,FilterType,Free
烟花增强,Filters,FilterType,Free
烟霞,Filters,FilterType,Free
热烈,Filters,FilterType,Free
煦日,Filters,FilterType,Free
熔金,Filters,FilterType,Free
燃力,Filters,FilterType,Free
牛皮纸,Filters,FilterType,Free
珠光蓝,Filters,FilterType,Free
珠落,Filters,FilterType,Free
病娇,Filters,FilterType,Free
盐岚,Filters,FilterType,Free
矿野,Filters,FilterType,Free
砂红,Filters,FilterType,Free
砾绀,Filters,FilterType,Free
空灵,Filters,FilterType,Free
空谷,Filters,FilterType,Free
竹绢,Filters,FilterType,Free
米棕,Filters,FilterType,Free
粉瓷,Filters,FilterType,Free
粉肤,Filters,FilterType,Free
粹光,Filters,FilterType,Free
素肌,Filters,FilterType,Free
红绿,Filters,FilterType,Free
绝对红,Filters,FilterType,Free
绿妍,Filters,FilterType,Free
美味,Filters,FilterType,Free
老友记,Filters,FilterType,Free
胡桃木,Filters,FilterType,Free
自然,Filters,FilterType,Free
自然清晰,Filters,FilterType,Free
自由,Filters,FilterType,Free
臻金,Filters,FilterType,Free
花园,Filters,FilterType,Free
花椿,Filters,FilterType,Free
花火,Filters,FilterType,Free
花火夜焰,Filters,FilterType,Free
花花世界,Filters,FilterType,Free
落日,Filters,FilterType,Free
落日海岛,Filters,FilterType,Free
落日飞车,Filters,FilterType,Free
落牧,Filters,FilterType,Free
蒸汽波,Filters,FilterType,Free
薄荷,Filters,FilterType,Free
褪色,Filters,FilterType,Free
西野,Filters,FilterType,Free
西餐,Filters,FilterType,Free
谧歌,Filters,FilterType,Free
贝松绿,Filters,FilterType,Free
质感暗调,Filters,FilterType,Free
质感电影,Filters,FilterType,Free
赛博朋克,Filters,FilterType,Free
赤陀,Filters,FilterType,Free
赫本,Filters,FilterType,Free
赫石,Filters,FilterType,Free
轻食,Filters,FilterType,Free
达芬妮,Filters,FilterType,Free
迈阿密,Filters,FilterType,Free
酷白,Filters,FilterType,Free
野餐,Filters,FilterType,Free
金属,Filters,FilterType,Free
闪光灯,Filters,FilterType,Free
闪胶回忆,Filters,FilterType,Free
闻香识人,Filters,FilterType,Free
阿尔菲,Filters,FilterType,Free
雪鹿,Filters,FilterType,Free
雾瓷,Filters,FilterType,Free
青春古早,Filters,FilterType,Free
青橙,Filters,FilterType,Free
青橙电影,Filters,FilterType,Free
青红夜,Filters,FilterType,Free
音乐节,Filters,FilterType,Free
风铃,Filters,FilterType,Free
香松,Filters,FilterType,Free
高清4K电影,Filters,FilterType,Free
高清冬日,Filters,FilterType,Free
高清明亮,Filters,FilterType,Free
高清润白,Filters,FilterType,Free
高清烟火,Filters,FilterType,Free
高清福气,Filters,FilterType,Free
高饱和,Filters,FilterType,Free
鬼魅,Filters,FilterType,Free
鲜亮食光,Filters,FilterType,Free
鲜美年味,Filters,FilterType,Free
黑胶唱片,Filters,FilterType,Free
黑莓,Filters,FilterType,Free
黑豹,Filters,FilterType,Free
默片,Filters,FilterType,Free
_160C,Filters,FilterType,Free
_2077,Filters,FilterType,Free
_400H,Filters,FilterType,Free
_4K画质,Filters,FilterType,Free
_4K画质电影,Filters,FilterType,Free
_4K高品质,Filters,FilterType,Free
_800Z,Filters,FilterType,Free
_8K画质,Filters,FilterType,Free
_90s,Filters,FilterType,Free
City_Walk,Filters,FilterType,Free
EOS3,Filters,FilterType,Free
FXN,Filters,FilterType,Free
GR正片,Filters,FilterType,Free
GR绿,Filters,FilterType,Free
GR蓝,Filters,FilterType,Free
IG白,Filters,FilterType,Free
INS亮肤,Filters,FilterType,Free
INS晴肤,Filters,FilterType,Free
INS暗,Filters,FilterType,Free
INS暗调,Filters,FilterType,Free
INS柔肤,Filters,FilterType,Free
KONICA,Filters,FilterType,Free
KU4,Filters,FilterType,Free
PENTAX,Filters,FilterType,Free
Pocket3,Filters,FilterType,Free
Y3K,Filters,FilterType,Free
doll感透白,Filters,FilterType,Free
iPhone6s,Filters,FilterType,Free
万圣,Filters,FilterType,Free
下雨天,Filters,FilterType,Free
不要抬头,Filters,FilterType,Free
丝滑皮肤,Filters,FilterType,Free
中性,Filters,FilterType,Free
中性II,Filters,FilterType,Free
丹枫,Filters,FilterType,Free
乐游,Filters,FilterType,Free
云暖,Filters,FilterType,Free
亚裔II,Filters,FilterType,Free
京都,Filters,FilterType,Free
亭竹,Filters,FilterType,Free
亮丽,Filters,FilterType,Free
人生之事,Filters,FilterType,Free
仲夏,Filters,FilterType,Free
仲夏夜,Filters,FilterType,Free
仿撕拉片,Filters,FilterType,Free
伊豆,Filters,FilterType,Free
伤感故事电影,Filters,FilterType,Free
伤感电影,Filters,FilterType,Free
余晖,Filters,FilterType,Free
佳能G12,Filters,FilterType,Free
佳能G7X_II,Filters,FilterType,Free
佳能G7X_III,Filters,FilterType,Free
俏皮萌宠,Filters,FilterType,Free
俱乐部,Filters,FilterType,Free
倾森,Filters,FilterType,Free
假日海滩,Filters,FilterType,Free
假日电影感,Filters,FilterType,Free
健身II,Filters,FilterType,Free
傍晚,Filters,FilterType,Free
元宵祈福,Filters,FilterType,Free
元气粉肌,Filters,FilterType,Free
光流,Filters,FilterType,Free
冬日物语,Filters,FilterType,Free
冬日电影II,Filters,FilterType,Free
冬禧,Filters,FilterType,Free
冰夏,Filters,FilterType,Free
冰清蓝,Filters,FilterType,Free
冰瀑,Filters,FilterType,Free
冰茶,Filters,FilterType,Free
冰雪白,Filters,FilterType,Free
冷叙,Filters,FilterType,Free
冷墨,Filters,FilterType,Free
冷月夜,Filters,FilterType,Free
冷白圣诞,Filters,FilterType,Free
冷萃,Filters,FilterType,Free
冷调CCD,Filters,FilterType,Free
净白,Filters,FilterType,Free
凉夏,Filters,FilterType,Free
加州落日,Filters,FilterType,Free
劲闯,Filters,FilterType,Free
千禧潮酷,Filters,FilterType,Free
半衫,Filters,FilterType,Free
原生自然,Filters,FilterType,Free
原野,Filters,FilterType,Free
去灰,Filters,FilterType,Free
去灰II,Filters,FilterType,Free
去灰明晰,Filters,FilterType,Free
去灰高清,Filters,FilterType,Free
去雾,Filters,FilterType,Free
反差富士,Filters,FilterType,Free
发光CCD,Filters,FilterType,Free
发光肤,Filters,FilterType,Free
叠阳,Filters,FilterType,Free
古早像素,Filters,FilterType,Free
古早回忆,Filters,FilterType,Free
古早复古,Filters,FilterType,Free
古早记忆,Filters,FilterType,Free
古早韩式,Filters,FilterType,Free
古都,Filters,FilterType,Free
吉宵,Filters,FilterType,Free
味蕾,Filters,FilterType,Free
和歌山,Filters,FilterType,Free
哈苏I,Filters,FilterType,Free
哈苏II,Filters,FilterType,Free
哈苏蓝,Filters,FilterType,Free
哥谭,Filters,FilterType,Free
唤晴II,Filters,FilterType,Free
国民旧照,Filters,FilterType,Free
国风影视,Filters,FilterType,Free
国风电影,Filters,FilterType,Free
圣善夜,Filters,FilterType,Free
圣诞回忆录,Filters,FilterType,Free
圣诞愿景,Filters,FilterType,Free
圣诞拍立得,Filters,FilterType,Free
圣诞闪胶,Filters,FilterType,Free
圣诞闪胶II,Filters,FilterType,Free
城市赏月II,Filters,FilterType,Free
增色II,Filters,FilterType,Free
增质CCD,Filters,FilterType,Free
墨林,Filters,FilterType,Free
复古电影感,Filters,FilterType,Free
复古蓝调,Filters,FilterType,Free
夏天岛,Filters,FilterType,Free
夏威夷,Filters,FilterType,Free
夏日度假,Filters,FilterType,Free
夏日物语,Filters,FilterType,Free
夏日粉,Filters,FilterType,Free
夏日紫霞,Filters,FilterType,Free
夏日繁花,Filters,FilterType,Free
多巴胺,Filters,FilterType,Free
夜拍闪曝,Filters,FilterType,Free
夜拍高光,Filters,FilterType,Free
夜景人像增强,Filters,FilterType,Free
夜景去雾,Filters,FilterType,Free
夜景增色,Filters,FilterType,Free
夜景增色II,Filters,FilterType,Free
夜焰,Filters,FilterType,Free
夜雾,Filters,FilterType,Free
大吉岭,Filters,FilterType,Free
大海增色,Filters,FilterType,Free
大疆电影感,Filters,FilterType,Free
奥林巴斯,Filters,FilterType,Free
奥罗拉,Filters,FilterType,Free
奶呼萌宠,Filters,FilterType,Free
奶油II,Filters,FilterType,Free
奶油原生,Filters,FilterType,Free
奶油柔肤,Filters,FilterType,Free
奶油白,Filters,FilterType,Free
奶油美食,Filters,FilterType,Free
奶油风萌宠,Filters,FilterType,Free
奶白肌,Filters,FilterType,Free
好莱坞I,Filters,FilterType,Free
好莱坞II,Filters,FilterType,Free
好莱坞III,Filters,FilterType,Free
好莱坞IV,Filters,FilterType,Free
嫣时,Filters,FilterType,Free
嫩肤,Filters,FilterType,Free
嬉皮士,Filters,FilterType,Free
子弹列车,Filters,FilterType,Free
安西娅,Filters,FilterType,Free
家宴,Filters,FilterType,Free
宿营,Filters,FilterType,Free
富士CC_I,Filters,FilterType,Free
富士NC_I,Filters,FilterType,Free
富士NC_II,Filters,FilterType,Free
富士NC_III,Filters,FilterType,Free
富士NN,Filters,FilterType,Free
富士x100,Filters,FilterType,Free
富士电影,Filters,FilterType,Free
富士蓝,Filters,FilterType,Free
富士蓝II,Filters,FilterType,Free
富士青,Filters,FilterType,Free
富春山居,Filters,FilterType,Free
小美好,Filters,FilterType,Free
小麦色,Filters,FilterType,Free
尘杏,Filters,FilterType,Free
尘烟,Filters,FilterType,Free
山晴,Filters,FilterType,Free
山本,Filters,FilterType,Free
岚夏,Filters,FilterType,Free
岩灰,Filters,FilterType,Free
川秋,Filters,FilterType,Free
川野,Filters,FilterType,Free
市井,Filters,FilterType,Free
幽海,Filters,FilterType,Free
底特律,Filters,FilterType,Free
庙会,Filters,FilterType,Free
弥晖,Filters,FilterType,Free
彩光,Filters,FilterType,Free
影部,Filters,FilterType,Free
往昔,Filters,FilterType,Free
徕卡I,Filters,FilterType,Free
徕卡II,Filters,FilterType,Free
徕卡Q2,Filters,FilterType,Free
心动夏,Filters,FilterType,Free
忆山,Filters,FilterType,Free
忆时,Filters,FilterType,Free
快照II,Filters,FilterType,Free
怀旧,Filters,FilterType,Free
怦然心动,Filters,FilterType,Free
恍光,Filters,FilterType,Free
情感故事电影,Filters,FilterType,Free
情绪暗调,Filters,FilterType,Free
情辉,Filters,FilterType,Free
慕斯,Filters,FilterType,Free
扬帆远航,Filters,FilterType,Free
拐杖糖,Filters,FilterType,Free
捕风,Filters,FilterType,Free
摩登,Filters,FilterType,Free
摩登暗银,Filters,FilterType,Free
撕拉拍立得,Filters,FilterType,Free
攀岩,Filters,FilterType,Free
文艺少女,Filters,FilterType,Free
新中式电影感,Filters,FilterType,Free
新宿,Filters,FilterType,Free
新年欢愉,Filters,FilterType,Free
新年祈愿,Filters,FilterType,Free
新年祈福,Filters,FilterType,Free
新年粉肤,Filters,FilterType,Free
新年红,Filters,FilterType,Free
新年闪胶,Filters,FilterType,Free
日与,Filters,FilterType,Free
日光吻,Filters,FilterType,Free
日光肤,Filters,FilterType,Free
日出增色,Filters,FilterType,Free
日和,Filters,FilterType,Free
日料寿司,Filters,FilterType,Free
日漫增色,Filters,FilterType,Free
日系增色,Filters,FilterType,Free
日系春和,Filters,FilterType,Free
日落时刻,Filters,FilterType,Free
旧时代II,Filters,FilterType,Free
旧时来信,Filters,FilterType,Free
旧曲,Filters,FilterType,Free
旧金山,Filters,FilterType,Free
旷野,Filters,FilterType,Free
旷野自然,Filters,FilterType,Free
旷野蓝,Filters,FilterType,Free
明亮春味,Filters,FilterType,Free
明亮焕晴,Filters,FilterType,Free
明媚春景,Filters,FilterType,Free
明媚自然,Filters,FilterType,Free
明媚透亮,Filters,FilterType,Free
明煦,Filters,FilterType,Free
星沫,Filters,FilterType,Free
春和,Filters,FilterType,Free
春喜,Filters,FilterType,Free
春天淡彩,Filters,FilterType,Free
春忆胶卷,Filters,FilterType,Free
春日序,Filters,FilterType,Free
春日樱,Filters,FilterType,Free
春日清晰,Filters,FilterType,Free
春日清透,Filters,FilterType,Free
春日美食III,Filters,FilterType,Free
春日花间,Filters,FilterType,Free
春日韩胶,Filters,FilterType,Free
春桃肤,Filters,FilterType,Free
春橙肤,Filters,FilterType,Free
春游踏青,Filters,FilterType,Free
春澄,Filters,FilterType,Free
春风,Filters,FilterType,Free
昭和,Filters,FilterType,Free
晚宴,Filters,FilterType,Free
晚晴,Filters,FilterType,Free
晚柠,Filters,FilterType,Free
晚樱,Filters,FilterType,Free
晚霞增色,Filters,FilterType,Free
晨旭,Filters,FilterType,Free
普林斯顿,Filters,FilterType,Free
晴天,Filters,FilterType,Free
晴天亮丽,Filters,FilterType,Free
晴天增色,Filters,FilterType,Free
晴天灿烂,Filters,FilterType,Free
晴好假日,Filters,FilterType,Free
晴好风光,Filters,FilterType,Free
晴春,Filters,FilterType,Free
晴春奶蓝,Filters,FilterType,Free
晴朗,Filters,FilterType,Free
晴海,Filters,FilterType,Free
晴空漫游,Filters,FilterType,Free
晴肤,Filters,FilterType,Free
晴谷,Filters,FilterType,Free
晴颜,Filters,FilterType,Free
晶透,Filters,FilterType,Free
智能光线,Filters,FilterType,Free
暖晨,Filters,FilterType,Free
暖棕,Filters,FilterType,Free
暖黄,Filters,FilterType,Free
暗光提亮,Filters,FilterType,Free
暗匣,Filters,FilterType,Free
暗夜明肤,Filters,FilterType,Free
暗影,Filters,FilterType,Free
暗曛,Filters,FilterType,Free
暗调人像,Filters,FilterType,Free
暗调发光,Filters,FilterType,Free
暗调古风,Filters,FilterType,Free
暗调复古电影,Filters,FilterType,Free
暗调电影,Filters,FilterType,Free
暗调纪实电影,Filters,FilterType,Free
暗金,Filters,FilterType,Free
暗银,Filters,FilterType,Free
暗银II,Filters,FilterType,Free
暮信,Filters,FilterType,Free
暮川,Filters,FilterType,Free
暮樱,Filters,FilterType,Free
暮涛,Filters,FilterType,Free
暮色约会,Filters,FilterType,Free
曼波,Filters,FilterType,Free
月吟,Filters,FilterType,Free
月辉,Filters,FilterType,Free
朦胧气质棕,Filters,FilterType,Free
木葵,Filters,FilterType,Free
末世天使,Filters,FilterType,Free
杏铃,Filters,FilterType,Free
松绿,Filters,FilterType,Free
果酥,Filters,FilterType,Free
柔光,Filters,FilterType,Free
柔焦,Filters,FilterType,Free
柠檬海,Filters,FilterType,Free
柯达金200,Filters,FilterType,Free
栖海,Filters,FilterType,Free
栩栩,Filters,FilterType,Free
格金,Filters,FilterType,Free
桃木,Filters,FilterType,Free
桃粉,Filters,FilterType,Free
桃野,Filters,FilterType,Free
桐影,Filters,FilterType,Free
梦境,Filters,FilterType,Free
梦幻夏,Filters,FilterType,Free
梦暮,Filters,FilterType,Free
梦核紫,Filters,FilterType,Free
棕榈,Filters,FilterType,Free
森山,Filters,FilterType,Free
森林徒步,Filters,FilterType,Free
森秋,Filters,FilterType,Free
森绿,Filters,FilterType,Free
榄白,Filters,FilterType,Free
模糊氛围,Filters,FilterType,Free
樱花粉肤,Filters,FilterType,Free
橘子海,Filters,FilterType,Free
橘海,Filters,FilterType,Free
橙蓝,Filters,FilterType,Free
欧若淡彩,Filters,FilterType,Free
毕业胶片,Filters,FilterType,Free
气色,Filters,FilterType,Free
气色透亮,Filters,FilterType,Free
氧气甜白,Filters,FilterType,Free
氧气自然,Filters,FilterType,Free
水泽,Filters,FilterType,Free
沙漫,Filters,FilterType,Free
沙砾,Filters,FilterType,Free
法式少女,Filters,FilterType,Free
法式甜粉,Filters,FilterType,Free
法餐,Filters,FilterType,Free
洛丽塔粉,Filters,FilterType,Free
浅茶,Filters,FilterType,Free
浅草,Filters,FilterType,Free
浓郁胶卷,Filters,FilterType,Free
浪语,Filters,FilterType,Free
海上冲浪,Filters,FilterType,Free
海松,Filters,FilterType,Free
海水正蓝,Filters,FilterType,Free
海湾,Filters,FilterType,Free
海盐,Filters,FilterType,Free
海盐夏日,Filters,FilterType,Free
海盐蓝,Filters,FilterType,Free
海边胶片,Filters,FilterType,Free
润光,Filters,FilterType,Free
润白,Filters,FilterType,Free
涩谷,Filters,FilterType,Free
淡奶油,Filters,FilterType,Free
清冷国风,Filters,FilterType,Free
清冷暗黑,Filters,FilterType,Free
清新度假,Filters,FilterType,Free
清新感,Filters,FilterType,Free
清新明亮,Filters,FilterType,Free
清新春日,Filters,FilterType,Free
清新晴空,Filters,FilterType,Free
清新暖食,Filters,FilterType,Free
清新氧晴,Filters,FilterType,Free
清新绿妍,Filters,FilterType,Free
清新花妍,Filters,FilterType,Free
清新质感,Filters,FilterType,Free
清新透亮,Filters,FilterType,Free
清晰,Filters,FilterType,Free
清晰严冬,Filters,FilterType,Free
清晰净透,Filters,FilterType,Free
清晰增强,Filters,FilterType,Free
清晰增色,Filters,FilterType,Free
清晰增质,Filters,FilterType,Free
清晰提升,Filters,FilterType,Free
清晰电影,Filters,FilterType,Free
清晰画质,Filters,FilterType,Free
清晰绿妍,Filters,FilterType,Free
清晰自然,Filters,FilterType,Free
清晰花朵,Filters,FilterType,Free
清晰萌宠,Filters,FilterType,Free
清晰质感,Filters,FilterType,Free
清晰透亮,Filters,FilterType,Free
清爽,Filters,FilterType,Free
清爽夏颜,Filters,FilterType,Free
清透光感,Filters,FilterType,Free
清透感,Filters,FilterType,Free
清透美食,Filters,FilterType,Free
清透萌宠,Filters,FilterType,Free
清风绿妍,Filters,FilterType,Free
港风复古,Filters,FilterType,Free
港风夜景,Filters,FilterType,Free
港风电影,Filters,FilterType,Free
漠土,Filters,FilterType,Free
漫樱,Filters,FilterType,Free
漫空,Filters,FilterType,Free
漫荫,Filters,FilterType,Free
漱石,Filters,FilterType,Free
潘多拉,Filters,FilterType,Free
灯会,Filters,FilterType,Free
灯塔,Filters,FilterType,Free
灰芋,Filters,FilterType,Free
灰调中性,Filters,FilterType,Free
灰调日常,Filters,FilterType,Free
灰麻,Filters,FilterType,Free
灿金彩带,Filters,FilterType,Free
炊烟,Filters,FilterType,Free
烈日,Filters,FilterType,Free
烈空,Filters,FilterType,Free
烘挞,Filters,FilterType,Free
烟橙,Filters,FilterType,Free
烟花璀璨,Filters,FilterType,Free
热带季风,Filters,FilterType,Free
热气腾腾,Filters,FilterType,Free
热红酒,Filters,FilterType,Free
焕肤,Filters,FilterType,Free
焰色,Filters,FilterType,Free
熏柏,Filters,FilterType,Free
爱丽丝,Filters,FilterType,Free
爱之城,Filters,FilterType,Free
爱之城II,Filters,FilterType,Free
牙白,Filters,FilterType,Free
牛奶肌,Filters,FilterType,Free
牧野,Filters,FilterType,Free
独行侠,Filters,FilterType,Free
猎梦,Filters,FilterType,Free
玄影灵,Filters,FilterType,Free
玩趣,Filters,FilterType,Free
琥珀,Filters,FilterType,Free
璀璨,Filters,FilterType,Free
甜妹感,Filters,FilterType,Free
甜心芭比,Filters,FilterType,Free
田园野餐,Filters,FilterType,Free
电影增强,Filters,FilterType,Free
电影增质,Filters,FilterType,Free
电影感增强,Filters,FilterType,Free
电影柔光,Filters,FilterType,Free
电影校正,Filters,FilterType,Free
电影画质,Filters,FilterType,Free
电影雪肤,Filters,FilterType,Free
画报,Filters,FilterType,Free
画质修复,Filters,FilterType,Free
画质高清,Filters,FilterType,Free
登高,Filters,FilterType,Free
白富美,Filters,FilterType,Free
白桃,Filters,FilterType,Free
白皙,Filters,FilterType,Free
百川,Filters,FilterType,Free
盐系,Filters,FilterType,Free
盐系清透,Filters,FilterType,Free
石山,Filters,FilterType,Free
砂金,Filters,FilterType,Free
破晓,Filters,FilterType,Free
硬朗,Filters,FilterType,Free
硬朗男孩,Filters,FilterType,Free
碎芒,Filters,FilterType,Free
碳烤,Filters,FilterType,Free
福桔,Filters,FilterType,Free
福运,Filters,FilterType,Free
禾美,Filters,FilterType,Free
私语,Filters,FilterType,Free
秋日物语II,Filters,FilterType,Free
秋池,Filters,FilterType,Free
秋波,Filters,FilterType,Free
秋田胶片,Filters,FilterType,Free
科切拉,Filters,FilterType,Free
科幻星球,Filters,FilterType,Free
简餐,Filters,FilterType,Free
粉柔撕拉片,Filters,FilterType,Free
粉橘,Filters,FilterType,Free
粉白,Filters,FilterType,Free
粉白微曝光,Filters,FilterType,Free
粉蓝烟花,Filters,FilterType,Free
素净,Filters,FilterType,Free
素简,Filters,FilterType,Free
紫霞时分,Filters,FilterType,Free
繁花似锦,Filters,FilterType,Free
繁花如梦,Filters,FilterType,Free
繁花璀璨,Filters,FilterType,Free
红运,Filters,FilterType,Free
纪实电影,Filters,FilterType,Free
纪实电影胶片,Filters,FilterType,Free
纱雾,Filters,FilterType,Free
织乐,Filters,FilterType,Free
经典港风,Filters,FilterType,Free
绮思,Filters,FilterType,Free
绿妍II,Filters,FilterType,Free
绿野,Filters,FilterType,Free
绿野仙踪,Filters,FilterType,Free
绿野漫旅,Filters,FilterType,Free
美味brunch,Filters,FilterType,Free
美好瞬间,Filters,FilterType,Free
美拉德,Filters,FilterType,Free
美白嫩肤,Filters,FilterType,Free
美食增色,Filters,FilterType,Free
美高,Filters,FilterType,Free
羽梦,Filters,FilterType,Free
老街,Filters,FilterType,Free
聆时,Filters,FilterType,Free
聚焦,Filters,FilterType,Free
胶片电影,Filters,FilterType,Free
自然增色,Filters,FilterType,Free
自然春色,Filters,FilterType,Free
自然雪肤,Filters,FilterType,Free
舞霞,Filters,FilterType,Free
艾丽莎,Filters,FilterType,Free
芭比,Filters,FilterType,Free
花容,Filters,FilterType,Free
花火增色,Filters,FilterType,Free
花间,Filters,FilterType,Free
花间II,Filters,FilterType,Free
花食,Filters,FilterType,Free
苍橘,Filters,FilterType,Free
苦尽柑来,Filters,FilterType,Free
英伦复古,Filters,FilterType,Free
茶墨,Filters,FilterType,Free
茶酪,Filters,FilterType,Free
荒原,Filters,FilterType,Free
荷郁,Filters,FilterType,Free
莫吉托,Filters,FilterType,Free
莫奈花园,Filters,FilterType,Free
莱顿,Filters,FilterType,Free
萌宠,Filters,FilterType,Free
落日派对,Filters,FilterType,Free
落日火烧云,Filters,FilterType,Free
落日电影,Filters,FilterType,Free
落日粉,Filters,FilterType,Free
落日鎏金,Filters,FilterType,Free
蒸汽机,Filters,FilterType,Free
蓝梦核,Filters,FilterType,Free
蓝橙II,Filters,FilterType,Free
蓝灰,Filters,FilterType,Free
蓝调,Filters,FilterType,Free
蓝调时刻,Filters,FilterType,Free
蓝调烟火,Filters,FilterType,Free
蓝调舞曲,Filters,FilterType,Free
蓝金,Filters,FilterType,Free
蔚蓝海域,Filters,FilterType,Free
薄绿,Filters,FilterType,Free
薄荷奶绿,Filters,FilterType,Free
薄霞,Filters,FilterType,Free
薰草,Filters,FilterType,Free
藤宅,Filters,FilterType,Free
街头,Filters,FilterType,Free
裸粉,Filters,FilterType,Free
褪色胶卷,Filters,FilterType,Free
西冷,Filters,FilterType,Free
西西里,Filters,FilterType,Free
西雅图,Filters,FilterType,Free
诗诺,Filters,FilterType,Free
诗野,Filters,FilterType,Free
贝果,Filters,FilterType,Free
质感增蓝,Filters,FilterType,Free
质感婚礼,Filters,FilterType,Free
质感新中式,Filters,FilterType,Free
质感明亮,Filters,FilterType,Free
质感晴春,Filters,FilterType,Free
赏味,Filters,FilterType,Free
赤墙,Filters,FilterType,Free
超清电影,Filters,FilterType,Free
超清电影卷,Filters,FilterType,Free
超清画质,Filters,FilterType,Free
超白,Filters,FilterType,Free
超高清,Filters,FilterType,Free
越岭,Filters,FilterType,Free
越野,Filters,FilterType,Free
轻氧夏,Filters,FilterType,Free
轻胶少女,Filters,FilterType,Free
过期电影卷,Filters,FilterType,Free
运动质感,Filters,FilterType,Free
迷幻,Filters,FilterType,Free
迷雾,Filters,FilterType,Free
逆光拯救,Filters,FilterType,Free
逆光提亮,Filters,FilterType,Free
透氧肌肤,Filters,FilterType,Free
通透,Filters,FilterType,Free
通透暖食,Filters,FilterType,Free
通透氧感,Filters,FilterType,Free
邂逅,Filters,FilterType,Free
郁金香,Filters,FilterType,Free
都卡,Filters,FilterType,Free
都城,Filters,FilterType,Free
都市,Filters,FilterType,Free
都市电影II,Filters,FilterType,Free
酚蓝,Filters,FilterType,Free
酷感辣妹,Filters,FilterType,Free
酷绿,Filters,FilterType,Free
醒春,Filters,FilterType,Free
里昂,Filters,FilterType,Free
野林,Filters,FilterType,Free
野趣,Filters,FilterType,Free
金喜,Filters,FilterType,Free
金姜,Filters,FilterType,Free
金照落日,Filters,FilterType,Free
金秋,Filters,FilterType,Free
金色韶华,Filters,FilterType,Free
铅绿,Filters,FilterType,Free
银蓝,Filters,FilterType,Free
镜粉,Filters,FilterType,Free
闪星,Filters,FilterType,Free
闪耀派对,Filters,FilterType,Free
阴天拯救,Filters,FilterType,Free
阿勒泰,Filters,FilterType,Free
陶瓷肌,Filters,FilterType,Free
随性,Filters,FilterType,Free
雀染,Filters,FilterType,Free
雨皂,Filters,FilterType,Free
雨空,Filters,FilterType,Free
雪地胶片,Filters,FilterType,Free
雪地胶片II,Filters,FilterType,Free
雪地胶片III,Filters,FilterType,Free
雪挞,Filters,FilterType,Free
雪白肤,Filters,FilterType,Free
雾都,Filters,FilterType,Free
雾野,Filters,FilterType,Free
青巷,Filters,FilterType,Free
青提,Filters,FilterType,Free
青春,Filters,FilterType,Free
青春照,Filters,FilterType,Free
青春物语,Filters,FilterType,Free
青春胶片,Filters,FilterType,Free
青春记忆,Filters,FilterType,Free
青森,Filters,FilterType,Free
青橙电影感,Filters,FilterType,Free
青灰,Filters,FilterType,Free
青黄,Filters,FilterType,Free
青黄II,Filters,FilterType,Free
韦斯,Filters,FilterType,Free
顺意,Filters,FilterType,Free
颜白,Filters,FilterType,Free
风味,Filters,FilterType,Free
风铃蓝,Filters,FilterType,Free
飒意,Filters,FilterType,Free
食光II,Filters,FilterType,Free
食色,Filters,FilterType,Free
香浓,Filters,FilterType,Free
驮月,Filters,FilterType,Free
高晴画质,Filters,FilterType,Free
高清,Filters,FilterType,Free
高清4K,Filters,FilterType,Free
高清4k电影,Filters,FilterType,Free
高清II,Filters,FilterType,Free
高清中性灰,Filters,FilterType,Free
高清亮粉,Filters,FilterType,Free
高清修复,Filters,FilterType,Free
高清修复III,Filters,FilterType,Free
高清冷冬,Filters,FilterType,Free
高清冷调,Filters,FilterType,Free
高清圣诞,Filters,FilterType,Free
高清增强,Filters,FilterType,Free
高清增色,Filters,FilterType,Free
高清增质,Filters,FilterType,Free
高清寒冬,Filters,FilterType,Free
高清影视,Filters,FilterType,Free
高清感,Filters,FilterType,Free
高清感II,Filters,FilterType,Free
高清感III,Filters,FilterType,Free
高清提亮,Filters,FilterType,Free
高清提升,Filters,FilterType,Free
高清春日,Filters,FilterType,Free
高清晴天,Filters,FilterType,Free
高清晴日,Filters,FilterType,Free
高清暖调,Filters,FilterType,Free
高清润颜,Filters,FilterType,Free
高清漫晴,Filters,FilterType,Free
高清焕晴,Filters,FilterType,Free
高清电影,Filters,FilterType,Free
高清电影卷,Filters,FilterType,Free
高清画质,Filters,FilterType,Free
高清绿妍,Filters,FilterType,Free
高清美食,Filters,FilterType,Free
高清质感,Filters,FilterType,Free
高清雪景,Filters,FilterType,Free
高清雪肤,Filters,FilterType,Free
高清鲜明,Filters,FilterType,Free
高清黑白,Filters,FilterType,Free
高清默冬,Filters,FilterType,Free
高级影视,Filters,FilterType,Free
高街,Filters,FilterType,Free
魅影,Filters,FilterType,Free
魔都,Filters,FilterType,Free
鲜亮,Filters,FilterType,Free
鲜明,Filters,FilterType,Free
鲜明II,Filters,FilterType,Free
鲜明增强,Filters,FilterType,Free
鲜明增色,Filters,FilterType,Free
鲜美,Filters,FilterType,Free
鲜艳增色,Filters,FilterType,Free
鲜花增彩,Filters,FilterType,Free
鲜花增色,Filters,FilterType,Free
鲜花增艳,Filters,FilterType,Free
鹅冠,Filters,FilterType,Free
黄昏,Filters,FilterType,Free
黄昏时,Filters,FilterType,Free
黑冰,Filters,FilterType,Free
黑暗神话,Filters,FilterType,Free
黑曜,Filters,FilterType,Free
黑金,Filters,FilterType,Free
黑金红,Filters,FilterType,Free
龙舌兰,Filters,FilterType,Free
# JianYing Cached Audio Assets (Physical files synced via sync_jy_assets.py)
# AI Guidance: These files exist locally. Use 'path' column directly with add_audio_safe().
# To refresh: run 'python scripts/sync_jy_assets.py'
identifier,author,duration,path,category
identifier,category,enum_type,description
冲屏位移,Text Animations,TextIntro,Free
卡拉OK,Text Animations,TextIntro,Free
变色输入,Text Animations,TextIntro,Free
右上弹入,Text Animations,TextIntro,Free
右下擦开,Text Animations,TextIntro,Free
向上擦除,Text Animations,TextIntro,Free
向上滑动,Text Animations,TextIntro,Free
向上翻转,Text Animations,TextIntro,Free
向上重叠,Text Animations,TextIntro,Free
向上露出,Text Animations,TextIntro,Free
向下擦除,Text Animations,TextIntro,Free
向下滑动,Text Animations,TextIntro,Free
向下露出,Text Animations,TextIntro,Free
向下飞入,Text Animations,TextIntro,Free
向右擦除,Text Animations,TextIntro,Free
向右滑动,Text Animations,TextIntro,Free
向右缓入,Text Animations,TextIntro,Free
向右集合,Text Animations,TextIntro,Free
向右露出,Text Animations,TextIntro,Free
向左擦除,Text Animations,TextIntro,Free
向左滑动,Text Animations,TextIntro,Free
向左露出,Text Animations,TextIntro,Free
圆形扫描,Text Animations,TextIntro,Free
复古打字机,Text Animations,TextIntro,Free
居中打字,Text Animations,TextIntro,Free
左上弹入,Text Animations,TextIntro,Free
左移弹动,Text Animations,TextIntro,Free
开幕,Text Animations,TextIntro,Free
弹入,Text Animations,TextIntro,Free
弹弓,Text Animations,TextIntro,Free
弹性伸缩,Text Animations,TextIntro,Free
弹簧,Text Animations,TextIntro,Free
彩色映射,Text Animations,TextIntro,Free
打字机_I,Text Animations,TextIntro,Free
打字机_II,Text Animations,TextIntro,Free
打字机_III,Text Animations,TextIntro,Free
打字机IV,Text Animations,TextIntro,Free
扭曲模糊,Text Animations,TextIntro,Free
拖尾,Text Animations,TextIntro,Free
收拢,Text Animations,TextIntro,Free
放大,Text Animations,TextIntro,Free
故障打字机,Text Animations,TextIntro,Free
旋入,Text Animations,TextIntro,Free
日出,Text Animations,TextIntro,Free
晕开,Text Animations,TextIntro,Free
模糊,Text Animations,TextIntro,Free
水墨晕开,Text Animations,TextIntro,Free
水平翻转,Text Animations,TextIntro,Free
波浪弹入,Text Animations,TextIntro,Free
渐显,Text Animations,TextIntro,Free
溶解,Text Animations,TextIntro,Free
滑动上升,Text Animations,TextIntro,Free
生长,Text Animations,TextIntro,Free
甩出,Text Animations,TextIntro,Free
站起,Text Animations,TextIntro,Free
缩小,Text Animations,TextIntro,Free
缩小_II,Text Animations,TextIntro,Free
羽化向右擦开,Text Animations,TextIntro,Free
羽化向左擦开,Text Animations,TextIntro,Free
翻动,Text Animations,TextIntro,Free
轻微放大,Text Animations,TextIntro,Free
逐字旋转,Text Animations,TextIntro,Free
逐字显影,Text Animations,TextIntro,Free
逐字翻转,Text Animations,TextIntro,Free
闪动,Text Animations,TextIntro,Free
随机弹跳,Text Animations,TextIntro,Free
随机飞入,Text Animations,TextIntro,Free
乱码故障,Text Animations,TextIntro,Free
二段缩放,Text Animations,TextIntro,Free
便利贴,Text Animations,TextIntro,Free
倒数,Text Animations,TextIntro,Free
兔子弹跳,Text Animations,TextIntro,Free
冰雪飘动,Text Animations,TextIntro,Free
发光模糊,Text Animations,TextIntro,Free
发光闪入,Text Animations,TextIntro,Free
叠影并入,Text Animations,TextIntro,Free
向上弹入,Text Animations,TextIntro,Free
向下溶解,Text Animations,TextIntro,Free
向右模糊_II,Text Animations,TextIntro,Free
向左模糊,Text Animations,TextIntro,Free
吸入,Text Animations,TextIntro,Free
呐喊声波,Text Animations,TextIntro,Free
喷绘,Text Animations,TextIntro,Free
圆柱体滚动,Text Animations,TextIntro,Free
圣诞帽弹跳,Text Animations,TextIntro,Free
圣诞树弹跳II,Text Animations,TextIntro,Free
弹入跳动,Text Animations,TextIntro,Free
弹性伸缩_II,Text Animations,TextIntro,Free
心动瞬间,Text Animations,TextIntro,Free
慢速放大,Text Animations,TextIntro,Free
打字光标,Text Animations,TextIntro,Free
抖动甩入,Text Animations,TextIntro,Free
折叠,Text Animations,TextIntro,Free
描边填充,Text Animations,TextIntro,Free
放大震动,Text Animations,TextIntro,Free
故障闪动,Text Animations,TextIntro,Free
新年打字机,Text Animations,TextIntro,Free
旋转缩放,Text Animations,TextIntro,Free
旋转飞入,Text Animations,TextIntro,Free
星光闪闪,Text Animations,TextIntro,Free
星光闪闪_II,Text Animations,TextIntro,Free
星星弹跳,Text Animations,TextIntro,Free
模糊发光,Text Animations,TextIntro,Free
模糊滚动,Text Animations,TextIntro,Free
模糊缩小,Text Animations,TextIntro,Free
汇聚,Text Animations,TextIntro,Free
波浪弹跳,Text Animations,TextIntro,Free
流光扩散,Text Animations,TextIntro,Free
滚入,Text Animations,TextIntro,Free
激光雕刻,Text Animations,TextIntro,Free
爱心弹跳,Text Animations,TextIntro,Free
玩雪,Text Animations,TextIntro,Free
环绕滑入,Text Animations,TextIntro,Free
生长_II,Text Animations,TextIntro,Free
电光,Text Animations,TextIntro,Free
电光_II,Text Animations,TextIntro,Free
碰碰车,Text Animations,TextIntro,Free
空翻,Text Animations,TextIntro,Free
缤纷冲屏,Text Animations,TextIntro,Free
缩放_III,Text Animations,TextIntro,Free
翻页II,Text Animations,TextIntro,Free
背景滑入,Text Animations,TextIntro,Free
色散拖影,Text Animations,TextIntro,Free
螺旋上升,Text Animations,TextIntro,Free
跃进,Text Animations,TextIntro,Free
跳跳捣蛋鬼,Text Animations,TextIntro,Free
跳跳糖,Text Animations,TextIntro,Free
辉光,Text Animations,TextIntro,Free
辉光扫描,Text Animations,TextIntro,Free
逐字弹跳,Text Animations,TextIntro,Free
逐字旋入,Text Animations,TextIntro,Free
金粉飘落,Text Animations,TextIntro,Free
镂空跳入,Text Animations,TextIntro,Free
闪烁集合,Text Animations,TextIntro,Free
随机上升,Text Animations,TextIntro,Free
随机弹跳_II,Text Animations,TextIntro,Free
随机打字机,Text Animations,TextIntro,Free
随机落下,Text Animations,TextIntro,Free
随机集合,Text Animations,TextIntro,Free
雪光模糊,Text Animations,TextIntro,Free
音符弹跳,Text Animations,TextIntro,Free
顶出,Text Animations,TextIntro,Free
预览打字,Text Animations,TextIntro,Free
飞入,Text Animations,TextIntro,Free
鼠标点击,Text Animations,TextIntro,Free
# JianYing TTS Speakers Library
# AI Guidance: Use speaker_id with TTS APIs or wrapper methods for voice generation.
# Schema: speaker_id,name_hint,categories
speaker_id,name_hint,categories
zh_female_xiaopengyou,小孩,tts|热门
zh_male_iclvop_zhangjinxiangnanzhu,磁性男声,tts|热门
BV408_streaming,译制片男,tts|热门
zh_male_iclvop_xiaolinkepu,清亮男声,tts|热门
zh_male_sunwukong_clone2,猴哥,tts|热门
zh_male_xionger_stream_gpu,熊二,tts|热门
BV411_streaming,解说小帅,tts|热门
ICL_zh_female_basidigua2,甜美女声,tts|热门
BV701_streaming,沉稳解说,tts|热门
BV005_streaming,娱乐扒妹,tts|热门
zh_female_yingtiannini,蜡笔小妮,tts|热门
zh_female_inspirational,温柔姐姐,tts|热门
zh_male_zhengtaikp,萌娃百科,tts|热门
BV001_fast_streaming,小姐姐,tts|热门
BV414_streaming,赛事解说,tts|热门
BV433_streaming,电视广告,tts|热门
zh_male_novel_clone2,古风男主,tts|热门
zh_female_ziwei,紫薇,tts|热门
zh_male_silang_stream_gpu,皇上,tts|热门
BV021_streaming,东北老铁,tts|热门
BV426_streaming,懒小羊,tts|热门
ICL_zh_female_jilupianxq2,端庄女声,tts|热门
BV405_streaming,甜美解说,tts|热门
zh_male_iclvop_chenxuanad,朗诵男声,tts|热门
zh_female_iclvop_zdjxsusuyule,萌萌小可酱,tts|热门
ICL_zh_female_manbo_jianying,曼波讲故事,tts|热门
BV504_streaming,Energetic Male (English),tts|热门
zh_female_iclvop_gzycwxiangling,俏皮少女,tts|热门
zh_female_peiqi,佩奇猪,tts|热门
BV056_streaming,阳光男生,tts|热门
zh_male_iclvop_miaojijsqinggan,深情男低音,tts|热门
ICL_zh_female_pangbaiyw,专题片配音,tts|热门
zh_male_taiwan_clone2,台湾男生,tts|热门
zh_female_iclvop_zdjxsusujiaomai,步行街促销女,tts|热门
BV213_streaming,广西表哥,tts|热门
zh_female_iclvop_zdjxsusukeli,娱乐小喇叭,tts|热门
BV430_streaming,容嬷嬷,tts|热门
BV409_streaming,TVB女声,tts|热门
BV064_streaming,小女孩,tts|热门
zh_female_iclvop_zdjxsmmguwen,古文朗诵,tts|热门
en_female_kat_clone2,英语女王,tts|热门
zh_female_aoyunliuyuxi,刘语熙,tts|热门
BV144_streaming,咆哮哥,tts|热门
ICL_zh_male_qinggandiantai,情感频道,tts|热门
zh_female_ganmaodianyin,感冒电音,tts|热门
BV403_streaming,心灵鸡汤,tts|热门
zh_female_iclvop_dzyboyin,新闻女主播,tts|热门
zh_female_iclvop_gzylxjasmr,低声耳语,tts|热门
BV002_streaming,新闻男声,tts|热门
ICL_zh_male_jilupianjmh,激昂旁白,tts|热门
zh_male_iclvop_zdjxjamesguangbo,接地气解说,tts|热门
ICL_zh_female_feihuahua,肥花花姐姐,tts|热门
BV007_streaming,亲切女声,tts|热门
zh_male_iclvop_zhanghangxiaoshuo,新闻男主播,tts|热门
zh_male_iclvop_gzywzqyinrounan,阴柔霸气男,tts|热门
zh_male_rulaifo,如来佛祖,tts|热门
BV102_streaming,知识讲解,tts|热门
ICL_zh_female_kepumanbucuo,欢快讲解,tts|热门
ICL_zh_male_houzhongzhengqi,厚实男声,tts|热门
zh_male_iclvop_surenalongjilupian,经典旁白,tts|热门
BV011_streaming,新闻女声,tts|热门
ICL_zh_female_jilupianlxj3,纪录片女声,tts|热门
zh_female_jiazi,做作夹子音,tts|热门
zh_male_commentate_emo_neutral,舌尖解说,tts|热门
BV009_DPE_streaming,知性女声,tts|热门
ICL_zh_male_dengxiansencx,方言吐槽,tts|热门
BV025_streaming,台湾女生,tts|热门
zh_female_f220_yule,娱乐扒妹II,tts|热门
zh_male_nezha,小魔童,tts|热门
BV051_streaming,萌娃,tts|热门
zh_male_iclvop_surenyyypeixun,企业宣讲师,tts|热门
zh_female_iclvop_zdjxdyztjilupian,温情旁白,tts|热门
zh_male_vopyounan,沉稳男声,tts|热门
ICL_zh_male_shuyisyh,温暖男声,tts|热门
zh_female_guaiqiaogirl,甜心妹妹,tts|热门
zh_male_ad,广告男声,tts|热门
zh_male_hougedaiyu,娇羞猴哥,tts|热门
zh_female_ziwei_rap,紫薇说唱,tts|热门
zh_female_chuanmei,川妹子,tts|热门
BV145_streaming,情感语录,tts|热门
zh_male_taiyizhenren,太乙,tts|热门
zh_male_iclvop_limintaodianshang,讲解男声,tts|热门
BV417_streaming,派星星,tts|热门
ICL_zh_male_momodianying,默默讲电影,tts|热门
zh_male_renmao_mars_bigtts,周星星,tts|热门
zh_male_iclvop_huaxuekepu,清爽男声,tts|热门
zh_female_iclvop_gzyxqmama,温婉女声,tts|热门
zh_male_zhubajie_clone2,八戒,tts|热门
zh_male_beautymakeup,柜哥,tts|热门
BV210_streaming,西安掌柜,tts|热门
zh_female_iclvop_zdjxsmmjiaomai,叫卖女声,tts|热门
BV050_streaming,动漫小新,tts|热门
ICL_zh_male_szrhejiaxing2_jianying,激昂男生,tts|热门
BV506_streaming,Adorable Girl (English),tts|热门
BV221_streaming,幺妹,tts|热门
zh_male_iclvop_gzyyldada,喜庆拜年娃,tts|热门
BV149_streaming,随性女声,tts|热门
zh_male_iclvop_djlticaiboyin,新闻男主播2,tts|热门
BV063_streaming,动漫海绵,tts|热门
zh_female_aoyunwuminxia,吴敏霞,tts|热门
zh_female_iclvop_zdjxsusuxiaoqiao,甜美小乔,tts|热门
ICL_zh_male_malacx,搞怪弟弟,tts|热门
ICL_zh_female_szrtangtang_jianying,生活导师,tts|热门
zh_female_meilinvyou_moon_bigtts,魅力女友,tts|热门
zh_male_sunwukong_rap,猴哥说唱,tts|热门
BV406_streaming,网文解说,tts|热门
zh_male_voplvyou,播音旁白,tts|热门
ICL_zh_male_kenanwaww_jianying,名侦探小子,tts|热门
ICL_zh_female_genzhengmiaohong,知青小红,tts|热门
BV026_streaming,粤语男声,tts|热门
BV425_streaming,黛玉,tts|热门
zh_male_iclvop_xssyhguanggao,宣传男声,tts|热门
ICL_zh_male_renji_jianying,抽象苦命音,tts|热门
zh_male_nailong,萌萌小龙,tts|热门
zh_male_iclvop_gzyzhzhengqi,壮阔旁白,tts|热门
zh_female_yqxiaokui,元气少女,tts|热门
zh_female_iclvop_xstaiyangguangbo,新闻女主播2,tts|热门
ICL_zh_male_fuheizhenjun,腹黑真君,tts|热门
ICL_zh_male_linzhijincx,耍酷解说,tts|热门
ICL_zh_female_gujiali,活泼莉莉,tts|热门
zh_male_shaonianzixin_moon_bigtts,阳光少年,tts|热门
zh_male_iclvop_xiaolinlaotou,智慧老者,tts|热门
ICL_zh_female_szrxinxin_jianying,温柔馨馨,tts|热门
ICL_zh_male_cwei2,C维游戏解说,tts|热门
zh_female_story,少儿故事,tts|热门
zh_male_iclvop_chenxuanqinggan,温柔男主,tts|热门
BV107_streaming,雅痞大叔,tts|热门
zh_female_lrltygklndxs_emo_v2_mars_bigtts,清润女声,tts|热门
zh_female_iclvop_wuxinyunvzhu,深情诉说,tts|热门
zh_female_gentlemother,观音菩萨,tts|热门
zh_male_iclvop_gzygymdudu,呆萌胖娃,tts|热门
zh_male_iclvop_chenxuankepu,科普男声,tts|热门
zh_male_iclvop_xsymzguanggao,饱满男声,tts|热门
zh_female_tianxingirl,乖巧妹妹,tts|热门
zh_male_rendongteng,纪录片解说,tts|热门
zh_male_changtianyi_xuanyi,悬疑解说,tts|热门
zh_female_diantaiguanggao,电台广播,tts|热门
zh_female_iclvop_gzycwwenrou,盐系女生,tts|热门
BV019_streaming,重庆小伙,tts|热门
zh_male_iclvop_xsfzzjiangjun,正气男声,tts|热门
zh_male_xlgaoxiaonan_emo_v2_mars_bigtts,清亮男声Pro,tts|热门
zh_male_iclvop_xsskdjieshuo,讲解旁白,tts|热门
BV214_streaming,河南大叔,tts|热门
BV427_streaming,天线波波,tts|热门
zh_male_gukongbu,恐怖电影,tts|热门
zh_female_iclvop_jiangsiqitongsheng,乖巧女孩,tts|热门
zh_male_iclvop_zhanghangyeye,和蔼爷爷,tts|热门
zh_female_guli_stream_gpu,顾姐,tts|热门
BV212_streaming,天津小哥,tts|热门
BV431_streaming_effect,威猛震天,tts|热门
BV401_streaming,促销男声,tts|热门
zh_female_iclvop_xsnanfeng,年轻主妇,tts|热门
zh_female_angela,安琦拉,tts|热门
zh_male_iclvop_gzymxyqinggan,感性磁声,tts|热门
ICL_zh_female_mizige,活泼主播,tts|热门
zh_male_iclvop_miaojijsjilupian,深沉讲述,tts|热门
BV432_streaming,云龙哥,tts|热门
BV424_streaming,靓女,tts|热门
BR001_streaming,说唱小哥,tts|热门
zh_female_linzhiling,玲玲姐姐,tts|热门
zh_female_iclvop_zdjxsusunuanuan,奇迹少女,tts|热门
ICL_zh_female_huoponvhai,活泼女孩,tts|热门
ICL_zh_female_guoyannan,情感老师,tts|热门
Agent Playbook
Task routing matrix for reliable execution.
0) Quick Edit Runtime Template (Default for "来个剪辑")
Use this fixed sequence:
1. Environment check (minimal):
- verify Python works
- verify draft root exists
2. Asset resolution:
- use explicit local/cloud assets
- only call
asset_search.pywhen user asks for style/effect lookup
3. Script assembly:
- generate one runnable script with deterministic APIs
4. Execute once:
- run script and capture success/failure output
5. Acceptance check:
- validate draft and track structure (see checklist below)
Acceptance Checklist (Mandatory)
- Draft folder exists under JianYing drafts root
project.save()completed successfully- At least one
videotrack segment exists - If BGM exists, it must be on
audiotrack (notvideo) - If narration exists, subtitle segments should exist and be time-aligned
1) Cloud Video + BGM Draft
- Read:
rules/setup.md,rules/media.md,rules/audio-voice.md - Reference:
examples/cloud_video_music_tts_demo.py - Required checks:
- BGM goes to audio track.
- project saved successfully.
2) Narration + Subtitle Alignment
- Read:
rules/text.md,rules/audio-voice.md - APIs:
add_tts_intelligent,add_narrated_subtitles - Required checks:
- subtitle timing aligns with narration.
- subtitle track exists.
3) Recording + Smart Zoom
- Read:
rules/recording.md - Execute:
tools/recording/recorder.py - Required checks:
- recording output exists.
- generated draft can be opened.
4) Effects / Transitions
- Read:
rules/effects.md,rules/keyframes.md - Tools:
scripts/asset_search.py - Required checks:
- selected IDs resolved.
- no None returns from effect/transition methods.
5) Commentary from Long Video
- Read:
rules/generative.md - Prompt:
prompts/movie_commentary.md - Execute:
scripts/movie_commentary_builder.py - Required checks:
- input media pre-optimized (<=30 min, 360p preferred).
- storyboard JSON parsed and applied.
6) Export and CI-facing Validation
- Read:
rules/core.md,rules/cli.md - Execute:
scripts/auto_exporter.pyscripts/api_validator.py --json- Required checks:
- output file exists.
- CLI return code and JSON contract are valid.
Minimal Command SOP
Use this SOP for simple editing requests to minimize noisy exploration.
Goal
- Produce one runnable script
- Run once
- Validate result with fixed checks
Step 1: Minimal Environment Check (2 commands max)
macOS
python3 --version
ls ~/Movies/JianyingPro\ Drafts/ 2>/dev/null || echo "Draft path not found"Windows
python --version
Test-Path "C:\Users\Administrator\AppData\Local\JianyingPro\User Data\Projects\com.lveditor.draft"If draft path differs, set JY_PROJECTS_ROOT and continue.
Step 2: Asset Check (1 command)
macOS
ls .agent/skills/jianying-editor/assets/Windows
Get-ChildItem .agent\skills\jianying-editor\assets -FileDo not recursively scan the whole workspace unless asset lookup fails.
Step 3: Script Generation
- Create exactly one script in workspace root, e.g.
simple_edit.py. - Use deterministic APIs only:
JyProject(...)add_media_safe(...)add_cloud_media(...)oradd_cloud_music(...)add_text_simple(...)/add_narrated_subtitles(...)save()
Step 4: Single Execution
python simple_edit.pyIf failed, patch script once based on the concrete error, then rerun once.
Step 5: Acceptance Validation (Mandatory)
Verify all:
- Draft directory exists
- Save success log appears
- At least one video segment exists
- BGM is on audio track (if used)
- Subtitles exist when narration exists
Error Handling Rules
SegmentOverlap: move clip start to track end or separate track.- Missing asset: switch to known local asset or valid cloud ID.
- Import/path failure: set
JY_SKILL_ROOT, rerun bootstrap.
Anti-Patterns (Avoid)
- Repeated recursive directory scanning over full workspace
- Temporary introspection files (
*_dir.txt,output.txt) unless debugging is explicitly requested - Multiple style/effect searches before first successful draft generation
MIT License
Copyright (c) 2026 luoluoluo22
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1.5.0
Related skills
How it compares
Pick jianying-editor over generic ffmpeg skills when the production target is the Jianying/CapCut desktop editor with its native API and project format.
FAQ
What does jianying-editor do?
剪映 (JianYing) AI自动化剪辑的高级封装 API (JyWrapper),提供开箱即用的 Python 接口,支持录屏、素材导入、字幕生成、Web 动效合成及项目导出。全面适配 MacOS (Apple Silicon/Intel) 与 Windows,支持 v5.9+ (draft_info.json).
When should I use jianying-editor?
User asks about jianying editor or related SKILL.md workflows.
Is jianying-editor safe to install?
Review the Security Audits panel on this page before installing in production.