Unity3D Shader官方教程翻译(六)----Shader语法:Pass的Color, Material, Lighting

Unity内置管线迁移URP实战指南:从Shader到后处理的完整方案 在游戏开发中,渲染管线是决定图形表现与性能的核心架构。Unity内置渲染管线因其历史原因,在支持现代图形API与渲染特性上逐渐显现局限。可编程渲染管线(SRP)的出现,允许开发者更灵活地控制渲染流程,从而优化性能并实现定制化效果。其技术价值在于能够更好地利用GPU硬件,支持Vulkan、Metal等现代图形API,并为复杂的光照、后处理效果提供高效实现。通用渲染管线(URP)作为SRP的轻量级实现,平衡了性能与功能,已成为Unity跨平台项目的推荐选择。在手游、独立游戏及中小型商业项目中,URP能显著提升渲 阅读详情

ShaderLab syntax: Color, Material, Lighting

ShaderLab 语法:颜色,材质,光照

The material and lighting parameters are used to control the built-in vertex lighting. Vertex lighting is the standard Direct3D/OpenGL lighting model that is computed for each vertex. Lighting on turns it on. Lighting is affected by Material block, ColorMaterial and SeparateSpecular commands.

材质和照明参数是用来控制内置的顶点光照。顶点光照是Direct3D/OpenGL的标准照明模型,它计算每一个顶点。Lighting on命令打开它。光照受Material block,ColorMaterial和SeparateSpecular命令影响

Per-pixel lights are usually implemented with custom vertex/fragment programs and don't use vertex lighting. For these you don't use any of the commands described here, instead you define your own vertex and fragment programs where you do all lighting, texturing and anything else yourself.

逐像素光照 通常是实现自定义的顶点/片断程序,它不使用顶点照明。这篇文章中描述的任何命令都不会用来操作逐像素光照,你可以通过自己定义的顶点和片段编程来实现这个效果。

点击浏览下一页

Vertex Coloring & Lighting is the first effect to gets calculated for any rendered geometry. It operates on the vertex level, and calculates the base color that is used before textures are applied.

当渲染任何几何图形时候,顶点颜色和光照是第1个被计算的效果。在纹理应用之前,它首先操作顶点层级,然后计算基础颜色。

Syntax 句法

The top level commands control whether to use fixed function lighting or not, and some configuration options. The main setup is in the Material Block, detailed further below.

顶层命令控制是否使用固定功能照明,以及一些配置选项。主要在Material Block中设置,详见下文。

Color Color 颜色

Sets the object to a solid color. A color is either four RGBA values in parenthesis, or a color property name in square brackets.
设置对象纯色。可以是一种RGBA颜色值(在括号中的),或颜色属性的名称(在方括号中的)。
 
Material {  Material Block  }  材质
The Material block is used to define the material properties of the object.
材质块是用来定义对象的材质性能
 
Lighting On | Off 灯光开关
For the settings defined in the Material block to have any effect, you must enable Lighting with the  Lighting On command. If lighting is off instead, the color is taken straight from the  Color command.
为了使在材质块中定义的设置有效,您必须启用  Lighting On命令开启光照。如果灯光关闭,则直接通过Color命令获得颜色。
 
SeparateSpecular On | Off
This command makes specular lighting be added to the end of the shader pass, so specular lighting is unaffected by texturing. Only has effect when Lighting On is used.
 这个命令将镜面光照添加到Shader 通道的末尾,这样能使镜面反射光不被纹理影响。这个效果仅仅当照明开启时有效。
 
ColorMaterial AmbientAndDiffuse | Emission 颜色材质 环境漫反射光照 及放射光
makes per-vertex color be used instead of the colors set in the material.  AmbientAndDiffuse replaces Ambient and Diffuse values of the material; Emission replaces Emission value of the material.
使用每一个顶点颜色去替换在材质中设置的颜色。 AmbientAndDiffuse 替换环境漫反射光照的值。 Emission 替换掉放射光的值。
Emission 可以理解为物体自发光。
 

Material Block 材质块

This contains settings for how the material reacts to the light. Any of these properties can be left out, in which case they default to black (i.e. have no effect).

