【翻译】CryEngine3下的Hair Shader
Hair Shader
1. 概述
Hair shader是专门用来渲染人类头发的
2. Shader参数
Shader参数 |
描述 |
Wind frequency |
设置顶点变化的速度 |
Wind wave0 amp |
设置顶点变形的量和幅度 |
Wind wave2 amp |
设置不同曲面上的顶点变化的量和幅度 |
Wind phase |
设置头发动画变形的随机化 |
Detail tiling |
设置细节tiling的幅度 |
Hair Color |
设置头发的颜色 |
Primary spec color |
设置镜面反射的颜色 |
Primary spec glossiness |
设置镜面反射的光泽度 |
Primary spec shift |
设置镜面反射的偏移 |
Secondary spec color |
设置次级镜面反射的颜色 |
Sceondary spec glossiness |
设置次级镜面反射的光泽度 |
Sceondary spec shift |
设置次级镜面反射偏移 |
Bump scale |
设置头发的Bump幅度 |
Rim multiplier |
设置边缘强度的乘数 |
Diffuse wrap |
设置漫反射遮蔽 |
View opacity |
设置观察点不透明度,这取决于摄像机角度 |
Fill multiplier |
|
3. 头发建模准则
由于在硬件方面AlphaBlending排序的限制,我们不能在这点上进行逐像素的排序,这样我们可以节省很多工作。所以我们需要一个非常廉价并且近似的方法:
渲染头发不透明区域(就是Alpha通道上为1的地方),然后渲染头发的背面,最后渲染头发的前面。
这种方式对于大多情况都适用,但也有不少限制,关于它的建模工作如下:
制作一个初始的头发套,这回是没有着色器,细节来源于头。
然后为所有头发片添加细节
重要提示:每个头发片使用单面建模。
4. 头发纹理准则
关于头发纹理,如果非常稀薄的头发就是让纹理的像素尽量完美,并尽可能少的做扭曲和旋转。这里有一个达成目标的方法,在Photoshop中制作一个非同一的噪波(uniform noise),然后进行模糊(strong MotionBlur)。
然后为头发纹理添加细节,着色噪点透明混合区域等等。
重要说明:透明混合区域我们要避免过多的透明混合区域,我们只尝试在头发末端区域添加透明区域。
为了得到发丝的效果,我们要开启纹理的各向异性选项。
Diffuse texture
Diffuse texture alpha channel
5. 使用Hair Shader
Hair Shader为了近似排序默认使用2面渲染,所以不要在材质属性中再开启双面渲染选项了。
转载于:https://www.cnblogs.com/wanax/archive/2009/12/20/1628167.html
【翻译】CryEngine3下的Hair Shader相关推荐
- [翻译]CryEngine3中的Water Shader
Water Shader Water Shader用来创建海洋 1. 主要属性 1). 没有必要为Water Shaders设置Diffuse和Specular Maps,但需要一张Bum ...
- unity3d 模型从上到下出现(shader)
unity3d 模型从上到下出现(shader) 原文 unity游侠:https://blog.csdn.net/y90o08u28/article/details/87970754 ThreePo ...
- Why Memory Barriers中文翻译(下)
转载自:Why Memory Barriers中文翻译(下) 在上一篇why memory barriers文档中,由于各种原因,有几个章节没有翻译.其实所谓的各种原因总结出一句话就是还没有明白那些章 ...
- [翻译]CryEngine3中光照的美术提示
CryEngine3中光照的美术提示 概述 在传统的二维美术资源中(如精灵与背景绘制),美术人员可以对最后的效果有很直接的控制.结果是可以交互的调整效果而不用管将来资源被应用到关卡中的什么地方它都是一 ...
- [翻译]CryEngine3中裁剪剔除解释
CryEngine3中裁剪剔除解释 概述 在3D渲染方面早期的裁剪主要是描述了各类物体(Objects ,drawcalls,Triangles和 Pixels)被剔除,不会显示到最终图像的.在渲染管 ...
- python怎么建立字典翻译_Python下字典创建的8种方法
Python下字典创建的几种方法记录 1.创建空字典 >>> info_dict = {} >>> print(type(info_dict)) 2.赋值直接生成 ...
- Image-based table recognition: data, model, and evaluation(纯翻译版本-下一篇将总结概括该文章)
一.PubTabNet是IBM公司公布的基于图像的表格识别数据集. 其包含了568k+表格图片,其标注数据是HTML的表格结构,下载压缩包磁盘存储大小10G+. GitHub相关地址 IBM的下载地址 ...
- (翻译)下拉刷新(Pull to refresh)
问题概述 用户想获得更多的内容,或是刷新当前在屏幕上显示的内容. 示例 用途 用于刷新或更新任意可更新的内容,例如列表.网格列表.按时间逆序排列的卡片集合(即卡片集合按时间先后顺序反向排列).例如 ...
- [翻译]windows下 连接到 bitnami的phpmyadmin
bitnami 因为安全考虑,只能 localhost 访问 phpmyadmin 为了能通过SSH 隧道访问 phpMyAdmin,你需要一个ssh 客户端.参考文章介绍使用中选择使用 PuTTY, ...
最新文章
- RecyclerView
- 远程下层文档 正在打印_奉贤金汇高速复印机出租一站式服务,上海区专业高速打印机出租...
- 外企面试官最爱提的10个问题
- mysql 记录所有操作_mysql 的一些记录的操作
- markdown写法
- Linux 的命令终端(CMD)的快捷键(Keyboard of MacBook)
- Flask-SQLAlchemy 中如何不区分大小写查询?
- 蓝桥杯java 大纲,2019 第十届蓝桥杯Java省赛B组个人总结
- cookie和session的区别及其原理
- PowerPC 汇编
- 高效记忆/形象记忆(08)110数字编码表 21-30
- python opencv双目测距_使用OpenCV/python进行双目测距
- flink 容错机制(检查点的保存、恢复、检查点算法、保存点、状态一致性的三种级别、end-to-end exactly-once)
- win10系统默认壁纸路径
- 淘宝数据魔方技术架构解析阅读心得
- Vivado使用系列:使用自定义BD
- 程序员菜谱3中粥做法
- python选手的最后得分_python戏说NBA--NBA近二十年得分王各项数据之最
- 如何查看IE浏览器版本?在线检测IE版本号
- 使用numpy数组索引方法获取指定行列位置的数值内容
热门文章
- 几种web报表打印方案的比较
- hbuilderx的快捷键整理pdf_47个电脑快捷键大全,让你工作提升100倍,一般人我不告诉他...
- Java多线程(七)——线程中断
- ArcGIS——图形转要素(标注转注记后发布服务问题)
- Cocos2d-html5 2.2.2的屏幕适配方案
- MFC三大dll使用总结
- vivo手机怎么投屏到电脑_小功能大用处!vivo手机的智慧投屏,轻松实现“跨屏显示”...
- 【自我救赎--牛客网Top101 4天刷题计划】 第三天 渐入佳境
- html color 转换,Color颜色转换的三种方式(c#)
- php 多级分成手机版,PHP 层级菜单数组处理,由一级数组转换为多级数组的递归实现...