Files
2025-03-18 14:46:12 +08:00

446 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebarDepth: 1
---
# 自定义
## AddPostProcess
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
添加后处理效果与graphics_settings/post_process.json定义的process等效
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| processDict | dict | process的定义字典格式参考graphics_settings/post_process.json |
| index | int | 插入位置下标从0开始计数。可通过[GetPostProcessOrder接口](#getpostprocessorder)获取,缺省或负值则默认添加到最后。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
查询是否开启了自定义后处理效果
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| name | str | 需要查询的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
获取指定自定义后处理参数的值
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 需要获取的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| paramName | str | 需要的参数名名称来自后处理效果定义中的paras字段 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| any | 后处理参数的值如果该参数的长度只有1个值则返回float如果长度超过1个则返回listlist的长度不超过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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
获取后处理效果的渲染顺序
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| list(str) | 后处理效果的渲染顺序获取失败或未开启后处理返回None |
- 示例
```python
import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
print postComp.GetPostProcessOrder()
```
## InsertPassToPostprocess
<span style="display:inline;color:#7575f9">客户端</span>
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的输出即为输出到游戏屏幕的像素信息。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 需要增加自定义pass的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| index | int | 自定义pass插入的位置下标。下标的范围不能超过该自定义后处理目前包含的pass数组的大小同时必须大于等于0。 |
| passDict | dict | 自定义pass的定义字典。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
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的输出即为输出到游戏屏幕的像素信息。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 需要删除自定义pass的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
将自定义pass的纹理结果传递到其他自定义pass的fragmentShader指定纹理单元槽位
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| 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~70~2已被占用0为上个pass处理后的颜色缓冲1为未做后处理的原始颜色缓冲2为深度缓冲。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
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的输出即为输出到游戏屏幕的像素信息。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 需要增加自定义pass的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| passDict | dict | 自定义pass的定义字典。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
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的输出即为输出到游戏屏幕的像素信息。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 需要删除自定义pass的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| index | int | 需要删除的自定义pass的位置下标。下标的范围不能大于或等于该自定义后处理目前包含的pass数组的大小同时必须大于等于0。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
设置是否开启自定义后处理效果
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| name | str | 后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| enable | bool | 是否开启自定义效果True为开启False为关闭。 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
postComp.SetEnableByName(myPostName, True)
```
## SetParameter
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.postProcessControlComp.PostProcessComponent
- 描述
设置自定义后处理shader的自定义参数值
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| postName | str | 要修改的后处理效果名名称为graphics_settings/post_process.json中定义的后处理效果名 |
| paramName | str | 要修改的参数名名称来自后处理效果定义中的paras字段 |
| paramValue | any | 修改后的后处理参数值长度必须与post_process.json中对应的参数定义一致(float/list/tuple) |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 该接口仅支持修改自定义后处理的参数
- 示例
```python
import mod.client.extraClientApi as clientApi
postComp = clientApi.GetEngineCompFactory().CreatePostProcess(levelId)
postComp.SetParameter(myPostName, paramName, [0.0, 0.0, 0.0]) # 设置某个三维参数值为全0向量
```