--- sidebarDepth: 1 --- # 自定义 ## 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接口](#getpostprocessorder)获取,缺省或负值则默认添加到最后。 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 连接操作是否成功,成功返回True,失败则返回False | - 备注 - 调用这个接口的时候会启动后处理 - 示例 ```python 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 | - 示例 ```python 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。 - 示例 ```python 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 | - 示例 ```python 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 | - 备注 - 该接口仅支持对自定义后处理进行操作。 - 示例 ```python 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,请注意。 - 示例 ```python 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可相同 - 示例 ```python 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 | - 备注 - 该接口仅支持对自定义后处理进行操作。 - 示例 ```python 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,请注意。 - 示例 ```python 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 | 设置是否成功 | - 示例 ```python 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 | 设置是否成功 | - 备注 - 该接口仅支持修改自定义后处理的参数 - 示例 ```python import mod.client.extraClientApi as clientApi postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId) postComp.SetParameter(myPostName, paramName, [0.0, 0.0, 0.0]) # 设置某个三维参数值为全0向量 ```