[便携包补充说明]
为避免字体授权和再分发问题，便携包不再内置额外字体文件。如需自定义字体，请使用字体工具选择系统已安装字体，或通过 浏览字体文件 安装你自备且有授权的字体文件。

[2.26.0] - 2026-05-12
修改：nekotoon环境光的算法，减小明暗对比
修改：更新readme_l4n的问题指南
[2.25.1]
修改：mat_neko_allow_invert_tonemap的默认值设置为1

问题指南：
    本指南还包含了一些起源引擎的历史遗留问题，或其它游玩现代l4d2时可能会遇到的第三方问题
    测试特定情况时请多次测试求平均
    如果发现是和l4n有关的问题，请及时反馈
    a.检查显卡驱动/dxvk/reshade的版本，回退或升级版本，dxvk优先尝试2.3版本
    b.禁用dxvk、禁用reshade、禁用录屏类性能指示器之类的工具
    c.检查启动项，l4n生效的情况下可以在控制台运行l4n_print_launch_options
    d.二分法禁用部分mod来排查是否和mod有关系(不要依赖游戏内的冲突检测和mod列表，参考下方话题)，插件也是如此
    e.尝试不通过steam来启动游戏，如运行游戏根目录的"left4dead2 no-insecure.bat"
    f.参考下方话题
    g.将游戏文件夹备份，steam重新下载游戏，安装l4n，再慢慢把自己用到的东西加回来

    给游戏加上"-hide_neko"启动项可以禁用l4n
    尝试使用不同的游戏启动方式时，你可能需要检查或迁移启动项，steam游戏属性里的启动项能生效的前提是需要通过steam启动游戏，bat或者快捷方式启动也是同理
    l4n目前不兼容HLAE

    模型边缘抖动鬼畜穿模面闪烁：
        在世界坐标绝对值很大的区域，如官图c8m3_sewers开局安全屋里会遇到, 控制台运行status能看到x坐标的数值特别大有1w左右，这是3d游戏会面临的坐标精度问题，地图作者做图时应避免此类问题

    贴花生成在高面数模型上的崩溃：
        贴花是指类似喷漆能贴在表面的效果，弹孔血迹等都是用贴花实现的，被特感攻击时会生成血迹贴花
        贴花在生成时会复制目标表面的网格，默认的缓冲区大小有限，遇到超过一定面数的网格时会出现内存溢出导致崩溃
        模型作者应避免单个$bodygroup/$body/$model里每个材质的面数不超过特定大小(大概是65536)
        也可通过在材质里添加$nodecal 1禁止在该材质表面生成贴花

    Too many xx for xx buffer引擎错误弹窗：
        这和单帧里突然出现的几何体数量有关，尤其是生成贴花时会复制网格(如果贴花目标表面的面数很大)
        https://developer.valvesoftware.com/wiki/Too_many_indices_for_index_buffer
        可以通过修改l4n配置文件(convif.vdf)里的index_buffer_size或vertex_buffer_size来提高缓冲区大小
        修改会有屏幕炸面花屏的风险(此时本该弹窗)，引擎内部的逻辑不能妥善处理大于32768的缓冲区大小，目前的补丁只是为了防止触发错误弹窗

    L4D2是32位程序，实际只能使用3gb左右的内存，接近上限时游戏会越来越不稳定直到崩溃
    控制台命令l4n_game_usage 1可以监视内存占用(av项是游戏的可用内存大小，越低越危险，dc是datacache占用，ents是实体数量峰值)
    注意：dxvk/dx9和引擎的其它模块、游戏客户端服务端实体、引擎datacache等是会挤占内存的

    贴图占用大量内存：
        引擎在提交贴图数据给dx9时，使用了默认的内存管理，此时dx9在上传贴图到gpu显存时会留一份副本在cpu内存上，这会导致内存占用特别高(贴图是mod里最占空间的资产)，要避免该问题请使用dxvk来代替原生dx9，dxvk对这种情况有特殊优化
        无法使用dxvk的情况下，可以进视频设置里将"模型/纹理细节"和"可用的页池内存"调为低，游戏将加载低分辨率的贴图来减少内存占用

    动态光源：
        https://developer.valvesoftware.com/wiki/Light_dynamic
        引擎对动态光源的优化不是特别好，在某些复杂场景下会导致帧数爆降

    DXVK安装:
        首选：
            将dxvk安装包内d3d9.dll复制到游戏主程序旁边
            确保没有-vulkan启动项
        次选：
            除非首选方法失败，否则不建议使用-vulkan启动项
            -vulkan启动项的DXVK dll位置在bin/dxvk_d3d9.dll，版本很老，可以手动替换成新版dxvk的dll
        注意：
            请不要将dxvk安装包里64位的dll给32位的程序用
            使用dxvk后，Reshade的安装要选择Vulkan
            如果dxvk不能正常使用，如全屏模式出现异常，尝试去修改dxvk的配置文件
        确定dxvk是否生效：
            控制台运行l4n_env_report
            如果是-vulkan启动项，可以在任务管理器里看到游戏的标题里是否带了vulkan
            删除游戏根目录下的left4dead2_d3d9.log，启动游戏能否看到该文件的生成

    着色器缓存：
        不同版本的l4n着色器功能会有差别，安装/更新/切换版本后可能会触发着色器缓存编译
        切换显卡驱动版本或者dxvk版本时，包括第一次使用dxvk，可能触发着色器重编译(包括引擎自带的着色器)
        着色器编译时可能出现掉帧，内存占用高的情况，如果很长一段时间后问题依旧，尝试按照以下指南清除着色器缓存
            控制台运行l4n_open_shader_cache_dir打开着色器缓存目录后关闭游戏
            如果是550文件夹，删除目录下的所有文件夹
            如果是AMD或NVIDIA文件夹，某些厂商的命名会有出路，删除所有Cache结尾的文件夹最稳妥
            打开失败或其它GPU核心厂商的情况下，请自行搜索方法

    mod检查的注意事项：
        地图类mod可能会有隐式的模型、材质或脚本污染冲突的问题，因为这类mod带有战役标签，冲突检测会忽略这类mod
        如果是创意工坊订阅的mod，引擎会使用创意工坊的信息来代替addoninfo的部分参数
        某些mod因为bug不会显示在游戏内的mod管理列表里
        bug mod出现的可能原因有：mod没有提供info；mod文件名或路径过长或者出现特定字符
        mod挂载和mod列表显示是两套逻辑，bug mod能够正常生效，这也意味着也bug mod能够和正常mod产生文件冲突
        冲突检测只在mod列表里显示的mod之间检测和提示，bug mod可能会产生隐患或不必要的困扰
        已知冲突检测不会检测addonimage.jpg/addoninfo.txt/sound.cache等
        addons目录下的某个文件夹里如果有addoninfo.txt，该文件夹会被文件系统挂载，你可能在解包vpk时不经意留下了这种文件夹
        因为以上种种原因，不能完全信任mod列表和冲突检测结果
        mod管理推荐：
            使用资源管理器
            打开bin\neko\vpkshellextensions文件夹(游戏根目录或l4n安装包)，获取vpk的资源管理器插件还有安装教程
            打开详细信息窗格，用于显示info信息(作者、标题、地图代码、封面、描述等)
            可以根据info信息排序，搜索(和mp3、doc这类资源管理器默认支持的文件使用是一样的)
            通过将文件移动到别处的方式来禁用mod
        更彻底的冲突检测：
            在控制台运行l4n_force_dummy_addoninfo
            打开内游戏内mod列表
            发现冲突后打开控制台，查看哪些文件冲突了
            注意：冲突检测只检测资产路径冲突，能过冲突检测不能代表和其它mod之间一定没有兼容性问题
        查看实际挂载的mod：
            默认情况下，起源文件系统在读取资产时，遵循以下2点：
                1.先从排名第一的挂载点开始读取文件
                2.遵循第一点的情况下，vpk优先级比文件夹高
            在控制台里查看起源文件系统的挂载点：
                查看vpk运行：show_addon_load_order
                查看文件夹运行：path

    datacache(dc)：
        默认情况下引擎的dc内存上限是256mb
        达到dc上限后可能出现音频卡顿无声、帧数爆降、游戏不稳定崩溃等问题
        一些三方图自带的资产比较大，会直接把256吃满，如黎明或切尔诺贝利
        通过添加-heapsize启动项来修改上限，单位是kb，有数值溢出的bug，不合适的数值大小可能会出现问题
        使用l4n时会被强制锁定到2048MB，这个大小一般是吃不满的，不必过多担忧
        
        // 控制台运行"mem_dump"或者"cache_print_summary"可以查看dc的详细占用以及实际上限，最后一行可以看到所有dc项的内存占用总和
        // 以下是"Datacache reports"的说明：
        //      [WaveData]是音频缓存，满了会自动清理旧音频数据。
        //      当前l4n版本将上限锁定到512mb，因为太高会导致无用的音频数据一直堆积，挤占浪费内存空间
        //      里面会有角色语音、枪声、音乐、等..

        //      [AnimBlock]是模型动画的缓存
        //      如果占用特别高(如200mb)的话，可能是装了跳舞相关的动画mod，已知此类mod最高能包含100个舞蹈左右，
        //      一个舞蹈大概1到2分钟，加起来内存占用非常的直观，建议在不需要时禁用此类mod
        //      也可以通过禁用xdReanimsBase来达到让所有的动画mod失效的效果
        
        //      [Modelxxxx]是模型的缓存，大小主要和模型的面数有关
        //      用于存放当前地图要用到的模型，如幸存者、武器、车辆、盆栽、感染者等...
        //      进地图后在控制台运行"cache_print"输出内存占用最高的模型
        //      路径里带survivor或infected的是角色模型，一般排最前面（角色模型的体积大，精度要求会比较高）
        //      路径里带w_models或者v_models则是武器的第三人称或第一人称模型

        // 其它没提到的项目是无关紧要的

    "no free edicts"错误弹窗：
        https://developer.valvesoftware.com/wiki/Entity_limit
        游戏中实体的数量达到2048会触发，目前没有有效的非官方措施对这个上限进行修补
        -num_edicts启动项是属于金源引擎的启动项，在起源上没有任何作用
        除非v社官方出手，第三方想解决该问题的工作量和难度很大，实体是客户端/服务端逻辑里最常见的对象，第三方需要要找出大量的点位进行修补，客户端和服务端都要一并修补，因为实体是需要在客户端和服务端之间进行网络同步的
        某些地图开局占用能到1700左右，加上服务器插件或者vscript脚本一般会生成一些实体，这会增加遇到该问题的风险

