Unity3D中shader 轮廓描边效果实现代码
发布时间 - 2026-01-11 00:09:55 点击率:次Unity3D中shader 轮廓描边效果

想利用Unity3D中shader这个功能实现描边轮廓边框效果该怎么做呢,相信有很多搞开发的人想知道,为此下面就给大家介绍下方法。
Shade实现描边效果,如下图中的3D球效果图
Shade代码如下:
Shader "Outlined/Silhouetted Diffuse" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_OutlineColor ("Outline Color", Color) = (0,0,0,1) //改变这个能改变轮廓边的颜色
_Outline ("Outline width", Range (0.0, 0.03)) = 0.008 //改变这个能改变轮廓边的粗细
_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" = "Transparent" }
// note that a vertex shader is specified here but its using the one above
Pass {
Name "OUTLINE"
Tags { "LightMode" = "Always" }
Cull Off
ZWrite Off
ZTest Always
ColorMask RGB // alpha not used
// you can choose what kind of blending mode you want for the outline
Blend SrcAlpha OneMinusSrcAlpha // Normal
//Blend One One // Additive
//Blend One OneMinusDstColor // Soft Additive
//Blend DstColor Zero // Multiplicative
//Blend DstColor SrcColor // 2x Multiplicative
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
half4 frag(v2f i) :COLOR {
return i.color;
}
ENDCG
}
Pass {
Name "BASE"
ZWrite On
ZTest LEqual
Blend SrcAlpha OneMinusSrcAlpha
Material {
Diffuse [_Color]
Ambient [_Color]
}
Lighting On
SetTexture [_MainTex] {
ConstantColor [_Color]
Combine texture * constant
}
SetTexture [_MainTex] {
Combine previous * primary DOUBLE
}
}
}
SubShader {
Tags { "Queue" = "Transparent" }
Pass {
Name "OUTLINE"
Tags { "LightMode" = "Always" }
Cull Front
ZWrite Off
ZTest Always
ColorMask RGB
// you can choose what kind of blending mode you want for the outline
Blend SrcAlpha OneMinusSrcAlpha // Normal
//Blend One One // Additive
//Blend One OneMinusDstColor // Soft Additive
//Blend DstColor Zero // Multiplicative
//Blend DstColor SrcColor // 2x Multiplicative
CGPROGRAM
#pragma vertex vert
#pragma exclude_renderers gles xbox360 ps3
ENDCG
SetTexture [_MainTex] { combine primary }
}
Pass {
Name "BASE"
ZWrite On
ZTest LEqual
Blend SrcAlpha OneMinusSrcAlpha
Material {
Diffuse [_Color]
Ambient [_Color]
}
Lighting On
SetTexture [_MainTex] {
ConstantColor [_Color]
Combine texture * constant
}
SetTexture [_MainTex] {
Combine previous * primary DOUBLE
}
}
}
Fallback "Diffuse"
}
以上就是Unity3D中利用shader这个功能实现描边轮廓边框效果的方法,不会的话就直接那这串代码去尝试吧。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Unity3D中shader
# 轮廓描边效果
# Unity shader实现消融效果
# Unity shader实现自由放大缩小效果
# Unity Shader实现序列帧动画效果
# unity shader实现玻璃折射效果
# Unity Shader实现玻璃材质效果
# Unity Shader实现新手引导遮罩镂空效果
# Unity Shader实现描边OutLine效果
# Unity3D Shader实现贴图切换效果
# Unity shader实现遮罩效果
# 浅谈Unity中的Shader
# 的人
# 有很多
# 希望能
# 想知道
# 怎么做
# 谢谢大家
# 就给
# 图中
# vertex
# appdata
# POSITION
# NORMAL
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel集合Collection怎么用_Laravel集合常用函数详解
LinuxCD持续部署教程_自动发布与回滚机制
JavaScript常见的五种数组去重的方式
WordPress 子目录安装中正确处理脚本路径的完整指南
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
,怎么在广州志愿者网站注册?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
利用JavaScript实现拖拽改变元素大小
java中使用zxing批量生成二维码立牌
iOS中将个别页面强制横屏其他页面竖屏
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
怎么用AI帮你为初创公司进行市场定位分析?
非常酷的网站设计制作软件,酷培ai教育官方网站?
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
googleplay官方入口在哪里_Google Play官方商店快速入口指南
微信小程序 wx.uploadFile无法上传解决办法
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
详解jQuery中基本的动画方法
佛山网站制作系统,佛山企业变更地址网上办理步骤?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何在搬瓦工VPS快速搭建网站?
iOS UIView常见属性方法小结
香港服务器选型指南:免备案配置与高效建站方案解析
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Android滚轮选择时间控件使用详解
如何在IIS中配置站点IP、端口及主机头?
如何获取免费开源的自助建站系统源码?
大同网页,大同瑞慈医院官网?
如何在景安服务器上快速搭建个人网站?
js实现点击每个li节点,都弹出其文本值及修改
如何在宝塔面板中创建新站点?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
EditPlus中的正则表达式 实战(1)
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何快速生成橙子建站落地页链接?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel Session怎么存储_Laravel Session驱动配置详解
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
在Oracle关闭情况下如何修改spfile的参数
打造顶配客厅影院,这份100寸电视推荐名单请查收
如何在云服务器上快速搭建个人网站?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤

