Shader编程学习笔记(九)—— Cg语言入门1 - 输入输出、语义、profile和基本数据类型


1、引言

  这里我们开始了解CG语言。本篇涉及知识点:

  • 输入输出
  • 语义
  • profile
  • 基本数据类型

  这里我们使用一个示例来了解一个简单的shader的顶点和片段程序的输入输出以及常用语义。

2、示例

2.1、输入输出和语义

  编写一个简单的顶点和片段着色器,代码如下:

Shader "lxt610/fragmentVertexShader"{
    SubShader{
        pass{
            CGPROGRAM
            #pragma vertex vert			//声明一个顶点着色器
            #pragma fragment frag		//声明一个片元着色器

            void vert(in float2 objPos:POSITION, out float4 pos:POSITION){
                pos = float4(objPos,0,1);
            }

            void frag(out float4 col:COLOR){
                col = float4(1,0,0,1);
            }
            ENDCG
        }
    }
}

vertex&fragment

Surface Shader没有pass通道,Vertex & Frament Shader至少有一个pass通道。

  Cg是一个镶嵌的代码段,在ShaderLab语法中需要使用关键词“CGPROGRAM”和“ENDCG”将Cg代码段包含起来才能编译使用,需要注意的是这两个关键词都是大写的。
  顶点程序会对顶点做一系列的处理,如几何变换,在处理后把需要的数据传递给片段程序,片段程序拿到顶点程序当中处理后的数据继续进行最终的计算。因此一个顶点片元着色器必须同时包含顶点着色器和片元着色器。

”void vert(in float2 objPos:POSITION, out float4 pos:POSITION)”中有两个参数,

  • 其中第一个参数中的“in”表示引擎提供的输入,“float2”表示数据的类型为二阶的向量,参数名“objPos”冒号后需要带上语义,语义指的是顶点程序和片段程序能够被识别的变量的实际意义,这里使用“POSITION”。
  • 第二个参数中“out”表示输出,数据类型为“float4”,语义也是“POSITION”。

  如果顶点程序要输出一个“POSITION”语义的变量,这个变量必须要以“float4”四阶向量的形式。另外,在片段程序中需要有语义为“COLOR”的变量作为输入,这里使用“out float4 col:COLOR”作为颜色变量的输出,语义“COLOR”就是指“COLOR0”。接下来创建一个使用该shader的Material,并

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对酒当歌﹏✍

您的鼓励是我写作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值