-
Shader编程思路来源浅墨大牛,思维记录用。
-
今天我们开始写第一个demo,用于两个纹理的混合,用到素材为大热绝地求生demo,自带material失效,我们试着做出理想Shader。
1.两个纹理的混合
怎么样是不是耳目一新的感觉,当然了一共有四种贴图,我们后续慢慢优化。
代码实现如下
Shader “0_FirstShader”
{
Properties
{
_MainTex(“主纹理”, 2D) = “white”{}
_BlendTex(“混合纹理”, 2D) = “white”{}
}
SubShader
{
Pass
{
SetTexture[“_MainTex”]{combine texture}
SetTexture[“_BlendTex”]{combine texture *previous}
}
}
}
2.纹理和颜色的混合
Shader "Sony/0_FirstShader"
{
Properties
{
_MainTex("主纹理", 2D) = "white"{}
_BlendTex("副纹理", 2D) = "white"{}
_MainColor("主颜色,可调节", Color) = (1, 1, 1, 1)
}
SubShader
{
Pass
{
SetTexture[_MainTex]
{
constantColor[_MainColor]
combineconstant * texture
}
SetTexture[_BlendTex]
{
combinetexture * previous
}
}
}
FallBack"Diffuse"
}
修改颜色界面
衣服纹理还在,但是多了一层骚红
那么还有第二种写法就是在Material定义材质颜色,渲染中设置渲染
Shader "Sony/0_FirstShader"
{
Properties
{
_MainTex("主纹理", 2D) = "white"{}
_BlendTex("副纹理", 2D) = "white"{}
_MainColor("主颜色,可调节", Color) = (1, 1, 1, 1)
}
SubShader
{
Material
{
//漫反射颜色
Diffuse[_MainColor]
}
Pass
{
SetTexture[_BlendTex]
{
combinetexture * previous
}
SetTexture[_MainTex]{Combine previous * primary}
}
}
FallBack"Diffuse"
}
纹理与各种光效(高光,自发光,主颜色)的混合
Shader "Sony/0_FirstShader"
{
Properties
{
_MainTex("主纹理", 2D) = "white"{}
_BlendTex("副纹理", 2D) = "white"{}
_MainColor("主颜色,可调节", Color) = (1, 1, 1, 1)
_EveColor("环境光", Color) = (1, 1, 1, 1)
_SpeColor("反射高光", Color) = (1, 1, 1, 1)
_ShineNum("反射光泽程度", Range(0, 1)) = 0.5
_EmissionColor("自发光颜色", Color) = (1, 1, 1, 1)
}
SubShader
{
Material
{
//漫反射颜色
Diffuse[_MainColor]
//环境光照射颜色
Ambient[_EveColor]
//反射高光
Specular[_SpeColor]
//反射光泽程度
Shininess[_ShineNum]
//自发光颜色
Emission[_EmissionColor]
}
Pass
{
LightingOn
SeparateSpecularOn
SetTexture[_MainTex]{combinetexture}
SetTexture[_BlendTex]{combinetexture * previous}
SetTexture[_MainTex]{Combine previous * primary}
}
}
FallBack"Diffuse"
}
最终对比效果