【Unity-Shader】Unity60个内置Shader代码浅析(一)

UnityShader——基础篇之UnityShader基础 Unity Shader 是 Unity 为研发者提供的高层记得渲染抽象层,Unity 希望以这种方式来让开发者更加轻松的控制渲染,见下图:在 Unity 中,所有的 Unity Shader 都是使用 ShaderLab 来编写的ShaderLab 是 Unity 编写 Unity Shader 的一种说明性语言,它使用了一些嵌套在花括号内部的**语义&&(syntax。 阅读详情

Sunset虽然还没有正式开始工作,但已经有一点小忙了,总是感觉有好多好多不得不做的事,即使身心都有点疲倦。这次带来的是Unity内置的60个Shader代码的浅析的第一部分。往后会像制作ARPG那样陆续更新。
今天,在蛮牛群里,和几位同为学习者的群友进行了一番讨论,问题是,在游戏公司实习进行学习好还是自学好。个人认为,如果想要从事游戏开发相关方面的职业,首先提升自身能力以达到某一标准水平肯定是必需的。我相信,现今的许多怀有游戏梦想的大学生都会在不同时间以不同方式埋头苦干想方设法为了这个目标而努力。且不论哪一种方式更快,我认为:自学是人类自身能力的一种体现。从结果论出发,自学并不是为了讨论能够学的有多快,而是为了学的有多扎实,脑袋里面拥有多少的知识量。在进公司实习前,尽可能做到知识的完备,具有一定的项目经验,达到这个条件后进公司只需要进行团队之间的磨合和注意一些平时个人进行开发学习过程中可能没注意到的更加专业化的规定或者细节,远比进了公司之后不仅需要对自身能力进行提升,还需要跟团队磨合来得轻松。当然,每个人有每个人的想法,求同存异嘛。毕竟人与人之间所面对的环境与条件是不太一样,在某些地区,可能游戏公司较多,人才的需求度比较大,只需要拥有基础的能力就能正式入职或者进入实习,但对于sunset而言,由于游戏公司量小,规模也并非很大,所以往往精中求精,所以面试要求也比其他地区苛刻许多。sunset个人的想法是,完善自身能力后在进入公司实习,不仅是对自己负责,也是对团队负责,更是对能够给予自己机会进入这个行业的公司负责。所以,不管怎么样,先提升自身能力总是不错的选择。好了,废话有点多,接下来开始正题:
10个shader的名称:
(1)Alpha-Bumped Diffuse
(2)Alpha-Bumped Specular
(3)Alpha-Diffuse
(4)Alpha-Glossy
(5)Alpha-Parallax
(6)Alpha-ParallaxSpec
(7)AlphaTest-Bumped
(8)AlphaTest-BumpSpec
(9)AlphaTest-Diffuse
(10)AlphaTest-GLossy

(1)

Shader "Custom/Shader1" 
{
    //着色器的属性输入的声明,包含着主颜色,主纹理,法线贴图
    Properties
    {
        _Color("Main Color",Color) = (1,1,1,1)
        _MainTex("MainTexure Base(RGB) Trans(A)",2D) = "white"{}
        _BumpMap("Normal Map",2D) = "bump"{}
    }
    //一个子着色器,是一个表面着色器
    SubShader
    {
        Tags                                      //子着色器标签
        {
            "Queue" = "Transparent"               //队列标签,决定该着色器的渲染顺序
            "IgnoreProjector" = "True"            //忽视阴影为TRUE
            "RenderType" = "Transparent"          //渲染类型为“透明”
        }
        LOD 300                                   //LEVEL OF DETAIL 为300

        CGPROGRAM                             //CG程序段开始标志,下一句是表明是表面着色器,采用兰姆珀特光照模型,采用透明混合模式
        #pragma surface surf Lambert alpha

        sampler2D _MainTex;                   //根据主属性中的变量声明,在CG程序段中也要有相应的变量,这个为主纹理
        sampler2D _BumpMap;                   //法线贴图
        fixed4 _Color;                        //主颜色

        struct Input                          //输入结构
        {
            float2 uv_MainTex;                //主纹理
            float2 uv_BumpMap;                //法线贴图
        };

        void surf(Input IN, inout SurfaceOutput o)                          //Surface Function
        {
            fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;             //根据输入的主纹理和主颜色计算输出颜色
            o.Albedo = c.rgb;                                               //输出结构的反射率为输出颜色的RGB
            o.Alpha = c.a;                                                  //输出结构的透明值为输出颜色的透明值
            o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));        //根据主属性中输入的法线贴图计算输出结构的法线
        }

        ENDCG                                                               //CG程序段结束的标志
    }

    FallBack "Transparent/Diffuse"                                              //备用,使用漫反射着色器(另一个着色器)
}

(2)

