Fixed Function Shader(固定渲染管线)

一、引言

Fixed Function Shader 属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的Fallback(之后有详细介绍)。使用的是ShaderLab语言,语法与微软的FX files 或者NVIDIA的 CgFX类似。

二、语法

shader例子参见附件

1、Pass 表示渲染管线

一个Pass表示一个渲染管线,当存在多个Pass时,即在前一Pass结束后,依据得到的缓存数据和状态开始下一个Pass管线,直到所有Pass管线渲染结束。

2、Pass 内开关控制

1Specularhighlights 反射高光

默认情况下primary颜色是漫反射,阴影色和高光颜色(在光线计算中定义)的加和。如果你将通道设置中的SeparateSpecular On,高光色会在混合计算后被加入,而不是之前。

2LightingOn

灯光应用打开

............

3、Material信息

Material Block 材质块

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

Diffuse Color 漫反射颜色

这个是物体最基础的颜色。

Ambient Color 环境色

当物体被环境光影响时候给物体设置颜色,这个取决于在RenderSettings中设置的环境颜色。

Specular Color 反射光

设置物体的高光反射颜色

Shininess Number 清晰度

突出清晰度,值在0和1之间。为0时候,你得到1个巨大的高光看起来像很多漫射光照;为1时候,你得到一个小的斑点。

Emission Color 自发光颜色

当没被其他光线影响时候,物体本身的自发光颜色。

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

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

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

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

参见附件例2。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以为您提供一个基本的Unity URP渲染管线镜面Shader示例。这个Shader将为物体表面创建一个镜面反射效果。 首先,您需要在Unity中创建一个新的URP项目。然后,您可以创建一个新的Shader文件并将以下代码添加到其中: ```csharp Shader "Custom/URP Mirror" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _Metallic ("Metallic", Range(0, 1)) = 0.5 _Smoothness ("Smoothness", Range(0, 1)) = 0.5 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Standard fullforwardshadows #include "UnityCG.cginc" struct Input { float2 uv_MainTex; }; sampler2D _MainTex; fixed4 _Color; float _Metallic; float _Smoothness; void surf (Input IN, inout SurfaceOutputStandard o) { fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Metallic = _Metallic; o.Smoothness = _Smoothness; o.Alpha = c.a; o.Specular = 1; // 启用高光 o.Specular *= c.a; // 根据纹理透明度调整高光强度 } ENDCG } FallBack "Diffuse" } ``` 这个示例中的Shader使用了标准的SurfaceOutputStandard结构,以便与Unity URP渲染管线兼容。它具有_Color(颜色)、_MainTex(主纹理)、_Metallic(金属度)和_Smoothness(光滑度)属性,您可以在材质面板中调整它们。 Shader中的surf函数定义了如何计算表面输出。在这个例子中,我们首先从_MainTex纹理中采样颜色,并将其乘以_Color属性。然后,我们将乘以纹理透明度后的结果设置为表面的漫反射颜色(o.Albedo)。_Metallic和_Smoothness属性用于设置金属度和光滑度。 在这个示例中,我们还启用了高光(o.Specular),并根据纹理透明度调整了高光强度。 最后,请将此Shader文件保存,并将其应用于您想要添加镜面反射效果的物体上。您可以通过创建一个新材质,然后将其Shader属性设置为您创建的Shader来实现这一点。 希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值