好久没写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 真实的植物渲染相关推荐

  1. 剖析Unreal Engine超真实人类的渲染技术Part 3 - 毛发渲染及其它

    目录 四.毛发渲染 4.1 毛发的构造及渲染技术 4.1.1 毛发的构造 4.1.2 Marschner毛发渲染模型 4.1.3 毛发的间接光照 4.2 毛发的底层实现 4.3 毛发的材质解析 4.3 ...

  2. c4d插件Arnold 阿诺德真实材质制作渲染视频教程

    c4d插件Arnold 阿诺德真实材质制作渲染视频教程 大小解压后:4.6G 含课程文件 1920X1080 mp4 时长:9小时50分钟 英语+中文字幕 (人工校对) 课程目录: [福利]GSG灰猩 ...

  3. unity3d Hair real time rendering 真实头发实时渲染

    先放上效果 惊现塞拉酱 算法是Weta Digital根据siggraph2003的论文加以改进,改进之前使用的是Kajiya and Kay's 模型,它能量不守恒,也就是说不是基于物理的,不准确 ...

  4. vue核心之虚拟DOM(vdom)与真实DOM页面渲染过程

    一.真实DOM和其解析流程? 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树--创建StyleRules--创建Render树--布局Layout--绘制Painting 第一步,用HTM ...

  5. Unity3D Linear和Gamma渲染

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  6. 剖析Unreal Engine超真实人类的渲染技术Part 2 - 眼球渲染

    目录 三.眼球渲染 3.1 眼球的构造及理论 3.1.1 眼球的构造 3.1.2 眼球的渲染理论 3.2 眼球的渲染技术 3.2.1 角膜的半透和光泽反射 3.2.2 瞳孔的次表面散射 3.2.3 瞳 ...

  7. Unity3D Shader系列之渲染流水线

    目录 1 引言 2 应用阶段 2.1 加载模型数据到显存 2.2 设置渲染状态 2.3 调用Draw Call 3 几何阶段 3.1 顶点着色器 3.2 曲面细分器 3.3 几何着色器 3.4 裁剪 ...

  8. [react] 什么是虚拟dom?虚拟dom比操作原生dom要快吗?虚拟dom是如何转变成真实dom并渲染到页面的?

    壹 ❀ 引 虚拟DOM(Virtual DOM)在前端领域也算是老生常谈的话题了,若你了解过vue或者react一定避不开这个话题,因此虚拟DOM也算是面试中常问的一个点,那么通过本文,你将了解到如下 ...

  9. 高效真实的云渲染算法 【转】

    原文链接 : http://www.cnblogs.com/effulgent/archive/2008/10/06/1305029.html 原文: Realistic and Fast Cloud ...

  10. 【Unity3D】2018实时渲染电影短片《死者之书》技术文章合集

    本篇文章首发于作者个人博客,原链:https://www.huozk.com/2018/unity3d-bookofthedead.html 古埃及人相信,人死后要先经历一段去往冥国的旅程,通过各种考 ...

最新文章

  1. 从weblogic的一个教训
  2. python全栈工程师薪资-Python全栈工程师为何这么火薪资这么高看了才知道
  3. java笔记--重定向输出流实现程序输出到日志
  4. 多表查询,自连接,子查询
  5. 开发者70行代码破解苹果OSX远程锁定安全功能
  6. python 在线培训费用-参加线上python培训班要多少钱?
  7. 1020. Tree Traversals
  8. 2T以上的盘怎么分区, 利用parted创建 linuxTB硬盘GPT分区
  9. 玩转计划任务命令:schtasks
  10. 小猪佩奇(python)
  11. Android 单元测试只看这一篇就够了
  12. python 游戏屏蔽了模拟键盘_单机游戏下载:专业模拟飞行11 专业飞行模拟11 v11.41r1|容量62GB|官方简体中文|支持键盘.鼠标...
  13. 电脑断网的解决办法(方法不会对电脑或网络造成负面影响)
  14. 越有钱越抠门 李嘉诚西装一穿就是十年
  15. HTML5 video autoplay=autoplay 无法自动播放的问题
  16. springboot整合mybatis之Invalid bound statement解决
  17. BTC系列 - 用docker搭BTC Testnet
  18. 【Linux学习】Linux free 命令学习
  19. linux 独立冗余磁盘阵列,Linux基础教程:独立硬盘冗余阵列-RAID
  20. 5V降压3.3V电路设计PW2058

热门文章

  1. 用python做一个飞机大战(一)
  2. HTML5大前端开发有哪些常用工具?
  3. Hinton 论文系列《A fast learning algorithm for deep belief nets》
  4. docker笔记(转自:陈沙克日志)
  5. matlab定义struck,Peter Struck
  6. Spec文件中判断是升级or卸载
  7. 为知笔记的markdown图片处理
  8. 从三点共线到四点共面
  9. Mybatis复杂查询(详细举例)
  10. 作品交流:调制解调-勘误情况