446 lines
16 KiB
Markdown
446 lines
16 KiB
Markdown
---
|
||
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个,则返回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
|
||
|
||
<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~7,0~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向量
|
||
```
|
||
|
||
|
||
|