2019-11-11 20:18:37 qq_23030843 阅读数 41
• ###### 从这里开始虚幻4-Editor介绍 v4.18

本课程系列取名英译系列，是录制人员参考国外英文原版经典教程，结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程，是Unreal的官方发布的入门教学，非常经典，是学习Unreal的佳入口。

2372 人正在学习 去看看 杨石兴

## 自动和改进的UV膨胀材质

https://papalqi.cn/index.php/archives/521/

float texelsize = 1 / TextureSize;
float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)};
float3 sample = Tex.SampleLevel(TexSampler, UV, 0);

if(sample.x != 0 || sample.y != 0 || sample.z != 0) return sample;
int i, j = 0;

while(i < MaxSteps)
{
i++;
while (j < 8)
{
float2 curUV = UV + offsets[j] * texelsize * i;
float3 offsetsample = Tex.SampleLevel(TexSampler, curUV, 0);

if(offsetsample.x != 0 || offsetsample.y != 0 || offsetsample.z != 0) return offsetsample;

j++;
}
}

return MinSample;

float2 projectUV = curUV + offsets[i] * texelsize * j * 0.25;
float3 direction = Tex.SampleLevel(TexSampler, projectUV, 0);

float3 delta = offsetsample - direction;
MinSample = offsetsample + delta * 4;

//////////////// UV Positional Dilation ///////////////////////////
//** Tex **// Input Texture Object storing Volume Data
//** UV **// Input float2 for UVs
//** TextureSize **// Resolution of render target
//** MaxSteps **// Pixel Radius to search

float texelsize = 1 / TextureSize;
float mindist = 10000000;
float2 offsets[8] = {float2(-1,0), float2(1,0), float2(0,1), float2(0,-1), float2(-1,1), float2(1,1), float2(1,-1), float2(-1,-1)};

float3 sample = Tex.SampleLevel(TexSampler, UV, 0);
float3 curminsample = sample;

if(sample.x == 0 && sample.y == 0 && sample.z == 0)
{
int i = 0;
while(i < MaxSteps)
{
i++;
int j = 0;
while (j < 8)
{
float2 curUV = UV + offsets[j] * texelsize * i;
float3 offsetsample = Tex.SampleLevel(TexSampler, curUV, 0);

if(offsetsample.x != 0 || offsetsample.y != 0 || offsetsample.z != 0)
{
float curdist = length(UV - curUV);

if (curdist < mindist)
{
float2 projectUV = curUV + offsets[j] * texelsize * i * 0.25;
float3 direction = Tex.SampleLevel(TexSampler, projectUV, 0);
mindist = curdist;

if(direction.x != 0 || direction.y != 0 || direction.z != 0)
{
float3 delta = offsetsample - direction;
curminsample = offsetsample + delta * 4
}

else
{
curminsample = offsetsample;
}
}
}
j++;
}
}
}

return curminsample;

unreal 材质uv 相关内容

2019-06-13 18:36:50 hkmeo 阅读数 266
• ###### 从这里开始虚幻4-Editor介绍 v4.18

本课程系列取名英译系列，是录制人员参考国外英文原版经典教程，结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程，是Unreal的官方发布的入门教学，非常经典，是学习Unreal的佳入口。

2372 人正在学习 去看看 杨石兴

1.新建BP actor

2.新建材质球

3.cubemap格式hdr，32位图

unreal 材质uv 相关内容

2017-10-13 17:44:52 kasteluo 阅读数 1933
• ###### 从这里开始虚幻4-Editor介绍 v4.18

本课程系列取名英译系列，是录制人员参考国外英文原版经典教程，结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程，是Unreal的官方发布的入门教学，非常经典，是学习Unreal的佳入口。

2372 人正在学习 去看看 杨石兴

# 后期处理材质

## 后期处理材质的关键设置

Before Tonemapping

PostProcessInput0 提供带 HDR 中所有灯光的场景颜色。使用它修复临时抗锯齿和 GBuffer 查找（如深度、法线）的问题。

After Tonemapping

Before Translucency

Replacing the Tonemapper

PostProcessInput0 提供 HDR 场景颜色，PostProcessInput1 拥有 SeparateTranslucency（透明度为遮罩），PostprocessInput2 拥有低分辨率光晕输入。

Good Setup

## 使用 GBuffer 属性

GBuffer 由存储材质（如表面下/镜面颜色、平整度...）和物体属性（如法线、深度）的多个纹理构成， 不存在进行着色计算的灯光（灯光如何与材质交互）。在延迟渲染器中，首先渲染 GBuffer，然后使用 GBuffer 属性 计算所有灯光（延迟）。如 UE4 使用延迟着色路径（如 DirectX 11 或高端 OpenGL），则可在后期处理中使用这些缓冲。

## 过滤纹理查找

SceneTexture 材质表现拥有一个复选框，可获得 [双线性] 过滤查找。使用此选项将使渲染变慢，建议只在必要时使用。 许多屏幕空间纹理不支持过滤（如 GBuffer）。不公开此属性可使引擎根据需求压缩数据（打包将防止过滤）。

## 替代色调映射器

Engine.FilmWhitePoint

Engine.FilmSaturation
Engine.FilmContrast

## 已知问题

• 材质表现 SceneTexture

• SeparateTranslucency 无法使用。

• 部分查找无法在一些通路中使用（我们不会对一部分进行修复，因为它们对性能的消耗过大）。

• MaterialFunction 可能报错，但仍能在有后期处理域的材质中使用。

• 材质

• PostProcessMaterial 中的 UV 可能不在 0-1 范围内（如在编辑器中减小视口尺寸时），它与查找对齐，但难以应用晕映之类的效果。