Shader "Custom/Shader2" 
{
    //着色器主属性变量的声明,包含:主颜色,高光颜色,光泽度,主纹理,法线贴图
    Properties
    {
        _Color("Main Color", Color) = (1,1,1,1)
        _SpecColor("Specular Color", Color) = (1,1,1,1)
        _Shininess("Shininess", Range(0, 1)) = 0.078125
        _MainTex("Base(RGB Trans(A))", 2D) = "white"{}
        _BumpMap("Normal Map", 2D) = "bump"{}
    }
    //子着色器,是表面着色器
    SubShader
    {
        //子着色器标签:透明渲染队列, 忽视阴影为真, 渲染类型为透明 
        Tags
        {
            "Queue" = "Transparent"
            "IgnoreProjector" = "True"
            "RenderType" = "Transparent"
        }
        //LEVEL OF DETAIL 为400
        LOD 400
        //CG程序段开始得标志,表面着色器采用Blinn-Phong光照模型, 采用Alpha混合方式
        CGPROGRAM
        #pragma surface surf BlinnPhong alpha

        sampler2D _MainTex;
        sampler2D _BumpMap;
        fixed4 _Color;
        
Unity Shader-后处理:屏幕水波效果 一.简介 最近在打黑魂,被虐得死去活来,每次都是想砸电脑的节奏,然而还是忍不住想玩,唉。在被虐了千百遍之后,我发现写代码比玩游戏爽....下面步入正题,黑魂的传送技能之前会播放一个帅帅的屏幕特效-屏幕水波,从屏幕中间向四周扩散开来,很有赶脚。下面附上一张截图: 阅读详情

相关推荐

Unity 宏定义原理与Shader变体:5个内置宏优化渲染性能

本文深入解析Unity引擎中宏定义在Shader变体优化中的关键作用,详细介绍了5个内置宏(如UNITY_UV_STARTS_AT_TOP和UNITY_REVERSED_Z)的工作原理及实际应用。通过实战案例展示如何利用这些宏实现跨平台兼容性优化、包体精简和GPU指令级优化,显著提升渲染性能。

cuiji1279的博客 407

Unity Shader实现PPT 30多种切换效果

原github工程

yhx956058885的博客 4482

unity 陶瓷质感_Unity shader之金属质感衣服

1 Shader "qq/Cloth"2 {3 Properties4 {5 _MainTex ("Base (RGB)", 2D) = "white"{}6 _NormalMap("Normal Map", 2D) = "bump"{}7 _AlphaTex("Alpha", 2D) = "white"{}89 _SpecularC...

weixin_40001309的博客 861

Unity 自带shader 源码

Unity自带shader

Unity3D内置Shader源码与详解解释文档

包含Unity3D内置Shader源码, 以及这些源码的详解! 资源来网络收集,与大家分享一下

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2015

在昇腾910B上,用kubeadm快速拉起一个双节点K8s集群(保姆级避坑指南)

本文详细介绍了在昇腾910B服务器上使用kubeadm快速搭建双节点Kubernetes集群的完整流程,包括环境准备、容器运行时配置、kubeadm初始化、节点加入与网络插件部署等关键步骤,特别针对ARM架构和昇腾芯片提供了优化配置和避坑指南。

weixin_29204749的博客 247

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 514

在 dell precision 7920 tower CentOS 8 Stream 上安裝nvidia驱动程序、Anaconda

简单记录一下如何在实验室dell precision 7920 tower CentOS 8 Stream上安装nvidia显卡驱动。

chen9046的博客 995

VisionPro九点标定实战:从相机拍照到机器人精准抓取的完整流程

本文详细介绍了VisionPro九点标定技术在工业自动化中的应用,从相机拍照到机器人精准抓取的完整流程。通过硬件配置、标定步骤和实战技巧的解析,帮助工程师实现高精度视觉引导系统,提升生产效率。特别适合需要解决二维图像坐标与物理空间转换问题的自动化项目。

weixin_30664051的博客 407

[特殊字符] 从零构建携程/飞猪机票价格爬虫:Python异步抓取与反爬对抗实战

在出行决策、竞品分析、价格预测模型训练等场景中,稳定获取携程(Ctrip)和飞猪(Fliggy)的实时机票价格波动数据是刚需。然而,这两大平台均部署了业界顶尖的反爬体系——包括但不限于:动态请求签名(SignToken设备指纹采集(UACanvasWebGL接口参数加密(X-Sign_abtestcookie混淆)频率限制与 IP 封禁(滑动窗口 + 行为检测)目录前言:为什么需要自建机票价格爬虫?一、技术选型与项目架构1.1 核心技术栈1.2 系统架构图(文字描述)1.3 法律与道德声明。

2201_76125261的博客 340

Python与网络爬虫案例:电影评论抓取

接下来,我们就可以通过分析该页面中的HTML代码,来确定需要抓取的内容。在这段代码中,我们首先对每个评论div元素进行for循环,然后通过find方法获取class为'title'、'text'、'rating-other-user-rating'的元素,并将结果分别赋值给title、content和rating变量。在这段代码中,我们首先定义了目标网站的URL和headers信息,然后通过requests.get方法向目标网站发送了一个GET请求,并将返回的响应赋值给了response变量。

吃不胖. 1263

YOLO26全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1034

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 使用Unity3D编写ARPG游戏——角色属性的定义与实现(二)
下一篇: 【Unity】项目源码——简单2D空战游戏
sunsetv8
博客等级 码龄12年 118粉丝 8原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值