Unity学习shader笔记[一百四十三]积雪二
Posted 染指流年灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity学习shader笔记[一百四十三]积雪二相关的知识,希望对你有一定的参考价值。
这里是在 Unity学习shader笔记[一百二十四]积雪和PBR的shader 一做的更改
首先首要的还是找类似效果的插件
效果参考 https://live.csdn.net/v/281535
特点
- 坑洼处的地方先积雪
- 雪地出现的形状特殊,是一个点一个点直接出现的,一出现就是不透明的颜色。而不是透明度从无到有。模仿雪落到地面之后的一点点增多的效果。
- 雪的边缘没有渐变
- 雪要有脚印
坑洼处的地方先积雪
因为坑洼处的积雪还是跟着默认的溶解来走的。即根据黑和白分布以及阈值来进行区分雪区域和非雪区域。
这个有几个思路,
-
主帖图颜色深的地方先进行积雪,用RGB的平均值代表的灰度来判断是否颜色深, 这种思路有限制,一旦遇到暗的地方不代表缝隙坑洼处就会有问题.。如果要让灰度的边界值更加明显,即求得灰度之后界限更加清晰,可以用power再对灰度值进行处理。这样本身灰度值小的,power之后会比本身灰度值不小的差距大很多。这是power函数的函数走向特性决定的。
-
有物体表面深度图的话,用深度图来代替主贴图的颜色深浅判断,这里的深度图是视差贴图的深度图
-
用法线的夹角与上方的点积来判断,地砖的边缘部分法线一般xy比较大,主要针对的是地面,这样的面朝上的物体。因为其他物体,世界坐标下的法线方向没有这个规律。UE的插件用到的是法线z值直接power来做边界值。但是用法线的z值来做虽然可以表示沟壑。但是z值小的地方往往是沟壑的斜壁部分,因为这部分的法线在切线空间的xy值会比较大,z值比较小。所以这种做法对于那种垂直变化的法线是可以的,但是对于坡度比较缓的物体。首先雪出现在坡上而不是沟壑的底部,仔细看会不太正常。特别是当pow指数比较大的时候,这种情况就会特别明显。
主帖图方式
这里一减和不一减都可以。主要取决于原来依靠噪声图改变雪范围的时候,阈值是升的还是降的。
后面的时候直接用step来处理,将灰度值小于一定的直接就认为是黑的。只是这种做法会将某些不是缝隙的地方也算进去。
雪地出现的形状特殊
这个形状其实有点类似于结霜的过程,所以去搜索了一下AssetStore的霜Frost。
后来还是直接找了UE的同事截图发连线图, 下载UE以及直接查看插件比较快。
雪地出现的形状特殊,是一个点一个点直接出现的。而不是透明度从无到有。模仿雪落到地面之后的一点点增多的效果。
其实这个特殊形状还是溶解的扩散,只是溶解密度很大很大,所以一个小点小点出来看起来像点出来。
所以可以考虑将图做成2048*2048,然后将噪声密度设置得特别大。
所以需要图片本身的溶解范围很小,密度很高才行,配合到大地图还要将tiling设置得很高。
小点小点出来
其实真的小点小点出来还是不行的,会很突兀。但是这个点非常非常小,所以如果可以,需要一张密度很高的图。这样就看不出透明度的变化
实际上的在透明值0-0.5的情况下,是从0变到0.5或者0.4。然后在0.5或者0.4之后才是闪变到1.
这种做法其实也是会导致闪变 的问题。
最下面的multiply结果值是从0到1的渐变值。
后来就注意到了在lerp阶段的后期雪的面积增加是很均匀的,并且看不出透明变化的过程。所以是尽量将前期关于雪透明度的变量值往后期靠拢。
雪地脚印
参考 Unity学习shader笔记[一百四十四]雪地、沙地、泥地脚印
最后做法
最后还是回到某个刚调试好的PBR从lit更换到雪材质后表现无差的git的版本,把他的SG删减到最原始的PBR之后,以此为基础做的第二版雪扩展。
参考网址
雪地shader_游戏中沙漠、雪地的轨迹、脚印实现
Frost Effect
Snow Cover Shader
一百四十八:部署python项目之环境依赖
环境:centos7 + python3.6
准备工作,生成项目requirements.txt文件,用于存放第三方库和版本信息:pip freeze > requirements.txt,并且上传到服务器
一:准备python虚拟环境
pip install virtualenv
pip install virtualenvwrapper
安装virtualenvwrapper会自动安装virtualenv,所以直接安装virtualenvwrapper
这里指定豆瓣源安装速度快一些:pip install -i https://pypi.douban.com/simple virtualenvwrapper
安装完成会有一个virtualenvwrapper.sh文件,找到文件的位置:whereis virtualenvwrapper.sh
设置环境变量:vim ~/.bashrc
在文件末尾加上
export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/local/python/bin/python3 防止找到python2,这里指定python3
source /usr/local/python/bin/virtualenvwrapper.sh
source一下,让变量生效:source ~/.bashrc
创建虚拟环境 :mkvirtualenv 环境名,安装完成后会自动进入虚拟环境
virtualenvwrapper常用命令列表
workon:列出虚拟环境列表
lsvirtualenv:同上
mkvirtualenv :新建虚拟环境
workon [虚拟环境名称]:切换虚拟环境
rmvirtualenv :删除虚拟环境
deactivate: 离开虚拟环境
进入虚拟环境,进项目requirements.txt所在目录,安装第三方库,同样,这里为了速度快些,使用豆瓣的源:
pip install -i https://pypi.douban.com/simple -r requirements.txt
二:安装mysql数据库见:https://www.cnblogs.com/zhongyehai/p/10475646.html
这里设置用户:root,密码:Admin123@qwe
创建数据库,数据库名与项目里面的数据库名一致,编码为utf8:create database test charset utf8;
由于数据库密码不一致,这里修改连接的信息,再执行数据库迁移
python manager.py db init
python manager.py db migrate
python manager.py db upgrade
把项目要用的端口开放
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
普通运行模式运行看一下能不能访问
查询字符串的形式访问的接口,没有报错,说明数据库链接成功,没有查到数据是因为本身就没有数据
以上是关于Unity学习shader笔记[一百四十三]积雪二的主要内容,如果未能解决你的问题,请参考以下文章