<Shader>透明效果+纹理融合 vertex和fragment
来源:互联网 发布:java程序员太多了知乎 编辑:程序博客网 时间:2024/06/08 09:05
shader "Custom/VertexFragment003"{Properties{_MainColor("Main Color:",color) = (1,1,1,1)_MainTexture("Main Texture",2d) = "white" {}_SpecularColor("Specular Color:",color) = (1,1,1,1)_SpecularShininess("shininess Range",range(0,100)) = 10}SubShader{pass{Tags{ "LightMode" = "ForwardBase" }CGPROGRAM#pragma vertex vert#pragma fragment fragfloat4 _LightColor0;float4 _MainColor;float4 _SpecularColor;sampler2D _MainTexture;float _SpecularShininess;//顶点输入的信息struct appData{float4 vertex:POSITION;//顶点的坐标float3 normal:NORMAL;//顶点的法向量float2 texcoord:TEXCOORD0;//一级纹理UV坐标};//顶点着色器输出的结构struct v2f{float4 pos:SV_POSITION; //顶点像素的位置float3 normal:NORMAL;//顶点法线的位置float2 texure0:TEXCOORD0; //一级纹理的坐标float4 worldPos:TEXCOORD1;//在世界坐标中的位置};v2f vert(appData IN){v2f OUT;OUT.pos = mul(UNITY_MATRIX_MVP,IN.vertex); //mvp的坐标OUT.normal = mul(float4(IN.normal,0.0),unity_ObjectToWorld).xyz;OUT.worldPos = mul(unity_ObjectToWorld,IN.vertex); OUT.texure0 = IN.texcoord; //输出的纹理就等于输入的纹理return OUT;}float4 frag(v2f IN):COLOR{float4 textColor = tex2D(_MainTexture,IN.texure0);//计算diffuse = MainColor * LightColor * max(0,dot(N,L))float3 normalDirection = normalize(IN.normal);float3 lightDiretion = normalize(_WorldSpaceLightPos0.xyz);float3 viewDirection = normalize(_WorldSpaceCameraPos - IN.worldPos.xyz);float3 diffuseColor;//计算出 diffuse = maincolor * lightColor * max(0,dot(N,L))float3 specularColor; //specula = mainColor * specularColor * pow( max(0,dot(r,v)),shininess ) R = reflet(-N,L)if (dot(normalDirection,lightDiretion) < 0.0){diffuseColor = float3(0,0,0);}else{diffuseColor = _MainColor.rgb * _LightColor0.rgb * max(0,dot(normalDirection,lightDiretion)); }float3 reflectDirection = reflect(-normalDirection,lightDiretion);specularColor = _MainColor * _SpecularColor * pow(max(0,dot(reflectDirection,viewDirection)),_SpecularShininess);float4 finalColor = float4(diffuseColor,1.0) + float4(specularColor,1.0) + UNITY_LIGHTMODEL_AMBIENT;//将漫反射 镜面反射 环境光 乘以纹理的颜色值 极为最终的颜色值。return finalColor * textColor;}ENDCG}}FallBack "Diffuse"}
阅读全文
0 0
- <Shader>透明效果+纹理融合 vertex和fragment
- Shader 透明效果+纹理融合Code
- shader学习之基础纹理透明效果
- Vertex and Fragment Shader
- Vertex & Fragment Shader入门
- vertex and fragment shader
- 【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明
- Vertex and fragment shader examples
- Shader第三讲 Vertex&Fragment Shader
- Unity Shader 顶点和片段着色器(Vertex and Fragment Shader)
- Unity 中用 Vertex & Fragment Shader 实现 surface shader 中的 Diffuse 和 Decal
- shader 2: vertex, fragment, surf的区别
- 【Unity Shaders】Vertex & Fragment Shader入门
- LIGHTING IN VERTEX AND FRAGMENT SHADER
- Shader 基础使用(三) ----- vertex & fragment
- Unity3D Shader(14)——Fragment Shader(遮挡、透明效果)
- UNITY3D shader学习心得<三> Vertex and Fragment Shader
- vertex shader的输出、被插值后变成fragment shader的输入
- Kotlin Primer·第五章·函数与闭包
- 取出字符串中的连续数字并把数字乘以10再返回新的字符串--js中replace的回调函数详解
- SSH无密码登录
- 子集生成+stl全排列
- 中科院大牛博士是如何进行文献检索和阅读
- <Shader>透明效果+纹理融合 vertex和fragment
- codeforces 798C
- Activity工作流(1)-三分钟了解工作流
- v-text
- 2015第六届蓝桥杯决赛_积分之谜
- maven 将项目打成jar包加入依赖包
- 关于ace 里提示框插件bootbox的使用
- bzoj 1078 [SCOI2008]斜堆
- 16、32、64位编译器基本数据字节数