Shader "Outlined/Diffuse" {
Properties { _Color ("Main Color", Color) = (.5,.5,.5,1) _OutlineColor ("Outline Color", Color) = (0,0,0,1) _Outline ("Outline width", Range (.002, 0.03)) = .005 _MainTex ("Base (RGB)", 2D) = "white" { } } CGINCLUDE #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 pos : POSITION; float4 color : COLOR; }; uniform float _Outline; uniform float4 _OutlineColor; v2f vert(appdata v) { // just make a copy of incoming vertex data but scaled according to normal direction v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); float2 offset = TransformViewToProjection(norm.xy); o.pos.xy += offset * o.pos.z * _Outline; o.color = _OutlineColor; return o; } ENDCG SubShader { //Tags {"Queue" = "Overlay" } CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG // note that a vertex shader is specified here but its using the one above Pass { Name "OUTLINE" Tags { "LightMode" = "Always" "Queue" = "Overlay" } Cull Front ZWrite On ZTest LEqual ColorMask RGB Blend SrcAlpha OneMinu***cAlpha Offset 15,15 CGPROGRAM #pragma vertex vert #pragma fragment frag half4 frag(v2f i) :COLOR { return i.color; } ENDCG } } SubShader { Tags {"Queue" = "Overlay" } CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Front ZWrite On ColorMask RGB Blend SrcAlpha OneMinu***cAlpha CGPROGRAM #pragma vertex vert #pragma exclude_renderers gles xbox360 ps3 ENDCG SetTexture [_MainTex] { combine primary } } } Fallback "Diffuse" }
模型描边效果Shader
发布日期:2021-06-24 19:05:08
浏览次数:3
分类:技术文章
本文共 2046 字,大约阅读时间需要 6 分钟。
转载于:https://blog.51cto.com/unitysky/1639724
转载地址:https://blog.csdn.net/weixin_34248258/article/details/93067685 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月08日 06时17分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
eclipse中在类saolei.Test 中找不到main方法
2019-04-28
安卓车机没有ADB调试,任意安装第三方软件教程
2019-04-28
某小型校园网规划与设计要点(课程报告)
2019-04-28
前端页面通过web3.eth.accounts无法获取账户信息
2019-04-28
解决 invalid input detected at ‘^’ marker的问题
2019-04-28
用C语言实现津巴布韦这道算法题?
2019-04-28
有什么好一点的方法读jdk源码吗?
2019-04-28
javaScript学习笔记之比较运算符||逻辑运算符||条件运算符(三目运算符)
2019-04-28
java学习笔记之条件语句(if...else)
2019-04-28
javaScript学习笔记之break 和 continue 语句对比
2019-04-28
JSP项目打开不通的查看详情页动画是放大状态的解决办法
2019-04-28
单点登陆的三种实现方式
2019-04-28
你也在你的应用上添加B站上的弹幕效果
2019-04-28
javaScript学习笔记之类型转换
2019-04-28
CMD启动mysql服务“发生系统错误 5”的解决办法
2019-04-28
CSDN博客专家申请的条件及规则
2019-04-28
CSS系列讲解-总目录
2019-04-28
孙叫兽进阶之路之Gitlab的使用(图文教程)
2019-04-28