这些是为了设置材质如何影响光照。任何这些属性都能被排除,在这种情况下它们被认为默认为黑色(没起到效果)。

Diffuse Color 漫反射颜色

The diffuse color component. This is an object's base color.
这个是物体最基础的颜色。
 
Ambient  Color 环境色
The ambient color component. This is the color the object has when it's hit by the ambient light set in the  RenderSettings.
当物体被环境光影响时候给物体设置颜色,这个取决于在RenderSettings中设置的环境颜色。
 
Specular  Color 反射光
The color of the object's specular highlight.
设置物体的高光反射颜色
 
Shininess  Number 清晰度
The sharpness of the highlight, between 0 and 1. At 0 you get a huge highlight that looks a lot like diffuse lighting, at 1 you get a tiny speck.
突出清晰度,值在0和1之间。为0时候,你得到1个巨大的高光看起来像很多漫射光照;为1时候,你得到一个小的斑点。
 
Emission  Color 自发光颜色
The color of the object when it is not hit by any light.
当没被其他光线影响时候,物体本身的自发光颜色。

The full color of lights hitting the object is:

当物体被所有光线照射时候他的颜色的计算公式如下:

  Ambient * RenderSettings ambient setting +
  (Light Color * Diffuse + Light Color * Specular) + Emission

The light parts of the equation (within parenthesis) is repeated for all lights that hit the object.

在括号中的那部分光线计算,是计算所有照射到物体上的光线。

Typically you want to keep the Diffuse and Ambient colors the same (all builtin Unity shaders do this).

通常情况下,你要保持漫反射和环境的颜色相同(所有内建的Unity3d shader 都是这么做的)。

 

Examples 例子:

Always render object in pure red:

总是用纯红色渲染物体

Shader "Solid Red" {
    SubShader {
        Pass { Color (1,0,0,0) }
    }
} 

Basic Shader that colors the object white and applies vertex lighting:

基本的Shader设置物体的材质漫反射和环境色为白色,同时开启顶点光照。

Shader "VertexLit White" {
    SubShader {
        Pass {
            Material {
                Diffuse (1,1,1,1)
                Ambient (1,1,1,1)
            }
            Lighting On
        }
    }
} 

An extended version that adds material color as a property visible in Material Inspector:

一个扩展版本的Shder.将材质的主颜色设置为可以在材质检索器中看到的属性。

Shader "VertexLit Simple" {
    Properties {
        _Color ("Main Color", COLOR) = (1,1,1,1)
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
            }
            Lighting On
        }
    }
} 

And finally, a full fledged vertex-lit shader (see also SetTexture reference page):

最后是1个完整的成熟的照明顶点着色器(参照 SetTexture引用)

Shader "VertexLit" {
    Properties {
        _Color ("Main Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
                Ambient [_Color]
                Shininess [_Shininess]
                Specular [_SpecColor]
                Emission [_Emission]
            }
            Lighting On
            SeparateSpecular On
            SetTexture [_MainTex] {
                Combine texture * primary DOUBLE, texture * primary
            }
        }
    }
} 
 
由 www.J2meGame.com原创,转载请说明。
Metal Shader language (着色语言规范)总结 Metal简述 Metal着色器语言是用来编写 3D图形渲染逻辑、并行Metal计算核心逻辑 的一门编程语言,当你使用Metal框架来完成APP的实现时则需要使用Metal编程语言。 Metal语言使用Clang 和LLVM进行编译处理,编译器对于在GPU上的代码执行效率有更好的控制 Metal基于C++ 11.0语言设计的,在C++基础上多了一些扩展和限制,主要用来编写在GPU上执行的图像渲染逻辑代码以及通用并行计算逻辑代码 Metal 像素坐标系统:Metal中纹理 或者 帧缓存区attachment 阅读详情

相关推荐

Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理

在图形渲染中,颜色空间(Color Space)是一个关键概念,它影响着最终图像的外观。在Unity中,理解并正确设置颜色空间可以显著提升图像质量。颜色空间介绍 Unity 官网(中文):线性或伽马工作流程 - Unity 手册颜色空间的基本概念颜色空间:颜色空间是颜色模型的具体实现,定义了特定条件下颜色的表示方式。常见的颜色空间包括sRGB和线性颜色空间。sRGB(标准RGB):一种常见的颜色空间,广泛应用于显示器、摄像机等设备。sRGB的色彩表现接近人类视觉感知,适合大多数显示设备。