安装/更新：
    将安装包内所有的文件复制覆盖到游戏根目录即可
    仅安装着色器则跳过复制exe文件
卸载：
    在游戏目录里搜索left4dead.exe和game_shader_generic_neko.dll删除即可，staem在启动游戏时会重新下载left4dead.exe
    删除其它文件不是必须的，这些文件不会被游戏使用
注意：
    和dxvk和reshade类似的免责声明，使用时风险自负
    启动项加"-insecure"可以避免进入启用vac的服务器

制作用于NekoSky的叠加纹理：https://rafradek.github.io/Mishcatt/
    背景需纯黑，建议使用RGB888的格式，DXT系列不适合带线条的插画
    vtf文件放在游戏根目录的left4dead2/materials里，控制台设置贴图示例：mat_nekosky_overlay_lf "vtf文件名或留空"

===========基本功能==========
    主菜单(l4n_menu)默认按"\"显示，"-"上一页 "+"下一页
    默认解锁-heapsize的512mb上限，该上限与声音卡顿丢失、部分闪退、帧数爆降有关
    使-heapsize的大小能够完整传递到引擎的datacache模块，该模块的接口接收uint的字节数单位(b)数值，引擎在调用前使用了int来计算字节数，导致实际数值不可控，如2097152kb因为int溢出实际为1kb
    玩家模型身高调整
    字体替换
    为addoninfo出现问题的mod添加元数据
    强制幸存者手模与第三人称模型同步
    玩家模型死亦瞑目
    修复了客户端预测播放了空数据的动画导致闪退（使用xdReanimsBase时可能会遇到这种bug）
    游戏崩溃前的问题检测和提示，有助于找到崩溃原因
    有关convar或concmd的详细说明在下方，ctrl+f以快速定位

======== Neko_Engine_Post着色器 ======
添加“-l4n_use_neko_engine_post”启动项来使用，l4n将接管引擎的后处理渲染
添加启动项后能够提供以下功能：
色调映射：能够使画面亮处不会过曝丢失太多细节，脱离老引擎的刻板印象
伽马调整(gamma)：和视频设置里亮度滑块类似的作用，可以在非独占全屏时生效
泛光(NekoBloom)：使画面亮处更有氛围感

========以下功能需要MOD适配========
    形态键眼追
    PBR着色器(有功能可以自动适配)
    NekoToon着色器(有功能可以自动适配)
    NekoSky着色器(有功能可以自动适配)
    vpk音频库与pcf粒子的额外加载，无需mainfest依赖
    模型的组件切换与材质切换
    动画实体的足IK修正
    数字显示着色器
    新增的材质代理
    l4n_survivor
        普通人物mod是通过替换八个角色的模型文件来实现的，只能在那八个文件里做文章，装了重复的mod会在游戏里显示红字冲突，适配了l4n_survivor的mod通过扩充文件，不会遇到这种问题
        l4n扫描所有扩充的模型文件，将玩家实体的模型进行替换，跳出八个模型文件的维度，短板取决于玩家数量或已安装适配mod的数量
        以玩家实体为单位意味着非玩家实体是不会被影响的，非玩家实体在客户端看来是不知道和哪个玩家有关联的，l4n对这种情况做了有限的猜测和适配(能被电击的幸存者死亡实体，第一人称腿插件生成的实体，倒地爬行动画插件生成的实体)
        多人联机可能会出现多个玩家都是zoey的情况，l4n不应该通过角色模型来判定所属玩家，这样又会被困到八个的维度里
        通过安装包附带的工具“to_l4n_survivor”，可将传统八人包mod转换成适配l4n_survivor的mod
        此功能的使用与传统八人包mod的使用是冲突的，避免混合使用以免造成不必要的困扰
        使用的模型是动态加载的，无用的角色模型会释放内存占用，新玩家加入时可能会卡顿

to_l4n_survivor工具说明
    用于将八人包mod转换成支持l4n_survivor的mod
    请不要混合别的mod一起转换，比如拿a角色替换bill和b角色替换zoey(以此类推)的vpk一起
    因为一二代角色里每个角色使用的动画顺序和数量是不一样的
    所以需要你能够提供某个角色模型替换所有游戏角色的mod(总共八个)
    同时选中八人包里的替换八个游戏角色的vpk，一同拖动到exe上即可开始转换
    基础材质也可以一并拖进去，如果没有额外的材质包(如组件开关vpk)的话

