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

珠海专业网站建设/提高百度快速排名

珠海专业网站建设,提高百度快速排名,微信网站开发费用,一流专业建设规划这篇教程将介绍如何在 Unity 中创建一个基于概率的循环地图 Unlit Shader。该 Shader 可以根据噪声纹理和概率值在地图上随机分布纹理。首先,我们来翻译给定的 Shader 代码。这个 Shader 可以根据噪声贴图的值以及预设的概率值,随机地在地图上分布三种不…

这篇教程将介绍如何在 Unity 中创建一个基于概率的循环地图 Unlit Shader。该 Shader 可以根据噪声纹理和概率值在地图上随机分布纹理。

首先,我们来翻译给定的 Shader 代码。这个 Shader 可以根据噪声贴图的值以及预设的概率值,随机地在地图上分布三种不同的纹理。

Shader 代码解释

  1. 定义属性

Properties
{_MainTex ("Texture", 2D) = "white" {}_MainTex2 ("Texture 2", 2D) = "white" {}_MainTex3 ("Texture 3", 2D) = "white" {}_NoiseTex ("Noise Texture", 2D) = "white" {}// _MainTex 和 _MainTex2 的出现概率_Probability("Probability", Vector) = (0, 0,0,0)
}
  • _MainTex_MainTex2_MainTex3 分别表示三种不同的纹理。

  • _NoiseTex 表示噪声纹理。

  • _Probability 是一个四维向量,其中 x 和 y 的值表示第一个纹理的概率范围,z 和 w 的值表示第二个纹理的概率范围。

  1. 顶点着色器

顶点着色器主要负责转换顶点的坐标以及计算纹理坐标。

v2f vert (appdata v)
{v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);UNITY_TRANSFER_FOG(o,o.vertex);return o;
}
  1. 片段着色器

片段着色器负责根据噪声贴图和概率值选择使用的纹理。

fixed4 frag (v2f i) : SV_Target
{float noiseSample;// 将UV坐标映射到整数块上float2 blockCoords = floor(i.uv)/_MainTex_ST.x;// 获取噪声贴图中的当前块的值noiseSample = tex2D(_NoiseTex, blockCoords).r;// 根据噪声值选择要使用的纹理fixed4 col;if (noiseSample > _Probability.x && noiseSample < _Probability.y) {col = tex2D(_MainTex, i.uv);} else if (noiseSample > _Probability.z && noiseSample < _Probability.w) {col = tex2D(_MainTex2, i.uv);} else {col = tex2D(_MainTex3, i.uv);}return col;
}

我们可以使用这个 Shader 来创建一个基于概率的循环地图 Unlit Shader

步骤 1:创建 Shader

  1. 在 Unity 项目中,右键单击 Project 窗口,然后选择 Create > Shader > Unlit Shader。

  1. 将新创建的 Shader 重命名为 "LoopingMapUnlitShader"。

  1. 双击 Shader 文件以在文本编辑器中打开它。

  1. 然后将上面对应的 Shader 代码粘贴到文件中。

  1. 保存。

步骤 2:创建材质

  1. 在 Unity 项目中,右键单击 Project 窗口,然后选择 Create > Material。

  1. 将新创建的材质重命名为 "LoopingMapUnlitMaterial"。

  1. 在 Inspector 窗口中,将 Shader 下拉菜单设置为 "Unlit/LoopingMapUnlitShader"。

步骤 3:设置材质属性

  1. 在 Inspector 窗口中,为材质的以下属性分配纹理和值:

  • _MainTex:分配纹理 1。

  • _MainTex2:分配纹理 2。

  • _MainTex3:分配纹理 3。

  • _NoiseTex:分配一个噪声纹理。

  • _Probability:设置纹理 1 和纹理 2 的概率范围。例如,(0.2, 0.4, 0.6, 0.8) 表示纹理 1 的概率范围为 20% 到 40%,纹理 2 的概率范围为 60% 到 80%。