仙魁XAN 2715

unity3D之canvas属性的介绍

Canvas属于Unity的UGUI,UGUI提供了强大的可视化编辑,大大提高了GUI的开发效率。 Canvas是所有UI组件的父物体,也就是说每一个UI组件都必须在Canvas下,作为Canvas的子物体,当你创建一个UI控件时,如果在Hierarchy下没有Canvas组件的话,Unity会帮你自动创建一个Canvas,并将你的UI控件置于Canvas下,Unity也会自动创建EventSy...

但行好事,莫问前程 4306

手把手教你用GNU Radio和PlutoSDR搭建FM收音机(附完整流程图)

本文提供了一份详细的实践指南,教你如何使用GNU Radio和PlutoSDR搭建一个功能完整的FM收音机。从软硬件环境准备、核心流程图构建,到运行调试与效果优化,手把手带你完成从射频信号接收、下变频、FM解调到音频输出的全过程,是入门软件定义无线电(SDR)的绝佳实践项目。

weixin_29189377的博客 753

Unity3d Shader开发(三)Pass(Color, Material, Lighting )

材质和灯光参数被用于控制内置顶点光照。顶点光照是Direct3D/OpenGL标准的按每顶点计算的光照模型。光照打开时,光照受材质块,颜色材质和平行高光命令的影响。 每像素光照常被实现为自定义顶点/片面程序,并且不使用顶点光照。这种情况下,你不会使用到任何在这里描述的命令,相反,在你完成光照,贴图和任何其他动作时,你需要定义自己的vertex and fragment programs...

weixin_30847271的博客 184

STM32控制气泵和电磁阀实现

2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A,如下图。1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。使用STM32控制气泵和电磁阀的开和关,气泵和电磁阀的供电电压为12V。最终实现单片机控制气泵和电磁阀的开和关。

jacklood的博客 1万+

WorkBuddy 实战:从聊天窗口到 AI 工作台,打造个人自动化助理

大模型时代,对话式 AI 常被当作高级搜索框,难以沉淀为生产力。其根源在于上下文断裂——每次对话都从零开始。AI Agent 的核心原理是通过状态保持、工具调用与流程复用,将临时交互固化为可重复的协作机制。WorkBuddy 作为个人 AI 工作台,以 Agent + Skill + 工作流架构解决该问题:Skill 封装操作手册,工作区沉淀知识上下文,自定义指令约束输出风格。这种设计让周报生成、会议纪要、文档初稿、专利检索辅助等重复劳动实现流程化自动产出。掌握 WorkBuddy 怎么用,关键在于从自己重

weixin_33834910的博客 340

Canvas

API—Canvas | Android 开发者 Canvas介绍 Canvas(画布):可以理解成画布。嵌套类1.Canvas.EdgeTypeAPI—Canvas.EdgeType | Android 开发者2.Canvas.VertexModeAPI—Canvas.VertexMode | Android 开发者常量 标记 说明 ALL_SAVE_FLAG 保存全部的状态

qq_20198405的博客 2131

arXiv订阅进阶玩法:除了邮件,还能用RSS和Python脚本打造你的专属论文追踪器

本文介绍了arXiv订阅的进阶玩法,教你如何通过RSS和Python脚本打造个性化的论文追踪器。突破传统邮件订阅的局限,实现实时更新、精准过滤和自动化管理,提升科研效率。特别适合需要高效追踪最新研究进展的学者和开发者。

weixin_26757925的博客 627

UGUI 知识精讲与实用案例(第 1 弹)——Canvas 和Text Mesh Pro组件(Text组件)详解包含案例

在 Unity 游戏开发的广袤领域中,用户界面(UI)的设计与实现是打造优质游戏体验的关键一环。UGUI(Unity GUI)作为 Unity 引擎内置的用户界面系统,为开发者提供了一套强大且灵活的工具,用于创建各种精美的界面元素和交互功能。无论是简洁的菜单界面,还是复杂的游戏内操作面板,UGUI 都能发挥重要作用。今天,让我们开启 UGUI 的探索之旅,深入了解它的基础构成,第一站为: Canvas 以及携带的组件、EventSystem 和 Text 文本控件。

