使用BlendingTexture实现简单的Terrain

使用BlendingTexture实现简单的Terrain

  BlendingTexture,就是一张纹理,纹理内存储的数据用于其它去处的Alpha通道value。例如以下四张图需要混合在Terrain表面:

  

  我们可以将四张alpha灰度图组织成一张RGBA图:

  

  为了完成混合纹理功能,首先在Properties中定义四张图及颜色:

  

  当然还要在Subshader中定义:

  

  定义uv引用数据:

  

  混合算法的第一步,从各个纹理中取出texel:

  

  先混合颜色:

  

  将finalColor混合地表色后输出:

  

  混合结果如下:

  

How it works

  一张图可以解释一切:

  

时间: 2024-11-06 03:41:53

使用BlendingTexture实现简单的Terrain的相关文章

【转】超简单利用UGUI制作圆形小地图

http://sanwen.net/a/ithhtbo.html 由于UI都是Achor自己用PS做的,比较粗糙,大家见谅,不过丝毫不影响功能的实现,下面我们看看今天的笔记: 首先我们看看需要哪些组件: 1.在Canvas画布下新建一个GameObject,改名为Mask,顾名思义,该组件实现遮罩功能. 2.在Mask下面添加RawImage,用来实现小地图动态显示. 3.新建一个Sprite作为角色的子对象,改名为Icon,实现小地图中代替角色的箭头图标.(贴图大家根据自己喜好来画,这里Ach

超大地形的处理 (Terrain Visualization)【转自知乎】

转自顾露 [开放世界游戏中的大地图背后有哪些实现技术?] 链接:http://gulu-dev.com/post/2014-11-16-open-world ### 4. 超大地形的处理 (Terrain Visualization) 终于说到对超大地形的处理了.可以说从上世纪九十年代起,超大地形的可视化,一直是3D游戏领域热门的话题.今天我们就借着这个机会,把相关的算法和实现理一理吧. 考虑到篇幅太长的话,俺的手指头招架不住,再一个不少对这个话题感兴趣的同学可能压根就不是程序员,一些实现细节可

(翻译)Unity中,在Terrain上绘制网格

Draw grid on the terrain in Unity Jan 23, 2015 Drawing grid on the terrain is used in lot of game genres – RTS, Simulation, Tower defense, etc. It can be done very easily in Unity. Here is some very simple extensible solution with following features:

Unity3D自带地形系统的创建与简单设置图文详解

 先来创建一个新项目,命名为TankWar,以后的相关文件都放置在这个文件夹下面. 创建完毕之后是一个空白的工程,只有一个Camera在场景中. CTRL+S将该场景存档为TankWar0.1,做好版本控制. 我们点击Terrain,选中Create Teerain,便创建了一个地形: 可以看到地形的默认坐标就是0,0,0,我们调整摄像机的位置以便及时观察地形. 选中摄像机后,按下W是调整坐标,按下E是旋转变换,按下R是放缩变换. 调整后场景有点暗,再添加一个灯光:GameObject->C

《Focus On 3D Terrain Programming》中一段代码的注释二

取自<Focus On 3D Terrain Programming>中的一段: 1 bool CTERRAIN::MakeTerrainFault( int iSize, int iIterations, int iMinDelta, int iMaxDelta, float fFilter ) 2 { 3 ...... 4 ............. 5 for( iCurrentIteration=0; iCurrentIteration<iIterations; iCurrent

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL

Winfrom 简单的安卓手机屏幕获取和安卓简单操作

为啥我要做这个东西了,是因为经常要用投影演示app ,现在有很多这样的软件可以把手机界面投到电脑上 ,但都要安装,比如说360的手机助手,我又讨厌安装,于是就自己捣鼓了下 做了这个东西, 实现了以下简单功能   1.屏幕获取(因为是截图方式获取的,所以有点卡顿) 2.实现点击功能,并在点击的时候出现一个手势图标,方便用户观看 3.实现简单的滑动功能 4.实现在界面上画图功能 5.实现拖拽安装apk功能 操作说明:鼠标左边 模拟手机点击,中键停止/开始刷新界面(画图的时候不能刷新),右键去掉画图内