UnityShader之毛绒绒效果
来源:互联网 发布:邮储银行网络培训学员 编辑:程序博客网 时间:2024/06/10 23:34
今天要做一个毛球的效果
核心的算法通过多个pass,从里到外一层一层的糊上一层透明diffuse,越靠外面的地方层次越少看起来越稀疏,越模糊
FurHelper.cginc
struct v2f {float4 pos : SV_POSITION;half2 uv : TEXCOORD0;half2 uv1 : TEXCOORD1;fixed4 diff : COLOR;};float _FurLength;sampler2D _MainTex;float4 _MainTex_ST;sampler2D _FurTex;float4 _FurTex_ST;float _Blur;v2f vert(appdata_base v) {v2f o;v.vertex.xyz += v.normal * _FurLength * FURSTEP;o.pos = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);o.uv1 = TRANSFORM_TEX(v.texcoord, _FurTex);float3 worldNormal = normalize(mul(v.normal, (float3x3) unity_WorldToObject));o.diff = LambertDiffuse(worldNormal);o.diff.a = 1 - (FURSTEP * FURSTEP);float4 worldPos = mul(unity_ObjectToWorld ,v.vertex);o.diff.a += dot(normalize(_WorldSpaceCameraPos.xyz- v.vertex), worldNormal) - _Blur;return o;}float _CutOff;float _Thickness;fixed4 frag(v2f i) : SV_Target {fixed4 col = tex2D(_MainTex, i.uv);fixed alpha = tex2D(_FurTex, i.uv1).r;col *= i.diff;col.a *= step(lerp(_CutOff, _CutOff + _Thickness, FURSTEP), alpha);return col;}FurShader.shader
Shader "Custom/FurShader"{Properties{_MainTex("Texture", 2D) = "white" {}_FurTex("Fur pattern", 2D) = "white" {}_Diffuse("Diffuse value", Range(0, 3)) = 1_FurLength("Fur length", Range(0.0, 1)) = 0.5_CutOff("Alpha cutoff", Range(0, 1)) = 0.5_Blur("Blur", Range(0, 1)) = 0.5_Thickness("Thickness", Range(0, 0.5)) = 0}CGINCLUDEfixed _Diffuse;inline fixed4 LambertDiffuse(float3 worldNormal){float3 lightDir = normalize(_WorldSpaceLightPos0.xyz);float NdotL = max(0.2, dot(worldNormal, lightDir));return NdotL* _Diffuse;}ENDCGSubShader{Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" "LightMode" = "ForwardBase" }ZWrite OffBlend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.05#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.10#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.15#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.20#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.25#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.30#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.35#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.40#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.45#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.50#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.55#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.60#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.65#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.70#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.75#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.80#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.85#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.90#include "FurHelper.cginc"ENDCG}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#define FURSTEP 0.95#include "FurHelper.cginc"ENDCG}}}
阅读全文
0 0
- UnityShader之毛绒绒效果
- unityShader之遮挡透明效果
- [Shader] UnityShader系列---灰白效果
- UnityShader太空中的大气层效果
- unityShader热空气扭曲效果
- unityShader物体表面流光效果
- UnityShader之光照1
- 【UnityShader】之灯光组件
- UnityShader之OutLine
- unityshader之surfaceshader
- unityShader之向量
- UnityShader
- 【UnityShader】屏幕空间全息扫描效果
- UnityShader之创建动态纹理
- UnityShader之空间变换解析
- unityshader学习笔记之shaderlab
- UnityShader屏幕特效之Bloom
- unityShader之CG标准函数库
- Android4.4蓝牙耳机HFP流程分析-3
- Camera和Camera2的应用
- sublime Text 3配置
- Druid Spring Boot Starter数据库链接池新福利
- 百家争鸣:Android开源框架排行榜
- UnityShader之毛绒绒效果
- codeforces820B Mister B and Angle in Polygon
- Java深度拷贝对象
- 二叉树、树、森林之间的转化
- MySQL主从复制实现基于日志点的复制
- 一篇不错的面试文章
- Android常用开源项目(三十五)
- 计算机网络 —— URI和URL
- vivo和OPPO手机刷机