步骤 4:应用材质到游戏对象

  1. 在 Unity 场景中,为需要使用循环地图 Unlit Shader 的游戏对象(例如地形或平面)分配 "LoopingMapUnlitMaterial" 材质。

现在,你应该能够在 Unity 场景中看到基于概率的循环地图 Unlit Shader 已成功应用于游戏对象。根据设置的概率值和噪声纹理,三种纹理将在游戏对象上随机分布。如果需要调整纹理分布,请更改材质的 _Probability 属性值。

进阶:调整和优化

现在您已经成功应用了基于概率的循环地图 Unlit Shader,您可以根据项目的需求对其进行调整和优化。

  1. 优化噪声纹理:噪声纹理的质量和类型会影响纹理分布的外观。尝试使用不同类型的噪声纹理(例如 Perlin 噪声、Simplex 噪声或 Voronoi 图),以找到最适合您项目需求的纹理分布效果。

  1. 使用多个概率值:如果您想使用更多的纹理,可以将 Shader 代码进行扩展,以支持更多的纹理和概率值。请注意,这可能会对性能产生影响,因此要权衡效果与性能。

  1. 去除代码中的分支:我们可以使用 step 函数和 lerp 函数。step 函数用于生成阶跃函数,lerp 函数用于在两个值之间进行线性插值。以下是优化后的代码:

fixed4 frag (v2f i) : SV_Target
{float noiseSample;// 将UV坐标映射到整数块上float2 blockCoords = floor(i.uv) / _MainTex_ST.x;// 获取噪声贴图中的当前块的值noiseSample = tex2D(_NoiseTex, blockCoords).r;// 根据噪声值选择要使用的纹理bool inRange1 = noiseSample > _Probability.x && noiseSample < _Probability.y;bool inRange2 = noiseSample > _Probability.z && noiseSample < _Probability.w;fixed4 col = inRange1 ? tex2D(_MainTex, i.uv) :inRange2 ? tex2D(_MainTex2, i.uv) :tex2D(_MainTex3, i.uv);return col;
}

感谢你的阅读到最后

http://www.jmfq.cn/news/5002489.html

相关文章:

  • 手机网站做多宽的图片/谷歌官方网站
  • 百度网站地图/专业网络推广公司排名
  • 建设银行的网站首页/公司员工培训方案
  • 中国人民共和国住房和城乡建设部网站/seo关键词库
  • 个人能免费做网站/友情链接例子
  • 国家知识产权局商标局/沈阳百度快照优化公司
  • 网站挑错/韶山百度seo
  • dw建网站具体步骤/360站长工具seo
  • 上海网页设计公司排行/网站优化公司
  • 品牌高端网站制作公司/营销网站seo推广
  • 百度不收录哪些网站吗/北京seo代理公司
  • wordpress 插件本地化/上海关键词优化公司bwyseo
  • 百度网站自然排名优化/自动引流推广app
  • 没有网站如何做adsense/网页制作图片
  • 网络科技公司网站/百度认证平台官网
  • 网站开发公司报价/刷排名的软件是什么
  • 功能网站建设/品牌推广方案ppt
  • 发布php做的网站/充电宝关键词优化
  • php网站开发论文/网络营销所学课程
  • 英文手表网站/百度文库个人登录
  • 免费网站空间 推荐/响应式网站 乐云seo品牌
  • 网站建设所需的基本内容/网页制作网站
  • 网站类产品怎么做竞品分析/佛山网站优化
  • 英文网站 建站/站长seo软件
  • 自己建一个网站能过期吗/怎么做市场营销和推广
  • 嘉兴做网站seo/aso优化重要吗
  • 专业的设计网站有哪些内容/淄博做网站的公司
  • 怎么建php网站/免费seo在线工具
  • 郴州品牌网站建设推广/网络营销的特点不包括
  • h5case 网站/西安网站seo费用