徽程22级的在读学生 1646

钉钉宜搭低代码开发师高级认证考试题库113题

钉钉宜搭低代码开发师(高级)考试试题题库,多次考试收集整理,判断题,单选题,多选题,排版清晰,查找方便。希望能帮助到大家!!!

qq_40811920的博客 6411

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 149

Unity3D Shader官方教程翻译(一)

Shader Reference 着色参考 Shaders in Unity can be written in one of three different ways: Unity3D着色器,可以写在三种不同的方式之一: assurface shaders, asvertex and fragment shaders and asfixed function s

3G-肖阳 4153

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。

嵌入式阿齐Archie 1万+

【UnityShader】学习笔记 灯光

官网教程地址:https://docs.unity3d.com/Manual/SL-Material.html Material Block This contains settings for how the material reacts to the light. Any of these properties can be left out, in which case

Naruto_Hinata_的博客 935

为YOLOv11引入加权双向特征金字塔(BiFPN)

本文介绍了将BiFPN应用于YOLOv11模型以提升边缘设备上小目标检测精度的实践。针对传统FPN在特征融合时的信息丢失问题,采用带可学习权重的BiFPN结构进行改造,实现了不同层级特征的动态融合。重点阐述了WeightedFeatureFusion模块的实现细节、neck结构改造方法及训练部署注意事项。实验表明,该改进使小目标AP提升3.1%,参数量仅增加5%,在精度和效率间取得良好平衡。文章还分享了权重初始化、归一化处理等实用技巧,并强调需根据数据特性评估改进效果,重新计算anchor等关键点。

as1225120794的博客 352

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Unity3d 着色器语法(Shader)

Shader "name" { [Properties] Subshaders [Fallback] } 定义了一个着色器。着色器拥有一个 Properties 的列表。着色器包含一个子着色器的列表(SubShaders)。并且至少包含一个(SubShader)。当加载一个着色器时,Unity 将遍历这个列表,获取第一个能被用户机器支持的着色器。如果没有子着色器被支持,Unity 将尝试使用降级

天下君的不老歌 1287

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

UnityShader17:光照属性与阴影

前置:UnityShader16:点光源和聚光灯 一、一些重要的光照、阴影属性 一个一个来(绿色的部分暂时可以不用了解): Type:光照类型,除了常用的3个,还有一个面光源 Color:光照颜色 Mode:光照模式:实时光照/混合/烘培光照 Intensity:光照强度 Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘 Shadow Type:阴影类型:无阴影/硬阴影/软阴影 Cookie:用于光照投影的纹理 Cookie Size:Cooki...

加载中... 2349

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

UnityShader基础(一)——基础光照

在入门系列最后一节中可以看到输出结果,尽管模型是一个立方体,但我们看到的就是一坨,为了丰富细节,会模拟光照使模型表面更加明显,就如同在现实生活中我们看到物体时是借助光线,在Shader也是同样。

SliverAsh_的博客 1576

关于u3d出现NullReferenceException的常见情况

NullReferenceException,也称空引用异常,对于新手来说,这是个很常见的问题。这个问题的产生是因为你通过C#代码想要查找到相应的物体,但是unity遍历了自身的所有物体,都没有找到你想要的那个物体,此时就会报出空引用异常。查找Canvas下Button内Test时,常见出现空引用异常的情况如下:

Wormwood的博客 9021

unity 之 shader 语法二

ShaderLab: Legacy Lighting 材质和光照参数用来控制内置的顶点光照,顶点光照是计算每个顶点的标准的Direct3D/OpenGL光照模型. Lighting on 是打开.Lighting受 Material块, ColorMaterial and SeparateSpecular 命令影响 Note:当vertex programs 使用的时候 Material/Li...

qq_37672438的博客 1216
上一篇: Unity3D Shader官方教程翻译(五)----Shader语法:Pass
下一篇: Unity3D Shader官方教程翻译(七)----Shader语法:Pass的Culling & Depth Testing
coding_most
博客等级 码龄15年 13粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值