控制台命令，包含了一些上面没提到的功能：
部分convar的值是不会保存的
如果停用了l4n后则保存的值可能会丢失，为了防止这种情况可以把convar写进autoexec.cfg里
【ConVar】
    l4n_allow_flashlightmuzzleflash 1   是否允许第一人称手电筒火光
    l4n_game_hud_visible 1，            控制游戏HUD的显示与隐藏；
    l4n_specialinfected_randommodel 0   特感随机使用一二代模型的开关
    l4nsurvivor 1                       是否启用l4nsurvivor功能，参数2则不替换队友模型
    l4nsurvivor_allocation_algorithm 1  l4n_survivor给除了自己的玩家分配模型的算法(0按userid，1根据steamid，2userid+随机数)
    l4nsurvivor_allow_bot 1             是否允许bot使用l4nsurvivor
    l4n_vm_sway 1                       v模视角转动滞后开关
    l4n_vm_sway_interp 0.1,             v模随视角转动滞后恢复时间，设置为0则禁用v模随视角转动的滞后(sway)效果
    l4n_vm_sway_scale 1.6,              v模随视角转动滞后幅度
    l4n_vm_sway_ignore_helpinghand 1    是否在触发伸手动画时禁用sway效果，启用后可能会导致一些插件的动画(如ADS)没有sway效果，禁用后可能会导致武器高频抖动
    l4n_vm_offset_y 0,                  全局v模位置偏移y
    l4n_vm_offset_z 0,                  全局v模位置偏移z
    l4n_vm_offset_x 0;                  全局v模位置偏移x
    l4n_menu_offset_x 0, 
    l4n_menu_offset_y 0;                控制l4n_menu显示的位置
    l4n_menu_font_size 32，             l4n_menu的字体大小
    l4n_commoninfected_noragdoll 0，    大于零禁用普通感染者死亡时的布娃娃效果，可以提供更清爽的清怪体验(需搭配-lv启动项使用)
    l4n_mat_colorcorrection 1，         是否允许色彩校正(颜色滤镜)
    l4n_tonemap_scale 1,                控制hdr的曝光强度，不支持禁用hdr的地图
    l4n_survivor_stylized_amibentlight 0，幸存者实体使用风格化环境光的开关
    l4n_survivor_lighting_scale 1,        控制幸存者实体的光照倍率
    l4n_game_usage 0,                   hud显示和引擎稳定性有关的数据(datacache，ents是实体峰值数量，av是游戏进程的可用内存)
    l4n_game_usage_pos 32，             控制l4n_game_usage显示的位置
    l4n_game_usage_padding 24，         控制l4n_game_usage距屏幕边缘的位置
    l4n_survivor_model_nodecal 0        是否禁用幸存者模型的贴花效果（血迹），修改后需重启游戏
    l4n_survivor_model_use_nekotoon 0   是否自动将幸存者模型的材质转换为NekoToon材质，修改后需重启游戏；自动转换的结果可能有bug，尤其是部分模型的脸部；参数2则禁用描边
    l4n_survivor_sequence_fix 1，       是否修复幸存者动画的潜在问题，修改后需重启
    l4n_prevent_varms_stretching 0      是否禁止第一人称手模动画里部分骨骼的拉伸
    l4n_player_list_show_steam_avatar 1         +l4n_player_list显示steam玩家头像
    l4n_player_list_clipped_item_icons 1        +l4n_player_list在渲染物品图标时使用游戏默认的裁切比例; 某些hud mod会有自定义的比例，设置为0或许能正确渲染
    l4n_engine_post_allow_local_contrast 1      是否允许使用局部对比度(-1仅负, 0完全禁用, 1正负, 2仅正)
    l4n_engine_post_allow_vomit 1               是否允许胆汁模糊视线效果
    l4n_survivor_scale 1.0                      全局修改幸存者的大小
    l4n_enhanced_material_pxory 1               是否增强部分材质代理，如EntityRandom会同步第一人称和第三人称
    l4n_proxy_entity_random_seed_offset 0.0     EntityRandom的随机数种子偏移
    l4n_force_skyname ""                        覆盖天空盒材质，使用参数""还原
    l4n_disable_survivor_bandage 1              是否禁用生还者模型的绷带粒子，默认禁用是因为调整身高的功能会和原版绷带粒子冲突
    l4n_auto_flush_unused_models 1              是否自动清理无用模型的缓存，参数0、1或2
    l4n_gui_font_fallback 1                     是否补足字体不支持的字符(目前只影响+l4n_player_list)，启用会加载更多字体增加内存占用
    l4n_player_identity_render_color 0          是否禁止玩家相关实体的染色
    l4n_mat_specular 1                          是否允许环境反射，相比mat_specular，此方法更加严格且快速
    l4n_env_cubemap_redirect 0                  启用时会尝试将env_cubemap的加载如"c1841_-940_69.hdr.vtf"重定向到"c1841_-940_69_hdr.pwl.vtf"
    l4n_use_nekosky 1                           是否使用l4n的nekosky着色器来渲染天空
    l4n_proxy 1                                 是否启用l4n的材质代理
    l4n_ambient_darkness_limit 0.0              环境光的暗度限制
    l4n_lightmap_darkness_limit 0.0             光照贴图的暗度限制
    l4n_charactor_model_random_scale 0.0        非零启用角色模型随机缩放，绝对值为缩放范围
    l4n_pin_viewmodel 0                         固定viewmodel实体
    l4n_allow_hud_team_player_display 1         允许HUD显示队友状态
    l4n_flashlight_factor 1.0                   手电筒亮度倍率
    l4n_flashlight_r 1.0                        手电筒颜色R倍率
    l4n_flashlight_g 1.0                        手电筒颜色G倍率
    l4n_flashlight_b 1.0                        手电筒颜色B倍率
    l4n_allow_lobby_cheats 0                    Can't use cheats now; please exit to main menu and start your own listen server with "map mapname" so that you could enable cheats.
    l4n_force_dummy_addoninfo 0                 参考上方mod检查的注意事项
【ConCommand】
    l4n_vm_offset2 [x/dx/y/dy/z/dz/reset] [value], 为当前使用的v模设置位置偏移，带d的是增量；参数reset归零xyz
    l4n_menu                                显示l4n主菜单
    l4n_survivor_sequence_test，            检查场景里幸存者模型的动画有无问题，一般是和动画mod有关
    +l4n_player_list，                      显示更多玩家信息的面板；添加参数1来bind后，则双击才能显示，单击显示原版计分板
    +l4n_lookat [itempickup/helpinghand]    触发物品或倒地队友伸手动画; bind按键后支持长按loop，双击相比单击多了前摇和后摇动画; 快速绑定："bind v +l4n_lookat"
    l4n_placelight exponent 1 radius 2000   放置动态环境光源，添加参数“remove”或绑定按键双击则移除。此功能适用于室内补光，动态光源的性能不好，可能会出现大幅掉帧
    l4n_vm_selfillum                        调整当前v模的自发光强度，有正负号时数值代表增量
    l4n_mat_showtextures                    相比mat_showtextures多了字符串匹配的功能
    l4n_vm_2pbr                             将当前v模的材质转换为PBR材质，适用于PBR2Source工具生成的材质；参数0还原材质
    l4n_print_launch_options                输出当前能被游戏识别的启动项
    l4n_reset_player_render_color           重置玩家实体的颜色
    l4n_env_report                          输出游戏运行环境的信息
    l4n_flush_unused_models                 立即清理无用模型的缓存
    l4n_random_player_render_color          随机玩家实体颜色
    l4n_to_nekotoon                         无参将自己的模型材质转为NekoToon，参数pickplayer针对准星处玩家，参数varms针对当前手模
    l4n_nekook_path_append "c:/test"        添加一个高优先级资产搜索路径，比VPK内的文件优先级高
    l4n_nekook_path_remove "c:/test"        移除一个高优先级搜索路径
    l4n_cvar                                输出或设置convar的值，主要用于控制台无法直接访问的convar
    l4n_revert_cvar "cvar_name"             使指定的convar恢复到默认值
    l4n_buildcubemaps                       一键配置好环境然后编译cubemaps，添加allow_specular参数则不禁用反射并编译；https://developer.valvesoftware.com/wiki/Cubemaps
    l4n_fast_record                         开始录制demo，自动命名
    l4n_refresh_entity_random               刷新所有实体的随机数
    l4n_clear_datacache                     清理datacache
    l4n_is_proxy_exist "proxy name"         检查材质代理是否存在
    l4n_open_shader_cache_dir               打开着色器缓存目录
    l4n_print_environment_variables         打印游戏进程的环境变量
    l4n_reload_vgui_schemes                 重载vgui，可用于替代mat_setvideomode修改分辨率触发重载的方法
    l4n_print_particles_manifest            输出particles_manifest的内容                   
【NekoShaders】
    mat_outline_thickness_scale 1.0     描边粗细倍率，0则关闭描边
    mat_pbr_where 0                     设置1则高亮闪烁PBR材质，用于查找哪些材质使用了PBR着色器
    mat_nekosky_overlay_                设置贴图路径，作为NekoSky天空盒某个面的叠加纹理，六个面的后缀是rt,bk,lf,ft,up,dn
    mat_nekosky_overlay_strength 1.0    NekoSky叠加纹理的强度
    mat_nekosprite_draw 1
    mat_neko_allow_invert_tonemap 1     是否抑制某些色调映射曲线对颜色的影响(仅支持部分着色器)，数值2则允许在nekobloom启用的情况下生效(可能会出现bloom过曝)
    nekotoon:
        mat_nekotoon_allow_lightwarp 1      是否使用非平展渲染
        mat_nekotoon_lambert_factor 1       环境或手电筒光照的阴影强度
        mat_nekotoon_lighting_scale 1.0     光照倍率
        mat_nekotoon_rimlight_boost 3.0     $rimlightboost的倍率
        mat_nekotoon_rimlight_viewmodel_boost 1
        mat_nekotoon_brightness_limit 1.0   渲染结果的亮度限制，用于避免模型过曝
        mat_nekotoon_darkness_limit 0.02    渲染结果的暗度限制
        mat_nekotoon_lazy_texture_load 0    是否在渲染时才加载对应材质的贴图
        mat_nekotoon_ignore_flat_normal 1   是否禁止使用"flat_normal"以提升性能，数值2则更严格
    neko_engine_post:
        mat_neko_tonemapping_algorithm 6    ToneMapping曲线(0:Linear/1:Reinhard/2:Filmic(神秘海域2)/3:CE(CryEngine2)/4:ACES(UE4默认)/5:GranTurismo/6:Neutral(Unity)/7:NAES/8:LOG2(终末地)/9:AgX)，需添加-l4n_use_neko_engine_post启动项才能使用
        mat_neko_tonemapping_force_linear 0 强制使用linear tonemapping，用于调试
        mat_neko_gamma 2.2                  和视频设置里亮度类似的效果，可以在非独占全屏时生效
        mat_neko_engine_post_after 0        对比原始画面的比例
        mat_nekobloom_luminance_threshold  NekoBloom激发亮度
        mat_nekobloom_scale                NekoBloom强度
        mat_nekobloom_max_brightness       NekoBloom亮度限制
        mat_nekobloom_radius               NekoBloom模糊半径