• 后期处理材质的资源缩略图显示不正确。

• 不支持透明度输出（须通过不透明度）。

• 材质编辑器中的预览材质显示不正确。

• 存在这样的情况 - 材质变更未反映到后期处理的变更中。应对方法：重启编辑器。

• 利用 Content Browser 可对后期处理材质进行简单过滤。

• 混合

• 将两个后期处理体积域和一个混合半径混合时，可能出现非柔和过渡。结合默认材质实例设置使用未束缚的体积域可防止这种情况的发生。

## 常见问题

• 能将“Lighting only mode”纹理作为输入吗？

不行，没有作为中间步骤的可用数据。对此查看模式，我们无视材质颜色将其 生成。如需将此作为快速选项，需要重建较大部分的渲染代码。

• 为什么 SceneColor 查找显示有条带，但使用 PostProcessInput0 时却未显示？

使用 SceneColor 时，我们创建了一个场景的低精度副本，使查找进入当前写入的纹理中 （通常情况是在不可能的位置进行网格体渲染）。 在后期处理中应该使用 PostProcessInput0。

• 一次后期处理的内存消耗是多少？

内存消耗取决于屏幕分辨率。色调映射前使用 HDR（每像素 8 字节），之后使用 LDR（每像素 4 字节）。

• 如何降低后期处理的渲染消耗？

测量目标平台、保持较低的纹理查找数、执行较少的数学运算、减少相关纹理查找、 避免随机纹理查找（可能因为纹理缓存缺失而变慢）。

• 能使用多少次通路？

每次通路均会增加性能消耗。建议只在必要时组合通路和启动通路。总体游戏功能 （为获得更佳的性能，可将 noise 添加到引擎通路）。

• 后期处理和混合的 CPU 性能消耗如何？

混合材质的性能消耗极低。所有材质实例属性都将被混合，只有一个包含这些设置的后期处理材质通路被渲染。

• 我需要使用“Before Tonemapper”获得有效的临时抗锯齿。使用一种颜色时，它已经被色调映射，因此看起来存在色差。如何避免这些情况的出现？

没有简单的解决方案。需要执行倒转色调映射操作（高消耗）。由于人眼存在适应性， 颜色可能仍然存在色差。可将 EyeAdaptation 层级对 SceneTextures 公开，以便对其进行补偿。

• 如何获得后期处理图表的完整 dump 文件？

r.CompositionGraphDebug 可将图表日志存入控制台。范例：

FRenderingCompositePassContext:Debug 'PostProcessing' ---------
Node#1 'SceneColor'
ePId_Output0 (2D 1136x768 PF_FloatRGBA RT) SceneColor Dep:2
Node#4 'Velocity'
ePId_Output0 (2D 1136x768 PF_G16R16 RT) Velocity Dep:1
Node#2 'SceneDepthZ'
ePId_Output0 (2D 1136x768 PF_DepthStencil) SceneDepthZ Dep:1
Node#5 'MotionBlurSetup0MotionBlurSetup1'
ePId_Input0:Node#4 @ ePId_Output0 'Velocity'
ePId_Input1:Node#1 @ ePId_Output0 'SceneColor'
ePId_Input2:Node#2 @ ePId_Output0 'SceneDepthZ'
ePId_Output0 (2D 568x384 PF_FloatRGBA RT) MotionBlurSetup0 Dep:2
ePId_Output1 (2D 568x384 PF_FloatRGBA RT) MotionBlurSetup1 Dep:1
Node#6 'QuarterResVelocity'
ePId_Input0:Node#5 @ ePId_Output0 'MotionBlurSetup0MotionBlurSetup1'
ePId_Input1:
ePId_Output0 (2D 284x192 PF_FloatRGBA RT) QuarterResVelocity Dep:1
Node#7 'VelocityBlurX'
ePId_Input0:Node#6 @ ePId_Output0 'QuarterResVelocity'
ePId_Input1:
ePId_Output0 (2D 284x192 PF_FloatRGBA RT) VelocityBlurX Dep:1
...

unreal 材质uv 相关内容

2019-01-21 16:37:48 weixin_43464929 阅读数 772
• ###### 从这里开始虚幻4-Editor介绍 v4.18

本课程系列取名英译系列，是录制人员参考国外英文原版经典教程，结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程，是Unreal的官方发布的入门教学，非常经典，是学习Unreal的佳入口。

2372 人正在学习 去看看 杨石兴

# 如何实现爆炸火焰的效果

## 火焰的实现

• 新建一个材质球，重命名为FireBall，将纹理导入材质球，Blend mode选取Translucent, shading model 选取unlit。
• 新建粒子系统，将材质球导入粒子系统Required的material中
• 将Required中的Sub UV设置为线性平滑，水平和垂直方向选取合适大小（此处为8×8）
• 新建模块Subimage Index,将数组元素成员的的 1 的out val改为63
• 增大spawn-rate-constent的值（10000）
• 关闭初始速度

## 火星的实现

1.新建材料球，蓝图为下图

2.保存后将材质球放入之前的粒子系统中，将Spawn中的Rate-constant设置为0，在Burst中新增元素，count设置为30（火星数）
3.新建模块Location-Sphere，勾选Velocity(实现球型分散)，新建模块Orbit(实现四处分散）
4.调整火星大小和颜色即可

unreal 材质uv 相关内容

2017-06-02 13:19:00 weixin_33963189 阅读数 11
• ###### 从这里开始虚幻4-Editor介绍 v4.18

本课程系列取名英译系列，是录制人员参考国外英文原版经典教程，结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程，是Unreal的官方发布的入门教学，非常经典，是学习Unreal的佳入口。

2372 人正在学习 去看看 杨石兴

unreal 材质uv 相关内容