Shader学习历程(三)——shaderlab中边缘光的不同实现
来源:互联网 发布:java string int 编辑:程序博客网 时间:2024/05/04 06:02
学习,由易到难。
Surface Shaders实现:
Shader "Custom/sahder1.1" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _Glossiness ("Smoothness", Range(0,1)) = 0.5 _Metallic ("Metallic", Range(0,1)) = 0.0 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; float3 worldNormal; float3 viewDir; }; half _Glossiness; half _Metallic; fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex, IN.uv_MainTex); o.Albedo = c.rgb; // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; fixed3 c1=_Color*(1.0 - saturate(dot (normalize(IN.viewDir), normalize(IN.worldNormal)))); o.Emission =c1 ; } ENDCG } FallBack "Diffuse"}
Vertex and Fragment Shaders实现
Shader "Custom/shader1.2" { properties { _mainTex("mainTex",2D)="white"{} _Color("Color",Color)=(1,1,0,0.5) } subshader { pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _Color; sampler2D _mainTex; struct v2f { float4 pos: SV_POSITION; float2 uv:TEXCOOD0; float4 p1:TEXCOOD1; float4 p2:TEXCOOD2; }; v2f vert(appdata_base v) { v2f o; o.pos=mul(UNITY_MATRIX_MVP,v.vertex); o.p1=mul(_Object2World,v.vertex); o.p2=mul( _World2Object,v.normal ); o.uv=v.texcoord; return o; } half4 frag(v2f i):COLOR{ half4 c=tex2D(_mainTex,i.uv); float3 viewDir=_WorldSpaceCameraPos-i.p1; fixed3 c1=_Color*(1-saturate(dot (normalize(viewDir), normalize(i.p2)))); half4 c2=half4(c1,0.5); c+=c2; return c; } ENDCG } } }
1 0
- Shader学习历程(三)——shaderlab中边缘光的不同实现
- Shader编程学习笔记(四)—— Unity Shader的组织形式(ShaderLab)
- Shader编程学习笔记(四)—— Unity Shader的组织形式(ShaderLab)
- Shader编程学习笔记(四)—— Unity Shader的组织形式(ShaderLab)
- Shader编程学习笔记(四)—— Unity Shader的组织形式(ShaderLab)
- unity shader学习笔记(三)——在Unity中计算高光反射光照
- Unity3D Shader(11)——fragment shader(边缘泛光)
- Unity ShaderLab(二) 支持透明的边缘发光Shader
- Shader 学习历程(一)——第一个shader
- shader 边缘泛光
- Shader特效——“Canny边缘检测”的实现 【GLSL】
- shader 边缘泛光2
- Shader学习历程(二)——GPU渲染过程
- unity shader学习笔记(十一)——Unity中的透明效果之ShaderLab中的混合命令
- Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
- Shader学习历程(五)——Sprite Shader之简单抠图
- Unity Shader入门精要笔记(十):Unity 的基础光照——高光反射的实现
- 边缘高光实现
- hdu 2639 Bone Collector II(01背包求第k优解)
- [Django模板系统]Django的模板渲染(render)机制
- Sublime Text 3 运行Python控制台不能输出中文的解决方法
- FZU - 2082 过路费(树剖)
- 简单使用JMF调用摄像头
- Shader学习历程(三)——shaderlab中边缘光的不同实现
- AES
- 用BBED理解和修改Oracle数据块
- 1040_有几个PAT
- Android学习基本索引(二)——记录,没事自己看
- 堆排序一
- java 对象 (树) 的转换 (目录) JSON 节点。
- LightOJ - 1348 Aladdin and the Return Journey(树剖)
- js基础