【config_template.vdf】
    平台配置文件，一些平台功能的调整都在这里。需要改成config.vdf才能生效

【VPKShellExtensions.dll】
    Windows资源管理器显示vpk文件略缩图和mod标题元信息的插件

【localize_overrides.vdf】用于覆盖本地化翻译文本

============For Modder==========
【neko_proxy.vmt】平台扩充的材质代理文档，目前有获取弹药数量和备用弹药数量的代理
"l4n/scripts/sound"目录下的txt文件会当做声音脚本加载，用于扩充声音事件(vpk里需要带sound.cache)。
示例：
    - l4n/scripts/sound/my_script.txt
    - sound/aaaa/ohhh.wav
    - sound/sound.cache
pcf和声音脚本的命名应该以“作者名_AK47.txt”类似的思路，减少与其他mod冲突的可能性；
"l4n/particles"目录下的任意的pcf文件会被粒子系统加载(文件名"!"前缀有对应的效果)，用于扩充粒子特效。
【mdl_extension.qc】适配l4n的qc示例
"left4dead2/shaders"目录下有着色器的vmt文档
【bin/neko/nekomdl.exe】更好，更快，更强大的mdl编译器
【bin/neko/nekook.exe】根据配置启动游戏或者引擎工具，同时将当前目录挂载到引擎的文件系统里，使当前目录的游戏资产能以最高优先级被引擎读取
【bin/neko/source_nekomimi.exe】音频工具，用于在wav语音之间复制口型数据，或者生成sound.cache(目前不支持带口型数据的sound.cache生成)
【bin/neko/copy_sentence.bat】从游戏原版语音文件复制口型数据到自定义语音文件的预设
【bin/neko/build_sound_cache.bat】用于快速生成sound.cache


===========更新日志==========
[2.25.0]
新增：convar l4n_allow_lobby_cheats
新增：convar mat_neko_allow_invert_tonemap
新增：convar l4n_force_dummy_addoninfo
修改：调整nekobloom的默认参数和算法

[2.24.1]
修改：更新readme_l4n的内容
修复：问题mod的判定能够应对新发现的情况

[2.24.0]
新增：convar l4n_flashlight_r/g/b
修复：l4n_flashlight_factor值超过1时导致某些材质渲染异常
修复：l4n_menu的翻页指示器显示错误
修复：config_template.vdf内sv_cheat的拼写错误
修复：使用l4nsurvivor模型的玩家闲置时，hud头像显示失效的问题

[2.23.0]
新增：config.vdf配置项"custom_commands"
新增：concmd l4n_print_particles_manifest
修复：一些配置的读取能够遵循前后顺序，提升用户使用相关功能的体验
修复：particles_manifest的修补不遵循书写顺序

[2.22.0]
修复：NekoBloom遇到负像素值时出现黑色多边形
修复：一些配置的读取能够遵循前后顺序，提升用户使用相关功能的体验
新增：convar mat_nekosprite_draw

[2.21.0]
新增：concmd l4n_reload_vgui_schemes，重载vgui，可用于替代mat_setvideomode修改分辨率触发重载的方法
新增：concmd l4n_revert_cvar，使指定的convar恢复到默认值
新增：convar mat_nekobloom_radius

[2.20.0]
修改：优化NekoBloom的算法，使效果更自然
新增：convar l4n_flashlight_factor
新增：convar mat_neko_bloom_max_brightness
修改：mat_neko_bloom_luminance_threshold默认值设置为2
修改：mat_neko_bloom_scale的单位
修改：将所有带neko_bloom字符的convar改名为nekobloom，规避scale单位修改带来的兼容性问题

[2.19.3]
修复：NekoBloom出现鬼影的bug

[2.19.2]
修改：优化NekoBloom的默认参数和性能

[2.19.1]
修改：更新版本号

[2.19.0]
新增：neko_engine_post泛光效果(NekoBloom)
新增：convar mat_neko_engine_post_after
新增：convar mat_neko_bloom_luminance_threshold
新增：convar mat_neko_bloom_scale

[2.18.1]
修改：l4n_open_shader_cache_dir能够打开NVIDIA或AMD驱动层的着色器缓存文件夹

[2.18.0]
新增：英语本地化支持 
新增：concmd l4n_is_proxy_exist
新增：材质代理"SelectFirstIfNonZero"
修复：neko_engine_post渲染胆汁效果时的控制台报错
新增：concmd l4n_open_shader_cache_dir
新增：concmd l4n_print_environment_variables
修复：不适配l4n的幸存者模型无法被切换成胆汁污渍材质
修复：l4n_allow_flashlightmuzzleflash的默认值不为1

[2.17.0]
修改：更新l4n survivor的规范，新规范增加了VGUI头像和倒地背景图片的支持（在客户端渲染显示方面，暂时不支持计分板）
修改：to_l4n_survivor.exe能够生成带VGUI头像和倒地背景图片的vpk
新增：convar l4n_allow_hud_team_player_display

[2.16.2]
修复：添加-l4n_use_neko_engine_post启动项后，实体外描边颜色空间不正确的问题

[2.16.1]
新增：启动游戏的bat脚本，如果遇到内存问题可尝试使用该脚本启动游戏
修改：使mat_neko_gamma能够保存状态

[2.16.0]
修复：neko_engine_post的负局部对比度效果异常
修改：l4n_menu新增更多控制局部对比度的选项

[2.15.0]
修改：mat_neko_gamma的单位
修改：neko_engine_post使用标准曲线进行srgb输出而非近似曲线
修复：l4n_game_usage计算datacache时溢出的bug

[2.14.1]
修复：neko_engine_post晕影和胆汁模糊效果颜色空间异常
修复：添加-use_neko_engine_post启动项后，nightvision滤镜过亮

[2.14.0]
修复：neko_engine_post晕影效果异常
修改：neko_engine_post支持局部对比度

[2.13.0]
修改：neko_engine_post着色器支持胆汁效果

[2.12.0]
修改：使色调映射在不带hdr光照数据的地图里正常工作
删除：convar l4n_force_hdr_enable

[2.11.0]
新增：convar l4n_pin_viewmodel
新增：nekotoon参数$BaseTexture2BackFace
修改：nekotoon参数$BaseTexture2Tint的w值含义
修复：Refract着色器与NekoEnginePost的兼容性问题
修复：l4n_prevent_varms_stretching与部分mod的兼容性问题
修改：启用l4n_tonemap_scale的convar值保存

[2.10.1]
新增：l4n_menu项目“禁止动画拉伸手指”

[2.10.0]
新增：l4n_menu选项“刷新实体随机数”, "模型随机缩放增量"，"NekoSky叠加纹理强度"，"允许第一人称手电筒火光"
新增：concmd l4n_refresh_entity_random
新增：convar l4n_charactor_model_random_scale 0.0
新增：convar mat_nekosky_overlay_strength 1.0
修改：convar l4n_flashlightmuzzleflash 改名为 l4n_allow_flashlightmuzzleflash
修复：Sequence代理获取的值不正确的问题
修复：lock_datacache_size不够严格的问题
新增：concmd l4n_clear_datacache

[2.9.9]
修复：模型选项切换时卡顿的问题
修改：NekoSky的叠加纹理不受曝光控制
修改：convar l4n_tonemap_scale的最低值为0.001
修复：添加-l4n_use_neko_engine_post启动项后，狙击枪开镜的颜色异常
修复：添加-l4n_use_neko_engine_post启动项后，实体外描边效果的颜色异常
新增：l4n_menu提供禁用或启用实体外描边效果的选项

[2.9.8]
修改：l4n_menu里的“设置场景暗处增亮”增加更多选项
新增：concmd l4n_fast_record
新增：l4n_menu选项“快速录制DEMO”
修改：优化检测环境反射问题的算法

[2.9.7]
修改：l4n_menu里的色调映射设置能够显示当前HDR渲染的状态
修改：添加-l4n_use_neko_engine_post启动项后，不再强制启用HDR渲染，避免某些不支持HDR渲染的地图光照出现问题
修改：l4n_tonemap_scale在HDR渲染关闭时能够生效
新增：l4n_menu选项“强制启用HDR渲染”

