第一个shader代码


title: 第一个shader代码
date: 2019-06-22 22:49:16
tags:

学习shader第一天!

刚刚开始学习unity着色器写个博客记录一下。

人生中写的第一个shader:

Shader "Skin/test2"
{
    Properties{
    	_MainTex ("Albedo",2D) = "white" {}
    	_Color ("MainColor",Color) = (1,0,0,1)
    }

    SubShader {
    	CGPROGRAM
    	#pragma surface surf Lambert
    	struct Input {
    		float2 uv_MainTex;
    	};

    	sampler2D _MainTex;
    	float4 _Color;

    	void surf(Input IN,inout SurfaceOutput o){
    		o.Albedo = tex2D (_MainTex,IN.uv_MainTex).rgb* _Color.rgb;
    	}
    	ENDCG
    }
}

写完和官方基本便面着色器Standard Surface Shader对比了一下。。发现这就是个阉割版的基础shader。。

官方基础着色器代码

Shader "Custom/NewSurfaceShader"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows

        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

        // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
        // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
        // #pragma instancing_options assumeuniformscaling
        UNITY_INSTANCING_BUFFER_START(Props)
            // put more per-instance properties here
        UNITY_INSTANCING_BUFFER_END(Props)

        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

基本的使用的是Standard fullforwardshadows光照模型。有金属度和光泽度属性。和一个表示不透明物体渲染类型的标签Tag.
LOD则表示着色器细节等级,用于确定不同画质下shader是否调用。
最后一句FallBack "Diffuse"用于在由于硬件或者其他问题,shader没有被正常执行的时候执行回滚操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我会尝试编一个Unity Shader,它包括UV动画和发光特效。它将会是一个复杂的shader,因为UV动画和发光特效都需要大量的程序代码和数据处理。但是,我将尝试使用Unity Shader语言(GLSL)编出一个高性能的shader,它可以实现UV动画和发光特效。 ### 回答2: UnityShader是一种用于控制渲染对象外观的程序,它可以通过编程来实现各种特效。要编带有UV动画和发光特效的Unity Shader,可以按照以下步骤进行操作: 第一步,创建一个新的Shader文件。打开Unity并进入项目,然后在项目窗口右键点击创建->Shader->Standard Surface Shader。这会在项目创建一个新的Shader文件。 第二步,打开创建的Shader文件,并添加一些代码。在Shader文件,我们需要添加一些代码块来实现UV动画和发光特效。首先,我们可以添加一个分支来处理UV动画。可以使用sin函数来在时间和UV坐标之间创建一个偏移量,以产生一个动画效果。 第三步,在Shader文件添加发光特效。我们可以使用光照模型和添加自发光颜色来实现发光特效。可以使用自发光颜色来改变物体的亮度,并与其他材质一起呈现。 第四步,将编好的Shader应用到对象上。可以在场景选择一个对象,然后在对象的渲染组件上选择刚刚创建的Shader文件。可以通过调整Shader属性的值来改变对象的外观。 这只是一个简单的示例,实际编复杂的Shader需要更多的代码和技术。可以在Unity官方文档和学习资源找到更多关于编Shader的教程和示例代码,以帮助您更深入地理解和使用Unity Shader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值