# 自定义

# AddPostProcess

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    添加后处理效果,与graphics_settings/post_process.json定义的process等效

  • 参数

    参数名
    数据类型
    说明
    processDict dict process的定义字典,格式参考graphics_settings/post_process.json
    index int 插入位置下标,从0开始计数。可通过GetPostProcessOrder接口获取。
  • 返回值

    数据类型
    说明
    bool 连接操作是否成功,成功返回True,失败则返回False
  • 备注

    • 调用这个接口的时候会启动后处理
  • 示例

test = {
    "name": "oldtv",
    "enable": False,
    "paras": [
        { "name": "density", "value": 0.1, "range": [0.0, 1.0] },
        { "name": "strength", "value": 1.0, "range": [0.0, 1.0] },
        { "name": "snow_size", "value": 2.0, "range": [0.5, 16.0] },
        { "name": "noise_fps", "value": 6.0, "range": [0.01, 64.0] },
        { "name": "black_zone", "value": 0.2, "range": [0.0, 1.0] }
    ],
    "pass_array":[
        {
            "render_target":{
                "width":1.0,
                "height":1.0
            },
            "material":"old_tv"
        }
    ]
}
import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
print postComp.AddPostProcess(test, 5)

# CheckEnabledByName

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    查询是否开启了自定义后处理效果

  • 参数

    参数名
    数据类型
    说明
    name str 需要查询的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
  • 返回值

    数据类型
    说明
    bool 是否已经开启。已开启返回True,否则返回False
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 查询名为"my_custom_postprocess"的自定义后处理效果是否已经开启
print postComp.CheckEnabledByName("my_custom_postprocess")

# GetParameter

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    获取指定自定义后处理参数的值

  • 参数

    参数名
    数据类型
    说明
    postName str 需要获取的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    paramName str 需要的参数名,名称来自后处理效果定义中的paras字段
  • 返回值

    数据类型
    说明
    any 后处理参数的值,如果该参数的长度只有1个值,则返回float,如果长度超过1个,则返回list,list的长度不超过4。返回失败则返回None
  • 备注

    • 该接口仅支持获取自定义后处理的参数。获取参数时,需要先开启过一次后处理才能成功获取。否则获取失败返回None。
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 获取自定义后处理"my_custom_postprocess"中名为“radius”的参数的值
print postComp.GetParameter("my_custom_postprocess", "radius")

# GetPostProcessOrder

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    获取后处理效果的渲染顺序

  • 参数

  • 返回值

    数据类型
    说明
    list(str) 后处理效果的渲染顺序,获取失败或未开启后处理返回None
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
print postComp.GetPostProcessOrder()

# InsertPassToPostprocess

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    往自定义后处理的多pass中的指定位置插入自定义pass。多pass指定的是graphics_settings/post_process.json中的"pass_array"渲染pass数组。这个后处理会按照这个数组所定义的pass来逐个渲染,每个pass之间的像素输入输出相互连接,即pass数组中第一个pass所使用的fragment shader中的TEXTURE_0为游戏原始输出到屏幕的像素信息。下一个pass所使用的fragment shader中的TEXTURE_0为上一个Pass的fragment shader的输出。最后一个pass的fragment shader的输出即为输出到游戏屏幕的像素信息。

  • 参数

    参数名
    数据类型
    说明
    postName str 需要增加自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    index int 自定义pass插入的位置下标。下标的范围不能超过该自定义后处理目前包含的pass数组的大小,同时必须大于等于0。
    passDict dict 自定义pass的定义字典。
  • 返回值

    数据类型
    说明
    bool 插入操作是否成功,成功返回True,失败则返回False
  • 备注

    • 该接口仅支持对自定义后处理进行操作。
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 自定义pass字典
passDict = {
    # 渲染目标的分辨率大小,值范围为(0,1]。1.0表示全屏幕。
    "render_target":{
        "width":1.0,
        "height":1.0
    },
    # 这个自定义pass所使用的材质,定义在materials/postprocess.material中
    "material":"scan_map",
    # 可选,是否启动深度图。开启后可以在片元着色器中的使用TEXTURE_2拿到深度图。
    "depth_enable": True
}
# 往自定义后处理"my_custom_postprocess"中增加一个自定义pass,插入位置为第一个。
print postComp.InsertPassToPostprocess("my_custom_postprocess", 0, passDict)

# PopBackPassInPostprocess

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    删除自定义后处理的多pass的最末尾的pass。多pass指定的是graphics_settings/post_process.json中的"pass_array"渲染pass数组。这个后处理会按照这个数组所定义的pass来逐个渲染,每个pass之间的像素输入输出相互连接,即pass数组中第一个pass所使用的fragment shader中的TEXTURE_0为游戏原始输出到屏幕的像素信息。下一个pass所使用的fragment shader中的TEXTURE_0为上一个Pass的fragment shader的输出。最后一个pass的fragment shader的输出即为输出到游戏屏幕的像素信息。

  • 参数

    参数名
    数据类型
    说明
    postName str 需要删除自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
  • 返回值

    数据类型
    说明
    dict 包含所删除的自定义pass的数据字典。删除失败则返回None。
  • 备注

    • 该接口仅支持对自定义后处理进行操作。另外,由于python浮点数值精度问题,返回的数据字典中的浮点数可能会带有小数点后多位的现象,例如width的值原本为0.1,则返回的数据字典中width的值可能会变为0.10000000149,请注意。
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 删除自定义后处理"my_custom_postprocess"中包含的多pass最末尾的自定义pass。
print postComp.PopBackPassInPostprocess("my_custom_postprocess")

