Shader 学习之路-入门(一)

         其实一提到Shader 这个概念,对于大家来讲,可以说熟悉而陌生,熟悉是因为这个名词出现在游戏,出现在图形学中,是比较多的;陌生是因为我们很多人只能止步于知道它的存在,但是没有深究它的功能和用处。

1、Shader 简述

      Shader(着色器):实际上是控制GPU的一堆指令集,它负责将输入Mesh(网格)以指定方式和输入的贴图或者颜色等组合作用,然后输出。

2、Shader 三种基本类型

    2.1、固定功能着色器(Fixed Function Shader)

    适用于所有显卡,常用于高级Shader在老显卡无法显示时Fallback

Shader "Examples/Alpha Blended Textures" {

    Properties {

        _MainTex ("Base (RGB)", 2D) = "white" {}

        _BlendTex ("Alpha Blended (RGBA) ", 2D) = "white" {}

    }

    SubShader {

        Pass {

            // Apply base texture

// 应用主纹理

            SetTexture [_MainTex] {

                combine texture

            }

            // Blend in the alpha texture using the lerp operator

// 使用差值操作混合Alpha纹理

            SetTexture [_BlendTex] {

                combine texture lerp (texture) previous

            }

        }

    }

}

    2.2、表面着色器(Surface Shader)

    易于编写光照的Shader,受光照和阴影的影响,使用基于物理的照明模型:

Shader "Example/Diffuse Simple" {

    SubShader {

      Tags { "RenderType"="Opaque" }

      CGPROGRAM#pragmasurface surf Lambertstruct Input

    {

        float4 color : COLOR;

      };

    void surf(Input IN, inout SurfaceOutput o)

    {

        o.Albedo =1;

    }

    ENDCG

}

Fallback "Diffuse"  }

    2.3、顶点着色器&片段着色器(Vertex Shader & Fragment Shader)


Shader "Custom/NewShader"

 {

  Properties {

 _MainTex ("Base (RGB)", 2D) = "white" {}

}

SubShader 

{ Tags { "RenderType" = "Opaque" }

 LOD 200

 CGPROGRAM

#pragma surface surf Lambert

 sampler2D _MainTex;

struct Input { float2 uv_MainTex; };

 void surf (Input IN, inout SurfaceOutput o)

 {

 half4 c = tex2D (_MainTex, IN.uv_MainTex);

 o.Albedo = c.rgb; o.Alpha = c.a; }

 ENDCG

}

FallBack "Diffuse"

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Unity shader 官网文档全方位学习(一)What?? Shader,看起来好高级的样子,是的,这是Uni...
    狼之独步阅读 11,306评论 0 12
  • 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Shader,...
    男爵卡波阅读 7,112评论 0 52
  • 动机自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入...
    JumboWu阅读 6,414评论 0 24
  • <转>我也忘了转自哪里,抱歉,感谢原作者 什么是Shader Shader(着色器)是一段能够针对3D对象进行操作...
    星易乾川阅读 10,998评论 1 16
  • 珠珠妹从姐姐房间里拿出一叠照片,开心地朝着雪晴喊:妈妈…妈妈…快来看姐姐的照片。“都跟你说过多少次了,不要乱翻姐姐...
    女巫唐唐阅读 3,895评论 15 3

友情链接更多精彩内容