shader练习-vertphone
Shader "VertPhone"
{
Properties
{
_MainTex( "颜色贴图", 2D ) = "white"{}
_Specular( "高光颜色", Color) = (1, 1, 1, 1)
_Gloss( "光泽度", Range(1,10)) = 4
_SpecularPow( "高光强度", Range(0,1)) = 1
} SubShader{
Tags{ "RenderType" = "Opaque"}
Pass{
Tags{ "LightMode" = "ForwardBase" } CGPROGRAM #pragma vertex vert
#pragma fragment frag #pragma multi_compile_fwdbase
#pragma multi_compile_fog
#include "UnityCG.cginc"
#include "Lighting.cginc" uniform sampler2D _MainTex;
uniform fixed4 _Specular;
uniform half _Gloss;
uniform half _SpecularPow; struct v2f{
half4 pos :SV_POSITION;
half3 worldPos : TEXCOORD0;
half2 uv :TEXCOORD1;
half3 normalWorld:TEXCOORD2;
UNITY_FOG_COORDS(3)
}; v2f vert( appdata_full v)
{
v2f o;
o.pos = UnityObjectToClipPos( v.vertex );
o.worldPos = mul( unity_ObjectToWorld, v.vertex).xyz;
o.uv = v.texcoord;
o.normalWorld = normalize( mul( unity_ObjectToWorld, v.normal) );
UNITY_TRANSFER_FOG(o,o.pos);
return o;
} fixed4 frag( v2f i):SV_Target
{
fixed4 basecolor = tex2D(_MainTex, i.uv);
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT * basecolor;
half3 lightdir = normalize( _WorldSpaceLightPos0.xyz );
fixed3 diffuse = saturate( dot( normalize( i.normalWorld ) , lightdir ) )* _LightColor0.rgb * basecolor;
half3 r = normalize( reflect( -lightdir, i.normalWorld ) );
half3 view = normalize( _WorldSpaceCameraPos.xyz-i.worldPos.xyz );
fixed3 specular = _SpecularPow * _LightColor0.rgb * _Specular * pow( max(0, dot( r, view )), _Gloss );
fixed4 c = fixed4( ambient + diffuse + specular, 1.0);
UNITY_APPLY_FOG(i.fogCoord, c);
return c;
}
ENDCG
}
} }

shader练习-vertphone的更多相关文章
- OpenGL shader 中关于顶点坐标值的思考
今天工作中需要做一个事情: 在shader内部做一些空间距离上的计算,而且需要对所有的点进行计算,符合条件的显示,不符合条件的点不显示. 思路很简单,在vertex shader内知道顶点坐标,进行计 ...
- CSharpGL(14)用geometry shader渲染模型的法线(normal)
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(14)用geometry shader渲染模型的法线(normal) +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 ...
- 【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shade ...
- 【译】Unity3D Shader 新手教程(5/6) —— Bumped Diffuse Shader
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你满足以下条件,我建议你阅读这篇教程: 你想学习片段着色器(Fragment Shader). 你想实现 ...
- 【译】Unity3D Shader 新手教程(4/6) —— 卡通shader(入门版)
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 暗黑系 动机 如果你满足以下条件,我建议你阅读这篇教程: 你想了解更多有关表面着色器的细节知识. 你想实现一个入门 ...
- 【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 如果你满足以下条件,我建议你阅读这篇教程: 你想知道如何在表面着色器中进行混色(blend colour) 你想实 ...
- 【译】Unity3D Shader 新手教程(2/6) —— 积雪Shader
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 如果你是一个shader编程的新手,并且你想学到下面这些酷炫的技术,我觉得你可以看看这篇教程: 实现一个积雪效果的 ...
- 【译】Unity3D Shader 新手教程(1/6)
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...
- 多材质(Shader)实现
最近在cocos creator上打算写个U3D中shader功能的插件(能在属性面板调整shader属性). 对其中一个功能有点疑惑,就是U3D中一个渲染物体上可以挂多个材质,后来查询了下,一个物体 ...
随机推荐
- PCIe to AXI Translation——PCIe 内存空间到AXI内存空间的转换
PCIe to AXI Translation——PCIe 内存空间到AXI内存空间的转换 UltraScale系列芯片包含PCIe的Gen3 Integrated Block IP核在内的多种不同功 ...
- 0047 Spring的AOP入门基础--切面组件--通知--切入点
AOP的全称是Aspect Oriented Programming,面向切面编程. 切面是什么呢,就是一个Java类.之所以叫切面,就是说在调用其他一些类的方法的某个时候(之前,之后,抛异常等),调 ...
- 0045 Spring中使用DataSourceTransactionManager进行事务管理的xml配置
在一个业务的实现过程中,可能需要多条sql完成对数据库的操作,比如账户登录,需要匹配用户名和密码,然后要增加积分,还要记录登录的ip和时间,这可能需要三个sql语句,这三个语句应当是一个整体,任意一个 ...
- ORACLE建立物化视图
--使用 on commit 的方式建立物化视图 create materialized view emp_dept refresh on commit as select t.*,d.dname f ...
- nodejs系列笔记01---Buffer
纯JavaScript无法处理二进制数据,buffer就是用来处理二进制数据的 原始数据保存在buffer实例中,一个buffer实例类似于数组.buffer的大小在建立时指定的不可更改. buffe ...
- [Win10应用开发] 使用 Windows 推送服务
前言 Windows 推送服务(WNS)也是 Win10 通知机制中的一种,今天与大家一起学习一下有关WNS的相关知识.使用 Windows 推送服务的前提是你需要有一个微软开发者账号,这样才能得到一 ...
- Android中TextView和EditView经常使用属性设置
Android开发中最经常使用的几乎相同就是TextView和EditView了,在使用它时.我们也会设置它的一些属性,为了让我们设计的更好看,设置的更合理.这里记下它的经常使用属性,方便后期查阅. ...
- Torch-RNN运行过程中的坑 [1](读取Lua非空table,size为0)
0.踩坑背景 执行Torch-RNN的时候,在LanguageModel.lua中的encode_string函数中,对start_text的各个character进行id映射编码,实现功能类似“北京 ...
- MATLAB中的文件类型总结
% ***.m文件 : 脚本文件或者函数文件或者:% ***.mat文件:数据存储文件(二进制文件,可以ASCII码形式保存和加载,% 类似于单行EXCEL表格) ...
- js判断css动画效果是否结束
<!-- css样式 --> <style> .test{ width: 100px; height: 100px; transition: all 5s; backgroun ...