当前位置: 首页 > news >正文

网站首页布局wordpress 快讯功能

网站首页布局,wordpress 快讯功能,石家庄人口,互联网保险公司排行榜前言 随着电脑和手机硬件性能越来越高#xff0c;游戏越来越追求大世界#xff0c;而大世界非常核心的一环是地形系统#xff0c;地形系统两大构成因素#xff1a;高度和多材质混合#xff0c;此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。 材质层 …前言 随着电脑和手机硬件性能越来越高游戏越来越追求大世界而大世界非常核心的一环是地形系统地形系统两大构成因素高度和多材质混合此篇文章介绍下UE4/UE5 地形的材质混合方案----基于WeightMap混合。 材质层 地形着色的基础组成比如雪, 沙漠岩石绿地等等。在UE5创建材质层是材质的节点LandscapeLayerBlend节点中创建 LandscapeLayerBlend节点每个输入上游就是一个材质基础层 这里我用简单的例子假定材质基础层都是一个float3常量颜色比如float3(1.0, 0.2, 0.1)。 WeightMap 各个材质基础层按照一定权重混合得到最终的效果, WeightMap就是材质权重图里面存储了各个基础层材质混合的权重值。在UE5里WeightMap的格式是RGBA8可以存储四层材质层的权重值精度为0 - 255 (对应 0.0 - 1.0的精度)。 WeightMap数量和通道使用 从之前我UE地形系列文章我们知道UE地形是由一个个地形块(LandscapeComponent)组成一个LandscapeComponent可以存在多个WeightMap, 假设存在N个WeightMap. 那么最终地块的基础材质层总数4 * (N - 1) MaterialLayerNum 4 *N. 这里之所以用“” 和 “”, 而不是“ 4 * N”是因为一张WeightMap不一定会用完所有通道。比如当前地形块刷了5种材质基础层则该地形块就存在两张WeightMap, 第一张WeightMap RGBA都用来存储四种材质基础层的权重第二张WeightMap的R通道用来存储第五种材质基础层的权重剩余的GBA通道都是零权重。 材质基础层用了哪张WeightMap的哪个通道是记录在ULandscapeComponent里 WeightMap存储权重总和 不管地形块刷了多少层材质基础层最终地形某个点的各层权重总和为1.0(255).比如说上面的地形刷了五层材质基础层有两张WeightMap分别为W1和W2, W1[n][n].R 代表访问W1权重图的N行N列的像素R通道值。 则存在公式 W1[n][n].R   W1[n][n].G  W1[n][n].B   W1[n][n].A  W2[n][n].R  255(byte) (注意W2[n][n].G W2[n][n].B W2[n][n].A 0) UE5地形权重混合的HLSL代码分析 生成的具体HLSL代码 以上面的5层材质的为案例, 抓帧得到的HLSL代码(位于Material.ush文件) 大致能看到采样了WeightMap1和WeightMap2, 然后大致能看到颜色混合了5次。 为更清楚的表示, 手写HLSL代码表示大致如下: float4 Weigh1 Texture2DSample(WeightMap1, UV); float4 Weigh2 Texture2DSample(WeightMap2, UV); float4 Layer1Mask float(1.0, 0.0, 0.0, 0.0); float4 Layer2Mask float(0.0, 1.0, 0.0, 0.0); float4 Layer3Mask float(1.0, 0.0, 1.0, 0.0); float4 Layer5Mask float(0.0, 0.0, 0.0, 1.0); float4 Layer6Mask float(1.0, 0.0, 0.0, 0.0);float3 L1 float3(0.78437978,0.95937508,0.50223249); float3 L2 float3(0.98749989,0.06583356,0.17528065); float3 L3 float3(0.45752281,0.53502721,0.88749981); float4 L5 float3(0.22312574,0.97916698,0.28475177); float4 L6 float3(0.88749981,0.25128645,0.26541224);float3 BaseColor float3(0.0, 0.0, 0.0);// five layer blend BaseColor dot(Layer1Mask, Weigh1) * L1; BaseColor dot(Layer2Mask, Weigh1) * L2; BaseColor dot(Layer3Mask, Weigh1) * L3; BaseColor dot(Layer5Mask, Weigh1) * L5; BaseColor dot(Layer6Mask, Weigh2) * L6; 这里dot(float4(1, 0, 0,0)A)其实就是取A的R通道, 其他类似道理。 地形材质Shader代码编译流程 上面可以更清楚整个材质权重混合的流程. 代码是动态生成的和地块现在使用到的实际材质基础层数量相关所以在刷UE地形的时候刷一种未出现的新材质会引起材质编译 编译生成流程的最终在UMaterialExpressionLandscapeLayerBlend::Compile编译Shader代码, 这里判断是否需要编译发生在ULandscapeComponent::GetCombinationMaterial里 首先ULandscapeComponent的所属ALandscapeProxy里存在一个 MaterialInstanceConstantMap 材质实例管理表 这个表会缓存出现过的各种地形材质实例MaterialInstanceConstantMap的key代表使用了哪些材质基础并且哪个基础材质使用了哪张权重纹理如下红圈所示 代表了LandscapeMaterialInstanceConstant_10材质实例是在 L1. L3, L3,L7使用WeightMap0, L6使用了WeightMap0的情况下编译出来的。 如果在MaterialInstanceConstantMap找到同个Key的就使用已有的MaterialInstance, 如果找不到就以ALandscape的母材质为基础创建新的材质实例并且设TerrainLayerWeightParameters材质静态编译信息 触发编译。 上面WeightMap%d和LayerMask_%s 指在Shader代码中生成了每个Layer对应的权重图和纹理通道遮罩索引在上面的HLSL实现地形材质混合的简化代码大致相符合。 当然最终这个材质实例是保存到ULandscapeComponent的MaterialInstances被UPROPERTY序列化下来。 当然最终材质编译完后得更新地形的材质实例参数值: WeightMap和LayerMask遮罩 参考资料 UE5.2的地形系统实现
http://www.w-s-a.com/news/974020/