[2.9.6]
修复：添加-l4n_use_neko_engine_post启动项后，在某些环境反射损坏的地图里一些材质出现渲染异常
修复：添加-l4n_use_neko_engine_post启动项后，某些材质渐变效果颜色异常鲜艳
新增：convar l4nsurvivor_allow_bot 1，是否允许bot使用l4nsurvivor
移除：convar l4n_proxy_alpha_clamping
修改：不使用neko_engine_post的情况下，场景暗部增亮功能的情况使用另外的预设参数

[2.9.5]
新增：convar l4n_player_list_clipped_item_icons 1, +l4n_player_list在渲染物品图标时使用游戏默认的裁切比例; 某些hud mod会有自定义的比例，设置为0或许能正确渲染
新增：+l4n_player_list的玩家语音指示

[2.9.4]
修改：l4n_menu新增地图暗部增亮的设置
修复：添加-l4n_use_neko_engine_post启动项后，新增法线贴图的地图材质在渲染时光照异常全亮
新增：convar l4n_ambient_darkness_limit 0.0
新增：convar l4n_lightmap_darkness_limit 0.0
修改：移除neko_engine_post着色器的胆汁效果

[2.9.3]
修复：添加-l4n_use_neko_engine_post启动项后，地图远景雾效渲染异常
修改：neko_engine_post着色器支持了基础的胆汁模糊效果

[2.9.2]
修复：添加-l4n_use_neko_engine_post启动项后，游戏画面闪烁的bug
修改：移除convar mat_nekotoon_allow_flat_bumpmap
新增：convar mat_nekotoon_ignore_flat_normal 1

[2.9.1]
修复：添加-l4n_use_neko_engine_post启动项后，地图远景雾效渲染异常
修改：convar l4n_use_nekosky的默认值变更为1 

[2.9.0]
新增：材质代理Sequence
修改：材质代理Cycle新增参数layer
修复：NekoToon无法正确解析ATI2N法线
新增：convar l4n_proxy 1

[2.8.8]
修复：添加-l4n_use_neko_engine_post启动项时，地图光斑效果的颜色空间异常
修复：nekosky着色器的贴图叠加效果不受曝光影响

[2.8.7]
新增：convar mat_nekotoon_rimlight_viewmodel_boost, mat_nekotoon_lambert_factor
修复：$rimlightViewModelFactor失效的bug
新增：nekotoon着色器参数$rimlightExponent, $rimlightAlbedoTint, $lambertFactor
移除：nekotoon着色器参数$flashLightLambertRange

[2.8.6]
新增：convar l4n_use_nekosky 0，是否使用l4n的NekoSky着色器来渲染天空
新增：六个"mat_nekosky_overlay_"开头，后缀是rt/bk/lf/ft/up/dn的convar，用于设置贴图路径作为NekoSky天空盒某个面的叠加纹理
修复：+l4n_player_list不显示bot的本地化翻译名
新增：pbr着色器参数$BaseTexture2Tint
新增：nekotoon着色器参数$BaseTexture2，$Frame2，$BaseTexture2Tint

[2.8.5]
新增：配置文件localize_overrides.vdf，用于覆盖本地化翻译文本，附带了修改幸存者名称的示例
新增：convar l4n_proxy_alpha_clamping 1，是否禁止材质代理将$alpha的值修改为负数，防止颜色混合异常
修复：添加启动项-l4n_use_neko_engine_post后某些材质颜色出现异常
新增：nekotoon材质参数$MatcapUV
修改：提高l4n着色器获取材质参数的效率

[2.8.4]
修改：l4n菜单里新增地图环境反射的修复教程
新增：convar l4n_player_identity_render_color 0 是否禁止玩家相关实体的染色
新增：配置文件key_bind_acts配置项，用于扩充游戏设置里按键绑定的选项
修复：未适配l4n的幸存者mod无法调整缩放，此bug出现于上个版本
新增：concmd l4n_cvar
新增：concmd l4n_buildcubemaps
新增：convar l4n_env_cubemap_redirect 0
修复：添加启动项-l4n_use_neko_engine_post后某些服务器无法进入的问题

[2.8.3]
修复：convar mat_neko_force_lineay_tonemapping失效的bug，并改名为mat_neko_tonemapping_force_linear
修复：l4n_nekook_path_append和l4n_nekook_path_remove 接受参数的字符编码bug
修改：提高to_l4n_survivor生成结果的兼容性
修复：nekotoon环境光过亮的问题

[2.8.2]
修复：nekotoon手电筒效果失效的bug

[2.8.1]
修复：着色器导致DXVK占用大量内存的BUG
修改：移除FXAA功能

[2.8.0]
修改：l4n_menu模型设置菜单里新增了一些选项和信息
修改：NekoEnginePost着色器新增AgX色调映射
修改：NekoEnginePost着色器新增FXAA抗锯齿技术
新增：convar mat_nekotoon_allow_lightwarp 1
修复：本地mod元数据修复失败的bug
修复：一个pcf粒子扩充失败的bug
修复：描边着色器的一个Z-fighting问题
新增：concmd l4n_nekook_path_append,  添加一个高优先级资产搜索路径，比VPK内的文件优先级高
新增：concmd l4n_nekook_path_remove,  移除一个高优先级搜索路径

[2.7.7]
新增：模型组件菜单里重置的选项
修复：添加-no_l4n_gui后无法进入地图的bug
修改：增加l4nsurvivor在遇到某些版本编译器生成的模型时的兼容性

[2.7.6]
新增：convar mat_neko_gamma 2.2，和视频设置里亮度一样的效果，但是可以在非独占全屏时生效，需要启动项-l4n_use_neko_engine_post
修改：l4n_menu新增gamma调整的选项
新增：nekotoon参数$rimlightViewModelFactor

[2.7.5]
修改：nekotoon着色器新增$NoFlexNormal参数
新增：convar l4n_vm_sway_ignore_helpinghand 1，是否在触发伸手动画时禁用sway效果，启用后可能会导致一些插件的动画(如ADS)没有sway效果，禁用后可能会导致武器高频抖动
修复：一个导致字体渲染错乱的bug
修改：启动项里存在-l4n_use_neko_engine_post时，l4n_tonemap_scale的默认值设置为1.8

[2.7.4]
修复：+l4n_player_list的渲染闪烁

[2.7.3]
修改：将convar l4n_gui_font_fallback的默认值设置为1
修复：PBR着色器的flex无效
修改：主菜单新增了一些选项
修改：+l4n_player_list的渲染

[2.7.2]
修改：l4n_menu新增了许多快捷选项
修改：nekotoon的实体染色使用HSV的色调
修改：+l4n_lookat默认在物品或倒地队友伸手动画之间随机播放，新增了参数用于指定这两种动画
新增：concmd l4n_to_nekotoon
新增：convar l4n_mat_specular 1
新增：convar l4n_gui_font_fallback 0, 是否补足字体不支持的字符(目前只影响+l4n_player_list)，启用会加载更多字体增加内存占用

[2.7.1]
修改：mat_neko_tonemapping_algorithm 默认值设置为6
修改：neko_engine_post新增了三个tonemapping算法(6:Neutral/7:NAES/8:LOG2)
修改：nekotoon在某些tonemapping效果启用时增加饱和度，防止饱和度丢失过多

[2.7.0]
新增：convar mat_neko_tonemapping_algorithm 2，neko_engine_post着色器的tonemapping算法(0:Linear(起源)/1:Reinhard/2:Uncharted2(神秘海域2)/3:CE/4:ACES(UE4默认)/5:GranTurismo)，需添加-l4n_use_neko_engine_post启动项才能使用
新增：启动项"-l4n_use_neko_engine_post"，添加该启动项将使用neko_engine_post替代引擎的engine_post着色器

[2.6.6]
修改：使玩家实体的一些子级能够同步l4nsurvivor模型
修改：+l4n_player显示服务器名称和玩家数量
修改：convar l4n_flush_unused_model更名为l4n_auto_flush_unused_models
新增：concmd l4n_flush_unused_models
修改：concmd l4n_placelight 新增了三个参数

[2.6.5]
修复：NekoToon和Outline的$alpha不生效
修复：着色器在hlmv截图时的渲染错误

[2.6.4]
修改：convar l4n_enhanced_material_pxory 默认值为0
新增：convar l4n_disable_survivor_bandage 1，是否禁用生还者模型的绷带粒子，默认禁用是因为调整身高的功能会和原版绷带粒子冲突
添加：+l4n_player_list的玩家人数显示
修复：游戏启动第一次进图时pbr着色器的渲染错误

