unity3d 随机生成地形之随机山脉

利用Fractal Noise生成地形,再加上山体shader,外加雪shader

Noise生成结果

noise 生成主要参考这篇文章,就不再赘述

Value3D:

Perlin2D:

Fractal Noise:

地形生成结果

生成地形网格方法主要参考这篇文章,就不再赘述

noise 频率:22,分辨率:256

Value3D:

Perlin2D:

Fractal Noise:

noise 有很多用处,比如地形,水体,流体,特殊物体的纹理,或使贴图不重复等等

山体shader

Shader方面分为两层,上层为岩石,下层为植物,(可根据贴图变化)

使用了四种贴图,上层两种,下层两种,噪声贴图来调整两种比例,以免一种过为单调,人工迹象明显

代码主要是利用lerp


注意:生成地形时,noise的uv比例要调整好(山体密度与细节)

雪部分主要根据下雪方向与法线方向判断,两者做点积,

再把下雪部分赋以特定雪纹理,就ok了

			if (dot(N, _SnowDir) > _SnowInten) {
					c = _SnowColor;
					N = normalize(i.normal) + normalize(UnpackNormal(tex2D(_SnowNormalTex, i.uv_SnowNormalTex)));
				}

结果

加上雾效与AA,bloom

全部代码已共享至github

        ---------------by   wolf96

时间: 2024-12-22 19:55:45

unity3d 随机生成地形之随机山脉的相关文章

随机生成模块

import random print(random.randint(1,4))#从1到4随机生成一个数字 print(random.randrange(1,4))#从1到3随机生成一个数字,不包含3 print(random.randrange(1,10,2))#1到9随机生成一个基数 print(random.randrange(0,10,2))#1到9随机生成一个偶数 print(random.random())#随机生成一个浮点数,范围是0-1之间 print(random.unifor

判断随机生成的四则运算结果

功能:1.随机生成一个四则运算 2.用户输入式子结果后判断是否正确(结果取整) #include<stdio.h> #include<string.h> #include<stdlib.h> #include<stack> using namespace std; int n,t,n1; struct ZX { char a; bool b;//if b=0 括号 if b=1 数字 } ; stack<ZX>s1; void atersz(ZX

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .

python随机生成6位数验证码

#随机生成6位数验证码 import randomcode = []for i in range(6):    if i == str(random.randint(1,5)):        code.append(i)    else:       temp =  random.randint(65,90)       code.append(chr(temp)) print ''.join(code) ###扩充random用法,随机生成树,和程序无关 print random.rando

python内置的一个好玩的函数-zip,并且巧妙的实现按概率随机生成有限个数的字符串。

python有一个比较有意思的内置函数-----zip,可以把传入的两组list进行一个组合变形,再输出子元素为tuple的list,不过变形的方式比较抽象. 举个例子: A=[1,2,3,4,5,6] B=['a','b','c','d'] v1=zip(A,B) v1的结果为: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')] 比较直观的理解就是,A和B是两道拉链上的扣子,生成的list的子tuple,每一组tuple就是一对扣好了的扣子,并且从每组list的

Linux下随机生成密码的命令总结

有时候经常为如何设置一个安全.符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结.终于有一天实在忍不住了,于是学习.整理了一下如何使用Linux下命令来随机生成安全.符合密码复杂度的命令. 俗话说"工欲善其事必先利其器".如果能用挖土机的,你为什么要用锄头? 最近一直在反思自己:习惯性用原始.老旧的方式解决问题.而不擅长利用一些工具快捷.方便的解决问题. 1:mkpaswd命令 mkpasswd 是Linux自带的一个密码生成工具,

2D地图随机生成

2D地图随机生成基础绘图 海陆分布

个人项目——四则运算题目的随机生成

任务:实现一个自动生成小学四则运算题目的命令行程序. 一.时间预估及实际花费时间 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 15h Development 开发 · Analysis · 需求分析 (包括学习新技术) 2h · Design Spec · 生成设计文档 0.5h · Design Review · 设计复审 (和同事审核设计文档) 0.5h · Coding

php随机生成国内ip地址

获得一个国家所有ip段,随机生成国内ip地址的缩水实现.注意:  $ip_long数组中后5个值在64位系统中可能是错误的(下面代码中  $ip_long 数组的后五个值在32位系统中为负数,64位系统中为正数,前五个值在64位系统中也可能有错误) 32位系统echo ip2long(“172.16.1.63″);结果 -140823724964位操作系统echo ip2long(“172.16.1.63″); 来源:http://www.liangkun.net/archives/681.ht