# PostPassResultToOtherPass

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    将自定义pass的纹理结果传递到其他自定义pass的fragmentShader指定纹理单元槽位

  • 参数

    参数名
    数据类型
    说明
    sourceProcessName str 发送纹理单元的自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    sourcePassIndex int 源process中需要传递的自定义pass在process中的下标,从0开始计数。
    destProcessName str 接收纹理单元的自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    destPassIndex int 接收的process中自定义pass在process中的下标,从0开始计数。
    glTextureIndex int 接收pass中framentShader中的纹理单元槽位,取值范围3~7,0~2已被占用,0为上个pass处理后的颜色缓冲,1为未做后处理的原始颜色缓冲,2为深度缓冲。
  • 返回值

    数据类型
    说明
    bool 连接操作是否成功,成功返回True,失败则返回False
  • 备注

    • sourceProcessName的pass执行顺序必须在destProcessName的pass之前执行。sourceProcessName和destProcessName可相同
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 将名为test1的后处理效果中第一个pass处理完的纹理单元,发送给名为test2的后处理效果中第二个pass的fragmentShader中的纹理单元槽位3。
print postComp.PostPassResultToOtherPass("test1", 0, "test2", 1, 3)
# 将名为test1的后处理效果中第一个pass处理完的纹理单元,发送给名为test1的后处理效果中第二个pass的fragmentShader中的纹理单元槽位5。
print postComp.PostPassResultToOtherPass("test1", 0, "test1", 1, 5)

# PushBackPassToPostprocess

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    往自定义后处理的多pass最末尾插入自定义pass。多pass指定的是graphics_settings/post_process.json中的"pass_array"渲染pass数组。这个后处理会按照这个数组所定义的pass来逐个渲染,每个pass之间的像素输入输出相互连接,即pass数组中第一个pass所使用的fragment shader中的TEXTURE_0为游戏原始输出到屏幕的像素信息。下一个pass所使用的fragment shader中的TEXTURE_0为上一个Pass的fragment shader的输出。最后一个pass的fragment shader的输出即为输出到游戏屏幕的像素信息。

  • 参数

    参数名
    数据类型
    说明
    postName str 需要增加自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    passDict dict 自定义pass的定义字典。
  • 返回值

    数据类型
    说明
    bool 插入操作是否成功,成功返回True,失败则返回False
  • 备注

    • 该接口仅支持对自定义后处理进行操作。
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 自定义pass字典
passDict = {
    # 渲染目标的分辨率大小,值范围为(0,1]。1.0表示全屏幕。
    "render_target":{
        "width":1.0,
        "height":1.0
    },
    # 这个自定义pass所使用的材质,定义在materials/postprocess.material中
    "material":"scan_map",
    # 可选,是否启动深度图。开启后可以在片元着色器中的使用TEXTURE_2拿到深度图。
    "depth_enable": true
}
# 往自定义后处理"my_custom_postprocess"中的包含的多pass最末尾增加一个自定义pass。
print postComp.PushBackPassToPostprocess("my_custom_postprocess", passDict)

# RemovePassInPostprocess

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    删除自定义后处理的多pass中指定位置的pass。多pass指定的是graphics_settings/post_process.json中的"pass_array"渲染pass数组。这个后处理会按照这个数组所定义的pass来逐个渲染,每个pass之间的像素输入输出相互连接,即pass数组中第一个pass所使用的fragment shader中的TEXTURE_0为游戏原始输出到屏幕的像素信息。下一个pass所使用的fragment shader中的TEXTURE_0为上一个Pass的fragment shader的输出。最后一个pass的fragment shader的输出即为输出到游戏屏幕的像素信息。

  • 参数

    参数名
    数据类型
    说明
    postName str 需要删除自定义pass的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    index int 需要删除的自定义pass的位置下标。下标的范围不能大于或等于该自定义后处理目前包含的pass数组的大小,同时必须大于等于0。
  • 返回值

    数据类型
    说明
    dict 包含所删除的自定义pass的数据字典。删除失败则返回None。
  • 备注

    • 该接口仅支持对自定义后处理进行操作。另外,由于python浮点数值精度问题,返回的数据字典中的浮点数可能会带有小数点后多位的现象,例如width的值原本为0.1,则返回的数据字典中width的值可能会变为0.10000000149,请注意。
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
# 删除自定义后处理"my_custom_postprocess"中包含的多pass中第二个自定义pass。
print postComp.RemovePassInPostprocess("my_custom_postprocess", 1)

# SetEnableByName

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    设置是否开启自定义后处理效果

  • 参数

    参数名
    数据类型
    说明
    name str 后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    enable bool 是否开启自定义效果,True为开启,False为关闭。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
postComp.SetEnableByName(myPostName, True)

# SetParameter

客户端

method in mod.client.component.postProcessControlComp.PostProcessComponent

  • 描述

    设置自定义后处理shader的自定义参数值

  • 参数

    参数名
    数据类型
    说明
    postName str 要修改的后处理效果名,名称为graphics_settings/post_process.json中定义的后处理效果名
    paramName str 要修改的参数名,名称来自后处理效果定义中的paras字段
    paramValue any 修改后的后处理参数值,长度必须与post_process.json中对应的参数定义一致(float/list/tuple)
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 该接口仅支持修改自定义后处理的参数
  • 示例

import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
postComp.SetParameter(myPostName, paramName, [0.0, 0.0, 0.0]) # 设置某个三维参数值为全0向量