Unity3d 真实的植物渲染
好久没写shader了,有些生疏,刚弄了个植物shader,分享一下。
先上图片:
重点需要注意的是fragment shader的透明部分
需要如此声明
Tags{ "LightMode" = "ForwardBase" "Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout" }Cull BackZWrite onBlend SrcAlpha OneMinusSrcAlpha
Queue队列,决定渲染顺序
Background - 最初的渲染渲染,用来渲染天空盒或者背景
Geometry - 默认值,一般的不透明物体
AlphaTest - 渲染经过Alpha Test的像素
Transparent - 渲染透明物体
Overlay - 最后渲染的物体
"IgnoreProjector"="True"(不被Projectors影响)
关于renderType来自这里:
Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。
Transparent:用于半透明着色器(透明着色器、粒子着色器、字体着色器、地形额外通道的着色器)。
TransparentCutout: 蒙皮透明着色器(Transparent Cutout,两个通道的植被着色器)。
Background: Skybox shaders. 天空盒着色器。
Overlay: GUITexture, Halo, Flare shaders. 光晕着色器、闪光着色器。
TreeOpaque: terrain engine tree bark. 地形引擎中的树皮。
TreeTransparentCutout: terrain engine tree leaves. 地形引擎中的树叶。
TreeBillboard: terrain engine billboarded trees. 地形引擎中的广告牌树。
Grass: terrain engine grass. 地形引擎中的草。
GrassBillboard: terrain engine billboarded grass. 地形引擎何中的广告牌草。
这里需要注意的是透明的blend部分官方文档可详细查看,
但如果只这么写透明部分会挡住后面的部分,我们还要在后面的代码中加上discard,直接丢弃像素,这样它就不会挡住后面的部分了,
if (c.a<0.5)discard;
这里渲染的重点还是基于物理的渲染,之前有详细写过:
由于资源里有两种贴图方案,我就写了两种shader进行了不同的计算
一种是specular Texture的一种是GlossTexture的
大芭蕉
<span style="font-size:14px;"> float3 cc = (c.rgb *(diff+0.2)*_Color*_Lum + all * SpecC*_SC * _SCP);return float4(cc * 2 + rim, c.a * (1 - Luminance(TransC) + _TL));</span>
玉竹
float3 cc = (c.rgb *(diff + 0.2)*_Color*_Lum + (all + 0.1)*(saturate(Luminance(SpecC)) + 0.1)*_SC*_SCP);return float4(cc * 2 + rim, c.a * (1 - Luminance(TransC) + _TL));
也可以引申一些更好玩的东西比如在vertex shader中写入被风吹的效果
全部代码以共享至GitHub
---------- by wolf96 http://blog.csdn.net/wolf96
Unity3d 真实的植物渲染相关推荐
- 剖析Unreal Engine超真实人类的渲染技术Part 3 - 毛发渲染及其它
目录 四.毛发渲染 4.1 毛发的构造及渲染技术 4.1.1 毛发的构造 4.1.2 Marschner毛发渲染模型 4.1.3 毛发的间接光照 4.2 毛发的底层实现 4.3 毛发的材质解析 4.3 ...
- c4d插件Arnold 阿诺德真实材质制作渲染视频教程
c4d插件Arnold 阿诺德真实材质制作渲染视频教程 大小解压后:4.6G 含课程文件 1920X1080 mp4 时长:9小时50分钟 英语+中文字幕 (人工校对) 课程目录: [福利]GSG灰猩 ...
- unity3d Hair real time rendering 真实头发实时渲染
先放上效果 惊现塞拉酱 算法是Weta Digital根据siggraph2003的论文加以改进,改进之前使用的是Kajiya and Kay's 模型,它能量不守恒,也就是说不是基于物理的,不准确 ...
- vue核心之虚拟DOM(vdom)与真实DOM页面渲染过程
一.真实DOM和其解析流程? 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树--创建StyleRules--创建Render树--布局Layout--绘制Painting 第一步,用HTM ...
- Unity3D Linear和Gamma渲染
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- 剖析Unreal Engine超真实人类的渲染技术Part 2 - 眼球渲染
目录 三.眼球渲染 3.1 眼球的构造及理论 3.1.1 眼球的构造 3.1.2 眼球的渲染理论 3.2 眼球的渲染技术 3.2.1 角膜的半透和光泽反射 3.2.2 瞳孔的次表面散射 3.2.3 瞳 ...
- Unity3D Shader系列之渲染流水线
目录 1 引言 2 应用阶段 2.1 加载模型数据到显存 2.2 设置渲染状态 2.3 调用Draw Call 3 几何阶段 3.1 顶点着色器 3.2 曲面细分器 3.3 几何着色器 3.4 裁剪 ...
- [react] 什么是虚拟dom?虚拟dom比操作原生dom要快吗?虚拟dom是如何转变成真实dom并渲染到页面的?
壹 ❀ 引 虚拟DOM(Virtual DOM)在前端领域也算是老生常谈的话题了,若你了解过vue或者react一定避不开这个话题,因此虚拟DOM也算是面试中常问的一个点,那么通过本文,你将了解到如下 ...
- 高效真实的云渲染算法 【转】
原文链接 : http://www.cnblogs.com/effulgent/archive/2008/10/06/1305029.html 原文: Realistic and Fast Cloud ...
- 【Unity3D】2018实时渲染电影短片《死者之书》技术文章合集
本篇文章首发于作者个人博客,原链:https://www.huozk.com/2018/unity3d-bookofthedead.html 古埃及人相信,人死后要先经历一段去往冥国的旅程,通过各种考 ...
最新文章
- 从weblogic的一个教训
- python全栈工程师薪资-Python全栈工程师为何这么火薪资这么高看了才知道
- java笔记--重定向输出流实现程序输出到日志
- 多表查询,自连接,子查询
- 开发者70行代码破解苹果OSX远程锁定安全功能
- python 在线培训费用-参加线上python培训班要多少钱?
- 1020. Tree Traversals
- 2T以上的盘怎么分区, 利用parted创建 linuxTB硬盘GPT分区
- 玩转计划任务命令:schtasks
- 小猪佩奇(python)
- Android 单元测试只看这一篇就够了
- python 游戏屏蔽了模拟键盘_单机游戏下载:专业模拟飞行11 专业飞行模拟11 v11.41r1|容量62GB|官方简体中文|支持键盘.鼠标...
- 电脑断网的解决办法(方法不会对电脑或网络造成负面影响)
- 越有钱越抠门 李嘉诚西装一穿就是十年
- HTML5 video autoplay=autoplay 无法自动播放的问题
- springboot整合mybatis之Invalid bound statement解决
- BTC系列 - 用docker搭BTC Testnet
- 【Linux学习】Linux free 命令学习
- linux 独立冗余磁盘阵列,Linux基础教程:独立硬盘冗余阵列-RAID
- 5V降压3.3V电路设计PW2058