[2.6.3]
修改：禁用Shader Model 3.0的检测
修改：convar l4nsurvivor新增参数2，此参数将不替换队友模型
修复：pbr着色器启用描边时出现闪退

[2.6.2]
新增：outline着色器vmt参数"$OutlineHSV"和"$OutlineBaseTextureBlend"
新增：convar l4n_force_skyname
新增：l4n_menu里的SkyBox切换菜单

[2.6.1]
移除：Entity proxy的检测弹窗

[2.6.0]
修改：NekoToon的MatCap效果能够被$LightingScale影响(破坏性更新)
新增：pbr着色器支持双材质动态混合
新增：pbr和nekotoond的$hsv参数，通过色相饱和度亮度修改贴图颜色
新增：pbr和nekotoon的许多新特性，参数过多请前往pbr.vmt和nekotoon.vmt里查看
修改：nekotoon的$emission支持遮罩模式
新增：nekotoon材质参数$multiply，可用于实现刘海假阴影
新增：nekotoon材质参数$eyebrow，用于实现眉透
新增：nekotoon支持染色蒙版
新增：nekotoon材质参数$LightWarpExponent，可用于调整阴影的强度
新增：nekotoon材质参数$FakeShadow
新增：材质代理Cycle，用于获取模型动画进度
新增：l4n特有的材质代理PlayerAttachment和PlayerBottom
新增：材质代理RemapValClamp和Modulo，用于简化一些繁杂的数学运算
新增：convar l4n_engine_post_allow_local_contrast 1，是否允许使用一种类似锐化的滤镜效果(肾上腺素或低血量或boomer胆汁消失时出现)
新增：convar l4n_survivor_scale 1.0, 全局设置幸存者的模型大小
新增：convar l4n_enhanced_material_pxory 0，是否增强部分材质代理，如EntityRandom会同步第一人称和第三人称的随机数种子
新增：convar l4n_proxy_entity_random_seed_offset 0.0，EntityRandom的随机数种子偏移
修改：由于"l4n_player_lighting_scale"和"l4n_player_stylized_amibentlight"对特感的支持不够充分，已移除对非幸存者实体的支持，并且改名为"l4n_survivor_lighting_scale"和"l4n_survivor_stylized_amibentlight"
修复：PBR着色器的一个手电筒渲染bug
修改：PBR、NekoToon、Outline着色器的性能优化
修改：删除PBR的$Emission参数
修改：改进NekoToon的RimLight渲染，使其表现得更自然
新增：convar mat_nekotoon_allow_flat_bumpmap

[2.5.0]
修复：l4n_tonemap_scale一个在部分地图上的失效bug
修改：伸手动画播放时禁用4n_vm_sway_

[2.4.9]
修复：l4n_vm_selfillum不会忽略有光照的$DetailBlendMode
修改：更新readme_l4n.txt的一些说明
修改：l4n_survivor_model_use_nekotoon新增参数2，参数2转换后的材质不会启用描边

[2.4.8]
修改：给垃圾模型回收添加一段缓冲时间
修复：dxvk调试层意外显示

[2.4.7]
修改：OutOfMemory弹窗新增对dxvk的检测

[2.4.6]
修复：scheme替换Tahoma字体导致+l4n_player_list的字体错误
新增：启动项“-hide_addons”，用于临时禁用所有addons目录下的mod
新增：nekotoon材质参数"$DarknessLimit"

[2.4.5]
修复：+l4n_player_list在部分系统上的字体丢失
修改：+l4n_player_list添加普感击杀计数
新增：concmd l4n_env_report

[2.4.4]
修改：除非修改配置项，默认将datacache的限制强制设置为2048MB
修复：在更早的时机加载模型配置，防止l4n_vm_2pbr的配置在某些情况下失效
修复：引擎无法正常清空console.log文件
新增：concmd l4n_reset_player_render_color

[2.4.3]
新增：配置文件"disable_chromehtml"参数，用于禁用引擎内置的浏览器内核，可以减少100mb左右的内存占用
新增：convar l4n_flush_unused_model 1
修改：convar l4n_survivor更名为l4nsurvivor
修改：convar l4n_survivor_allocation_algorithm更名为l4nsurvivor_allocation_algorithm

[2.4.2]
修复：一个崩溃问题，受该问题影响的有l4n_vm_2pbr、l4n_vm_selfillum、l4n_survivor_model_use_nekotoon
新增：concmd l4n_print_launch_options，输出当前能被游戏识别的启动项

[2.4.1]
修改：设置l4n_survivor_sequence_fix 默认值为1
修改：设置l4n_player_list_show_steam_avatar 默认值为1
修改：+l4n_player_list的血条显示

[2.4.0]
新增：concmd l4n_vm_2pbr，尝试将当前v模的材质转换为PBR材质；参数0还原材质
修复：l4n_vm_offset2在没使用过该命令的v模上无效果的bug
修改：l4n_vm_offset2新增reset参数，用于归零xyz
新增：convar l4n_player_list_show_steam_avatar 1
新增：convar mat_pbr_where 0

[2.3.3]
修改：nekotoon的手电筒渲染支持亮度限制
修改：Outline着色器完全支持水渲染

[2.3.2]
修改：mdl适配文档里新增了用于vta的眼球追踪示例
修改：nekotoon AOMap的算法
修复：nekotoon和pbr获取错误的水面高度

[2.3.1]
修复：mat_nekotoon_lazy_texture_load关闭时贴图错误

[2.3.0]
新增：nekotoon材质参数："$bumpstrength"、"$bumpmap2"、"$bumpstrength2"、"$bumptransform2"
新增：nekotoon AOMap支持，使用$mask1的a通道
修复：nekotoon和pbr着色器的水下渲染问题
移除：nekotoon和pbr的材质参数$dxt5nm
新增：convar mat_nekotoon_lazy_texture_load 0
新增：convar l4n_game_usage_padding 24
新增：concmd l4n_mat_showtextures

[2.2.8]
修复：第一次使用l4n的用户，模型配置无法正常保存

[2.2.7]
修改：优化幸存者死亡实体的所属玩家的判定，有助于l4n_survivor生效时赋予正确的模型
修改：readme_l4n的排版
修改：优化config_template里的注释说明
新增：convar l4n_survivor_allocation_algorithm 1，用于设置l4n_survivor给队友分配模型的算法

[2.2.6]
修改：优化了+l4n_player_list的文字渲染，当前字体不支持该字符时，将自动用其它支持该字符的字体来渲染
修复：+l4n_player_list部分条目的字符渲染截断

[2.2.5]
移除：自带的思源黑字体文件
修改：配置添加字体文件路径的参数

[2.2.4]
新增：convar l4n_menu_font_size
新增：modder工具nekook和nekomdl
修改：l4n_vm_selfillum支持正负号，此时数值代表增量
修改：优化l4n_survivor的模型内存释放机制
修改：l4n_menu的交互
修改：nektoon支持$decal

[2.2.3]
修复：l4n_vm_selfillum 在过图后导致自发光变得更亮

[2.2.2]
新增：concmd l4n_vm_selfillum 1，调整当前第一人称武器的自发光强度
新增：nekotoon参数"$flashlightlambertrange"
修复：nekotoon $flipbackfacenormal的过渡bug

[2.2.1]
新增：convar l4n_force_hdr_enable 0，是否强制启用HDR渲染，在不支持HDR渲染的地图上可能导致部分模型光照出现问题
修复：l4n_tonemap_scale在一些支持HDR渲染的地图上无作用
新增：convar l4n_prevent_varms_stretching 0

[2.2.0]
新增：形态键眼追功能

[2.1.9]
修复：上个版本带来的部分模型组件切换失效bug

[2.1.8]
修复：nekotoon的$lightingscale无效
修改：新算法使受mat_nekotoon_brightness_limit限制的像素更自然
修改：+l4n_player_list在双击时显示游戏计分板
移除：convar mat_nekotoon_min_ambient_luminance
添加：convar mat_nekotoon_darkness_limit
修复：nekotoon $emission的颜色不准确

[2.1.7]
新增：concmd l4n_vm_offset2
移除：convar l4n_vm_offset2_x, l4n_vm_offset2_y, l4n_vm_offset2_z
修复：skin切换在某些实体上失效的bug

[2.1.6]
新增：convar mat_nekotoon_brightness_limit 1.0, 控制nekotoon渲染结果的最大亮度，避免过曝
新增：nekotoon材质参数$flipbackfacenormal 1, 是否修正背面的法向(可以让背面被手电筒照亮)

