Unreal4 shader 杂1

来源:互联网 发布:c语言算法是什么 编辑:程序博客网 时间:2024/06/07 02:33
VS
--------------------------------------------------------------------------------------------------------------


FVertexFactoryInput
vs常用输入
1) 位置
2) 切线
3) 例子和光贴图的uv
4) 实例id和矩阵


GetVertexFactoryIntermediates
常用函数处理FVertexFactoryInput
输出
1) 切线空间到本地,世界坐标矩阵
2) 颜色
3) 实例数据


VertexFactoryGetWorldPosition
输出世界坐标(带实例也可正常计算)


VertexFactoryGetTangentToLocal
返回切线到本地空间的矩阵


GetMaterialVertexParameters
输出FMaterialVertexParameters
1) 世界坐标
2) 颜色
3) 切线空间到世界空间矩阵
4) 实例到本地,世界空间矩阵,实例参数
5) UV坐标


GetMaterialWorldPositionOffset
输出世界偏移--这个根据材质编辑器得出的


VertexFactoryGetRasterizedWorldPosition
返回输入的坐标,但对例子会扰动防止zfighting


VertexFactoryGetInterpolantsVSToPS
输出FVertexFactoryInterpolantsVSToPS
1) uv坐标
option1
拼接
TexCoords[0].xy;
TexCoords[0].zw;
TexCoords[1].xy;
TexCoords[1].zw;
.
.
.


option2
PackedUVs[0].xy;
PackedUVs[1].xy;
.
.
.
2) 光照贴图和阴影贴图的uv
option1
InLightMapCoordinate -> LightMapCoordinate.xy;
InShadowMapCoordinate -> LightMapCoordinate.zw;


option2
(注意光照贴图是上下拼接的)

{
LightmapUV0 = PackedInterpolator3.xy;
LightmapUV1 = PackedInterpolator4.xy;
}
InLightMapCoordinate * float2(1, 0.5) -> PackedInterpolator3.xy
Interpolants.PackedInterpolator3.xy + float2(0, 0.5) -> PackedInterpolator4.xy
InShadowMapCoordinate -> PackedInterpolator5.xy


3) 切线到世界空间的矩阵
option1
float4(InTangentToWorld0,0) -> TangentToWorld0;
float4(InTangentToWorld2,InTangentToWorldSign) -> TangentToWorld2;


option2
InTangentToWorld0.xy -> PackedInterpolator4.zw
InTangentToWorld0.zz -> PackedInterpolator5.zw
InTangentToWorld2.xy -> PackedUVs[0].zw
float2(InTangentToWorld2.z,InTangentToWorldSign) -> PackedInterpolator3.zw


4) 颜色
option1
Color = InValue;


option2
InValue.xy -> PackedUVs[1].zw;
InValue.zw -> PackedUVs[2].zw;


5) 实例数据
Interpolants.PerInstanceParams = Intermediates.PerInstanceParams;


PS
--------------------------------------------------------------------------------------------------------------
GetMaterialPixelParameters
返回FMaterialPixelParameters
1) uv坐标
2) 粒子uv坐标
3) 镜像值
4) 颜色
5) 粒子颜色
6) 实例数据
7) 切线到世界空间的矩阵
8) 光贴图uv
9) 双面


CalcMaterialParameters
返回FPixelMaterialInputs(子函数 CalcPixelMaterialInputs)
1) 本地空间normal
2) 切线空间normal
3) 世界空间normal
4) 反射方向
返回FMaterialPixelParameters
1) 相对camrea的世界坐标 和 没偏移的
2) 绝对的世界坐标 和 没偏移的
3) 屏幕空间位置
4) 投影空间位置
5) camrea方向
6) 双面


GetMaterialCoverageAndClipping
1) 形成Lod间的切换渐渐消失效果
2) 材质编辑的Opacity Mask加材质编辑器输入的mask常量(float 0 到 1)来clip


GetLightMapCoordinates
计算lightmap的uv坐标,可能2层lightmap











0 0
原创粉丝点击