自发光效果(控制自发光的颜色、强度,呼吸光可选)
来源:互联网 发布:网络运营部组织架构 编辑:程序博客网 时间:2024/04/28 03:23
通过一个贴图控制自发光的颜色,一个控制自发光主色调的颜色(注意此处mask直接用rgb格式即可,不需要阿尔法通道控制发光程度,因为颜色自带一个亮度的属性)
_EmissionMask (“Emission Mask”, 2D) = “white” {}
_EmissionColor (“Emission Color”, Color) = (1, 1, 1, 1)
_EmissionColorScale (“Emission Color Scale”, Range(0, 0.5)) = 0
sampler2D _EmissionMask;
fixed4 _EmissionColor;
float _EmissionColorScale;
fixed3 emissionMaskColor = lerp(tex2D(_EmissionMask, i.uv).rgb, _EmissionColor.rgb, _EmissionColorScale);
fixed3 emission = lerp(albedo, emissionMaskColor, emissionScale);
fixed3 finalRGB = ambient + diffuse + specular + emission;
return fixed4(finalRGB, finalA);
呼吸光v:增加控制自发光变化的三角函数 包含频率参数和振幅参数
_EmissionTimeFrequency(“Emission Time Frequency”,Float) =1.0
_EmissionAreaScale (“Emission Area Scale”,Range(0,5)) = 1.0
float _EmissionTimeFrequency;
float _EmissionAreaScale;
struct v2f {
float4 pos : SV_POSITION;
float3 uv : TEXCOORD0;
^}
o.uv.z = (sin(_Time.w * _EmissionTimeFrequency) + 1)_EmissionAreaScale 0.5;
fixed3 emission = lerp(albedo, emissionMaskColor*i.uv.z, emissionScale);
要下拉列表选择是否用呼吸光,用到枚举
[KeywordEnum(Enable, Disable)] _Breathe (“Enable Breathe”, Float) = 1,#pragma multi_compile _BREATHE_ENABLE _BREATHE_DISABLE,#if _BREATHE_ENABLE
float scale;
#endif,#if _BREATHE_ENABLE
o.scale = (sin(_Time.w * _EmissionBreTimeFrequency) + 1)_EmissionBreAreaScale 0.5;
#endif, #if _BREATHE_ENABLE
float scale = (sin(_Time.w * _EmissionBreTimeFrequency) + 1)_EmissionBreAreaScale 0.5;
o.Emission = emissionMaskColor * _EmissionScale * IN.scale;
#else
o.Emission = emissionMaskColor * _EmissionScale;
#endif
看到博客也能用shader_feature表示toggle,但在用AssetsBundle打包的时候会出现只有某种情况有定义,另一种情况没有定义,还是用上面的。用法如下:[Toggle(ENABLE_BREATHE)] _Breather (“Enable Breather”, Float) = 0,
//#pragma shader_feature ENABLE_BREATHE
//#if defined(ENABLE_BREATHE)
// float scale;
//#endif
//#if _BREATHE_ENABLE
// o.Emission = emissionMaskColor * _EmissionScale * IN.scale;
//#elif _BREATHE_DISABLE
// o.Emission = emissionMaskColor * _EmissionScale;
//#endif
用顶点shader会出现一系列问题:
不接收lightmap,不接收雾,场景光为mix的时候、烘焙后还能接收实时光。如果用surface shader写,这些问题都会迎刃而解.surface shader也分应用到顶点和顶点到像素,vert函数和frag函数,Input, SurfaceOutput,appdatafull等结构。
- 自发光效果(控制自发光的颜色、强度,呼吸光可选)
- 实现物体自发光效果
- unity文本自发光效果
- Unity3D Glow Effect 自发光 颜色溢出效果
- Unity之自发光Emission效果
- unity自发光透明shader
- unity自发光透明shader
- unity动态改变自发光
- Unity添加自发光材质
- shader实例(四)物体描边【自发光】
- 光照与渲染(十)- 自发光材质
- 马自达/MAZDA自发光仪表盘改装教学
- shader实例:物体描边自发光
- 【ShaderForge】自发光漫反射小练习
- Unity3d 4.x 自发光材质
- Unity 游戏开发技巧集锦之创建自发光材质
- Unity自发光材质制作——做游戏里的液晶显示屏,荧光对象可以用到
- Unity3d Shader(三) Pass(Texturing)混合纹理(同时显示2张图),自发光
- 布局 Layout
- Android 判断ImageView使用的图片是drawable文件夹下的某个图片
- JAVA中的反射机制
- C.就来谈谈深搜与广搜
- react-native中的下拉刷新实现
- 自发光效果(控制自发光的颜色、强度,呼吸光可选)
- C# 委托
- SimpleDateFormat转换时间12,24时间格式
- 使用Redis SETNX 命令实现分布式锁
- RDD 基础操作
- 51单片机实现LED的PWM效果
- Pattern matcher showMethods
- 图形类的派生与继承(求面积与求周长)
- TensorFlow 初学者在使用过程中可能遇到的问题及解决办法