[2.1.5]
修改：nekotoon rimlight的可视方向和其它参数，使其看起来更自然
新增：convar mat_nekotoon_rimlight_boost 4，进一步调整nekotoon里$rimlightboost的强度

[2.1.4]
新增：convar l4n_survivor_sequence_fix 1，是否修复幸存者动画的潜在问题，修改后需重启
新增：concmd l4n_survivor_sequence_test，检查幸存者动画有无问题，一般是和动画mod有关
修复：着色器里$basetexturetransform的translate无效的问题
修复：描边着色器和某些v模武器一起时出现渲染错误
修改：屏幕空间描边添加一点距离的影响
修改：nekotoon的$rimlight能够被$lightingscale影响
新增：convar mat_outline_thickness_scale 1，控制描边着色器的描边粗细

[2.1.3]
修复：强制使幸存者v模和w模匹配功能失效的bug
修改：l4n_menu的布局
新增：convar l4n_menu_offset_x 和 l4n_menu_offset_y
新增：nekotoon的材质参数$rimlight和$rimlightboost
修改：nekotoon在$nocull开启时，将自动修正背面的法向，防止光照方向变反(手电筒下的光照不亮)

[2.1.2]
修复：模型组件配置概率丢失的bug
修复：l4n_player_list的闪退bug

[2.1.1]
修复：l4n_survivor_model_use_nekotoon部分材质变白
修复：部分模型的组件切换失效的问题
修复：l4n_survivor第一人称腿不同步的bug

[2.1.0]
修复：l4n_survivor_model_use_nekotoon将材质转换到NekoToon材质时，一些透明有关的参数值没有复制的bug
修改：文档里l4n_survivor_model_use_nekotoon的描述（修改后需重启游戏；部分材质转换后的效果可能比不上作者主动适配，尤其是部分模型的脸部）

[2.0.9]
修复：l4n_survivor_model_use_nekotoon在有些材质上贴图变成纯白

[2.0.8]
修复：未进入地图时运行l4n_tonemapping_scale闪退
新增：convar l4n_survivor_model_nodecal，是否禁用幸存者模型的贴花效果（血迹），修改后需重启游戏
新增：convar l4n_survivor_model_use_nekotoon，是否将幸存者模型材质里合适的着色器替换为NekoToon，修改后需重启游戏
修复：客户端预测播放了空数据的手势动画导致闪退（使用xdReanimsBase时可能会遇到这种bug，这种动画的索引是超出服务器索引范围的，不应该被播放；目前的修复不能保证服务器索引范围内的不被播放，服务器索引范围内的也不应该有空动画数据；因为有些客户端预测是通过sequence名称来匹配的，空数据sequence是不会有Activity信息的，此修复只是修改了这些空数据sequence的名字）
修改：崩溃后准备生成mdmp前检查内存占用，有异常将弹出报告

[2.0.7]
添加：convar l4n_game_usage，控制hud显示和游戏稳定性有关的数据
添加：convar l4n_game_usage_pos，控制l4n_game_usage显示的位置
添加：接管mdmp的生成，用于修复某些崩溃不生成mdmp
添加：堆内存申请失败的弹窗
修改：config_template.vdf内有关闪退的说明
修改：优化l4n_survivor对尸体所属玩家的判定

[2.0.6]
添加：datacache内存占用的hud指示器
修复：l4n_menu在切换游戏分辨率后的渲染失效

[2.0.5]
添加：cvar l4n_tonemap_scale, 控制地图hdr的曝光强度
修改：移除配置文件参数lighting_factor_spot, lighting_factor_point, lighting_factor_directional, stylized_amibent_light
添加：convar l4n_player_lighting_scale, 控制玩家模型的光照强度
添加：convar l4n_player_stylized_amibentlight，玩家模型使用风格化环境光的开关

[2.0.4]
修改：+l4n_lookat运行期间，禁用l4n_sway_防止有些武器动画运动摄像机导致抽搐
修复：+l4n_lookat在有些武器上动画时长不正确

[2.0.3]
修复：+l4n_player_list绑定到某些按键上会判定出参数1
修改：配置文件添加参数"wave_cache_max_kilobytes"
修改：安装包附带了资源管理器显示vpk文件略缩图和mod标题信息的插件

[2.0.2]
修改：尝试修复l4n_vm_sway_的动画抽搐问题

[2.0.1]
修改：修改WaveDataCache的内存上限到512mb
修改：默认禁用更新玩家模型后重建武器的bonemergecache

[2.0.0]
修改：战术性调整datacache里WaveData的内存限制
修复：使用l4n_survivor时可能导致的一个闪退bug
修复：legs实体的识别错误导致看到别的玩家身上有两个模型

[1.9.9]
修复：snd_rebuildaudiocache重建音频缓存时闪退
修改：+l4n_lookat时能够推人打断
修改：增加nekotoon补光的亮度
修改：nekotoon $emission启用时不禁用补光
添加：cvar mat_nekotoon_min_ambient_luminance
修改：尝试修复一个导致闪退的bug
修改：尝试修复l4n_vm_sway联机时可能出现的动画卡顿

[1.9.8]
修复：+l4n_lookat双击的动画不会结束
修改：配置文件的一些注释，还有font的默认值

[1.9.7]
修复：在某些服务器上l4n_vm_sway的动画效果卡顿
修复：+l4n_lookat无法打断动画的bug

[1.9.6]
修复：l4n_commoninfected_noragdoll的含义相反

[1.9.5]
修改：解锁-heapsize的512mb上限，更多信息在config_template.vdf里

[1.9.4]
添加：cvar l4n_vm_offset2_x，l4n_vm_offset2_y，l4n_vm_offset2_z；用于单独为第一人称武器模型调整位置偏移
添加：配置文件参数"min_tall"，用于控制字体的最小尺寸
修复：+l4n_lookat在切换武器后不打断的bug，以及动画衔接过快的bug
修改：添加cvar“l4n_commoninfected_noragdoll”，移除配置文件参数“no_common_infected_ragdoll”
修改：添加cvar“l4n_mat_colorcorrection”，移除配置文件参数“no_color_correction”
修改：更新readme_l4n.txt文档
新增：+l4n_player_list的输入参数支持，添加参数1时双击才显示，单击则显示原版计分板
修复：l4n_survivor的第一次切换无效的问题
修复：l4n_survivor给联机队友切换模型时可能的手持武器错位
修复：cvar“l4n_survivor”设置为零时不更新Lux's Survivor Legs的实体模型
添加：build_sound_cache.bat, 用于快速生成sound.cache

[1.9.3]
添加：l4n_survivor对Lux's Survivor Legs的兼容
添加：command +l4n_player_list；显示更多玩家信息
修改：显示更多玩家信息的面板不再通过双击tab显示，请使用控制台命令+l4n_player_list绑定按键的方案
修改：readme_l4n.txt的一些描述

[1.9.2]
修改：发布版启用调试信息，方便bug追踪

[1.9.1]
修复：nekotton着色器matcap的渲染错误

[1.9.0]
新增：cvar l4n_vm_sway_interp, l4n_vm_sway_scale; 用于控制第一人称模型随视角转动滞后效果
新增：cvar l4n_vm_offset_y, l4n_vm_offset_z, l4n_vm_offset_x; 用于控制第一人称模型位置偏移
修改：更新本文档，以减少不必要的困扰
新增：NekoToon着色器参数 $MATCAP2, $MATCAP2TEXTURE, $MATCAP2TINT, $MATCAP2LIGHTING
修改：l4n_survivor切换的性能优化

[1.8.8]
修复：PBR着色器的BRDFLUT颜色空间问题，导致高粗糙度的计算结果错误

[1.8.7]
修复：+l4n_lookat在一些武器上不会触发的问题

[1.8.6]
修复：可能启动闪退的一个bug，对于上个版本遇到该问题的用户，在配置文件里把force_bind_l4n_menu设置为零可规避

[1.8.5]
修复：+l4n_lookat在没有对应序列的模型上闪退
修复：l4n_survivor不更新手模的状态bug
修复：模型组件菜单失效的bug

[1.8.4]
添加：cvar +l4n_lookat，触发物品伸手动画; bind按键后支持长按loop，单击相比双击多了前摇和后摇动画; 快速绑定："bind v +l4n_lookat"
修复：游戏过程中切换l4n_survivor导致的第三人称手持武器错位
添加：nekotoon着色器参数$lightwarpsrgbtexture, $lightwarphalf, $lightwarpscale, $lightwarpmapoffset
修改：nekotoon着色器支持通过$mask1蒙版在一个材质里使用多条lightwarp
移除：配置文件项"random_si_model"
添加：cvar l4n_specialinfected_randommodel, l4n_survivor

