好久没更了。苦战一周,总算捅咕出点能看的了,赶紧总结,免得以后忘了~~代码还是有点乱套,关于最主要的饿地方,切线空间还是有点蒙圈,得抓紧补基础渲染,底层的东西,要不真的让人头大,废话少说,入正题:
这次是参考unity官网的铁匠的头发shader的高光反射部分,和unity的软化边缘的部分。因为是Gama渲染,好多参数都是用If判断的,小白~看不懂。。。只能一个一个试,看看运行的是哪部分,提取出来,修改,和自己的代码融合。
小爆一下弊端,关于接受阴影的部分还没编写,(有点写不下去了,以后来补坑吧)。
^ 夸张颜色之后的为了更好体现三层高光,X控制主要高光颜色强度和范围,Y控制次高光,Z控制高光贴图的强度。
用flowmap打乱了一下,在加上法线本身的打乱,在加上OCC贴图,再加上高光贴图本身就是断断续续的,模拟出头发一丝一丝 的高光反射。
^软化边缘的效果,因为透明的渲染深度写入的问题。。一共用了3个Pass,来实现这种软化边缘的效果
第一个pass:开启深度写入的透明通道剔除
第二个pass:加阴影
第三个pass:透明的渲染,不过用的是clip(-(col.a-cutoff)),用来和第一个pass打配合~
(前面说过了,代码并不“完整”,有待狠狠的改善,这里没有base和add部分,还有很多浪费的资源)
原谅还不太会复用拆分,并且。。脑子有点反应不过来,全堆一页里面啦,(哈哈,坑慢慢填,以后再说吧)
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "ABigDeal/softHair"
{
Properties{
_Color("Texture 1 Color", Color) = (1, 1, 1, 1)
_Cutoff("Base Alpha cutoff", Range(0,.9)) = .5
// _Blend("Blend", Range(0, 1)) = 0
_Texture1("Texture 1", 2D) = ""
//_ColorA("Texture 1 Color", Color) = (1, 1, 1, 1)
// _Texture2("Texture 2", 2D) = ""
//_ColorB("Texture 2 Color", Color) = (1, 1, 1, 1)
_Normal("Normal Map", 2D) = "bump" {}
_NormalScale("Normal Scale", Float) = 1.0
_SpecGlossMap("Specular", 2D) = "white" {}
_Specular("Specular",Color)=(1,1,1,1)
_Gloss("Gloss",Range(0,1))=20
_OcclusionMap("OcclusionMap", 2D) = "white" {}
KK //
_KKFlowMap("FlowMap", 2D) = "white" {}
//反射平滑
_KKSmoot("Reflective Smoothness", Range(0.0, 1.0)) = 0.5
//反射最大值
_KKScale("Reflective Gray Scale", Range(0.0, 48.0)) = 5.0
//主高光颜色
_KKColorA("Primary Specular Color", Color) = (1.0, 1.0, 1.0)
//主高光指数(程度)
_KKScaleA("Primary Exponent", Range(1.0, 192.0)) = 64.0
//主根位置
_KKShiftA("Primary Root Shift", Range(-20.0, 20.0)) = 0.275
//次高光颜色
_KKColorB("Secondary Specular Color", Color) = (1.0, 1.0, 1.0)
//次高光指数
_KKScaleB("Secondary Exponent", Range(1.