相关文章:

  • 免费建立一个网站互联网推广培训
  • WordPress多站点绑定域名深圳住房建设部官方网站
  • 网站建设公司zgkr上海网页网络技术有限公司
  • wordpress附件扩展格式徐州seo关键词
  • wordpress博客站模板织梦网站 联系方式修改
  • 北京城乡建设厅网站重庆网站建设解决方案
  • 网站建设和维护工作内容网站的空间与域名
  • 济南做门户网站开发公司网页发布的步骤
  • 江苏省交通厅门户网站建设管理办法做的网站怎么让百度收录
  • 关于怎么做网站网站site的收录数量要多远索引量
  • 传世网站建设阳光创信-网站建设首选品牌
  • 周口建设网站中国装修公司十大排名
  • wordpress自助发卡青浦网站优化
  • 南京建设银行公积金查询网站wordpress加载插件下载
  • 做网站怎么那么难网站的建设与管理的心得体会
  • 黄冈网站建设哪家快些网站规划与建设评分标准
  • 建站平台 绑定域名怎么在手机上做网站
  • 做电影网站违法吗莱芜 网站
  • 品牌咨询公司泉州seo不到首页不扣费
  • 做网站做一个什么主题的怎样搭建一个企业网站
  • 做设计的有什么网站桂林论坛网站有哪些
  • 做的网站不能放视频开发公司春联
  • 重庆装修房子可以提取公积金吗长沙优化官网公司
  • 做外贸的网站都有哪些带后台的html网站源码
  • 厦门百度快速优化排名手机系统优化工具
  • 宁波网站制作公司推荐公司建站多少钱
  • 网络营销薪酬公司温州网站优化定制
  • 橙色在网站中的应用淘宝客绑定网站备案号
  • 杭州视频网站建设成都设计院排行
  • 慈溪建设网站盘丝洞app破解无限盘币