[1.8.2]
新增：cli工具用于复制wav语音的口型数据或生成sound.cache，位于"bin/neko/source_nekomimi.exe"
新增：bat脚本用于快速给语音mod复制口型数据，位于"bin/neko/copy_sentence.bat"
修复：文档里"srcipts"的拼写错误，正确的拼写是"scripts"

[1.8.1]
修改：能够完整移除第一人称枪口手电筒火光(联机有效)，使用控制台命令"l4n_flashlightmuzzleflash"来启用或关闭
修改：移除配置文件参数“viewmodel_muzzle_flash”
添加：ConVar"l4n_game_hud_visible"，用于控制游戏HUD的显示与隐藏

[1.8.0]
添加：粒子系统额外加载pcf文件的支持

[1.7.9]
添加：自动更新，需要在创意工坊里订阅L4N后才能生效

[1.7.8]
NekoShaders|新增：vmt参数$outlinefixedthickness，用于启用或禁用描边粗细修正
NekoShaders|新增：PBR着色器的Flex支持
NekoShaders|新增：$matcap两个混合模式，vmt参数"$matcaplighting"
NekoShaders|修复：$emissionflashlighttint强制白色的bug
NekoShaders|新增：NekoToon摄像机AO
新增：控制台命令l4n_placelight, l4n_menu
修改：主菜单L4N Survivor设置的逻辑
新增：addoon vpk声音脚本加载的支持

[1.7.7]
NekoShaders|修复："$emissionflashlighttint"默认启用的bug

[1.7.6]
NekoShaders|新增：用于pbr和nekotoon的vmt参数"$emissionflashlighttint"

[1.7.5]
NekoShaders|优化：描边着色器的z-fighting问题

[1.7.4]
新增：两个材质代理ClipAmmo和RemainingAmmo，用于获取弹药和备用弹药的数量

[1.7.3]
NekoShaders|修复：控制台exit/quit命令导致游戏闪退
NekoShaders|修改：$outlinetexture的格式为ATI1N时，使用r通道作为蒙版
NekoShaders|修改：描边宽度不受透视影响

[1.7.2]
NekoShaders|修复：PBR着色器在地图Brush上光照亮度过低
NekoShaders|添加：数显着色器
NekoShaders|修复：$outlinetexture 控制台报错

[1.7.1]
修改：index_buffer_size的默认值为32768
修改：文档的描述

[1.7.0]
NekoShaders|修改： 描边着色器使用更自然的光照
NekoShaders|修复：第一人称启用了描边的手模导致武器背面剔除出现问题
NekoShaders|修复：nekotoon添加新的参数$lightingscale
NekoShaders|修复：手电筒下的AlphaTest渲染错误

[1.6.9]
修复: 1.6.7出现的tab菜单失效
修改: config.vdf参数的默认值
修复: 增加与其它补丁类的兼容性
NekoShaders|修复: PBR材质开启自发光时控制台报错

[1.6.8]
NekoShaders|修复：NekoToon上个版本出现的光照变黑bug

[1.6.7]
修复：输入法导致的平台相关的按键无响应
NekoShaders|修复：PBR高粗糙度下envmap不够模糊的问题
NekoShaders|修改：PBRShader使用BRDF LUT

[1.6.6]
修复：[1.6.5]版本index_buffer_size失效的问题

[1.6.5]
NekoShaders|添加：DXT5nm和ATI2N法线贴图压缩格式的支持
NekoShaders|修改：视差贴图不再使用法线贴图的a通道

[1.6.4]
NekoShaders|添加：nekotoon的眼追支持
NekoShaders|添加：$outlinelighting参数
NekoShaders|修复：描边着色器在$nocull下的问题
恢复：stylized_amibent_light,lighting_factor_directional,lighting_factor_point,lighting_factor_spot相关的功能
添加：VERTEX_BUFFER_SIZE的修改

[1.6.3]
NekoShaders|修复：NekoToon在HLMV里的一个闪退bug

[1.6.1]
NekoShaders|添加：matcap蒙版
NekoShaders|修复：outline着色器在$nocull启用时的渲染错误
移除：receive_flashlight,stylized_amibent_light,lighting_factor_directional,lighting_factor_point,lighting_factor_spot相关的功能

[1.6.0]
新增：NekoToon着色器，相关参数在nekotoon.vmt文件里

[1.5.3]
新增: pbr着色器参数$emission，用于控制自发光的开启
修改: pbr着色器自发光默认使用$basetextur的颜色
新增: pbr着色器参数$emissiontint，用于控制自发光的强度

[1.5.2]
移除neko着色器对l4n平台的依赖，便于单独安装neko着色器，也有利于着色器被hlmv&hammer等工具加载

[1.5.0]
添加：添加次时代游戏都有的PBR着色器，参数都在pbr.vmt里

[1.4.0]
修复：部分未适配的人物mod无法修改身高的问题
添加：不要把我看扁了

[1.3.9]
给未适配平台的人物mod添加身高调整的支持

[1.3.8]
改进队友的l4n_survivor模型分配
更新自带的字体为思源黑体，减少字体渲染出现？？？的情况

[1.3.7]
禁用绷带特效，防止自定义身高的玩家模型打包时绷带炸顶点花屏

[1.3.6]
死亦瞑目
对于不适用模型缩放的模型，组件菜单将不显示调整缩放的入口
调整模型缩放菜单的预设值
支持mod作者设置默认的缩放

[1.3.5]
config.vdf: 添加“random_si_model”配置项

[1.3.4]
修复多人联机中新计分板虚血进度的计算错误

[1.3.3]
修复一个足ik修正失效的bug

[1.3.2]
修复组件菜单的一个闪退bug
l4n survivor：修复处于闲置状态时，无法及时同步切换模型
l4n survivor: 修复闲置状态阵亡时，所属玩家判定不正确

[1.3.1]
及时保存模型skin的配置
幸存者死亡实体支持缩放
l4n survivor：修复闲置玩家模型替换不正确

[1.3.0]
主菜单部分项目支持状态存储
l4n survivor: 支持无真实玩家托管的bot
l4n survivor: 尝试优化幸存者尸体所属玩家的判定
l4n survivor: 主菜单添加全局的模型切换

[1.2.7]
如果模型配置了$TextureGroup，组件菜单里会提供材质预设的切换。

[1.2.5]
修复组件菜单闪退的问题
一些小bug

[1.2.3]
优化缩放模型的算法
控制缩放数值的上下限

[1.2.2]
修复脚IK高度修正在无缩放时失效的问题

[1.2.1]
修复脚IK高度修正失效的问题

[1.2.0]
添加模型缩放功能
组件配置文件重构，之前保存的配置将会丢失

[1.1.0]
添加足IK优化的MDL扩展
添加面向MOD作者的示例qc

[1.0.2]
大幅缩小动态环境光源的照射范围，防止起源引擎在渲染不擅长的露天场景时fps骤降

[1.0.1]
主菜单添加禁用动态环境光源的选项
自带计分板所需的字体文件

[1.0.0]
新的双击TAB计分板UI

[0.9.1]
瞄准可交互物品时，不会更新动态环境光源
修复上个版本带来的一个闪退bug
尝试优化幸存者尸体所属玩家的判定


[0.9.0]
按E键可以生成动态环境光源
强制所有特感模型上班
更多玩家的面板改成双击TAB键显示
显示玩家面板时，隐藏聊天列表
rebuild_sound_cache_for_addons.bat，完成后自动退出

[0.8.1]
修复进一些图时闪退，这是上个版本带来的bug

[0.8.0]
tab键显示更多玩家信息的面板，双击tab键显示原来的面板

[0.7.0]
破坏性更新，之前的l4n survivor mod需要重新转换或适配
为防止路径过长导致引擎不稳定，l4n survivor模型的根目录改为"models/l4n/s"。
切换l4n survivor的时候，如果之前使用过的模型没有引用，将自动释放内存占用，以减少爆内存闪退的概率

[0.5.0]
添加主菜单，菜单支持翻页
[0.4.1]
l4n_survivor: 修复一个导致控制台一直报错的bug
[0.4.0]
调整风格化环境光的参数
to_l4n_survivor: 修复某些mod出现人物透明的问题
[0.3.9]
更新config.vdf的默认值
[0.3.8]
更新to_l4n_survivor.exe
[0.3.7]
添加配置项：generate_addoninfo
[0.3.6]
修复l4n_survivor第三人称手握武器出现错位

