GLSL语言摘要(一)

一、流水线

pipeline

二、顶点处理器

     1. 顶点属性

       // Vertex Attributes
      attribute vec4 gl_Color;
      attribute vec4 gl_SecondaryColor;
      attribute vec3 gl_Normal;
      attribute vec4 gl_Vertex;
      attribute vec4 gl_MultiTexCoord0;
      attribute vec4 gl_MultiTexCoord1;
      attribute vec4 gl_MultiTexCoord2;
      // . . . up to gl_MultiTexCoordN-1 where N = gl_MaxTextureCoords
      attribute float gl_FogCoord;

      2. 特殊的输出变量

      vec4  gl_Position;      // must be written to
      float   gl_PointSize;    // may be written to
      vec4  gl_ClipVertex;  // may be written to

      3. 内置易变变量

   varying vec4  gl_FrontColor;
   varying vec4  gl_BackColor;
   varying vec4  gl_FrontSecondaryColor;
   varying vec4  gl_BackSecondaryColor;
   varying vec4  gl_TexCoord[]; // at most will be gl_MaxTextureCoords
   varying float gl_FogFragCoord;

三、片元处理器

      1. 内置易变变量

   varying vec4  gl_Color;
   varying vec4  gl_SecondaryColor;
   varying vec4  gl_TexCoord[]; // at most will be gl_MaxTextureCoords
   varying float gl_FogFragCoord;

      2.特殊输入变量

      vec4 gl_FragCoord;
      bool gl_FrontFacing;

      3. 特殊输出变量

   vec4  gl_FragColor;
   vec4  gl_FragData[gl_MaxDrawbuffers];
   float gl_FragDepth;

四、内置一致性变量

//
// Matrix state
//
uniform mat4  gl_ModelViewMatrix;
uniform mat4  gl_ProjectionMatrix;
uniform mat4  gl_ModelViewProjectionMatrix;
uniform mat4  gl_TextureMatrix[gl_MaxTextureCoords];

//
// Derived matrix state that provides inverse and transposed versions
// of the matrices above. Poorly conditioned matrices may result
// in unpredictable values in their inverse forms.
//
uniform mat3  gl_NormalMatrix; // transpose of the inverse of the upper
                               // leftmost 3x3 of gl_ModelViewMatrix

uniform mat4  gl_ModelViewMatrixInverse;
uniform mat4  gl_ProjectionMatrixInverse;
uniform mat4  gl_ModelViewProjectionMatrixInverse;
uniform mat4  gl_TextureMatrixInverse[gl_MaxTextureCoords];

uniform mat4  gl_ModelViewMatrixTranspose;
uniform mat4  gl_ProjectionMatrixTranspose;
uniform mat4  gl_ModelViewProjectionMatrixTranspose;
uniform mat4  gl_TextureMatrixTranspose[gl_MaxTextureCoords]

uniform mat4  gl_ModelViewMatrixInverseTranspose;
uniform mat4  gl_ProjectionMatrixInverseTranspose;
uniform mat4  gl_ModelViewProjectionMatrixInverseTranspose;
uniform mat4  gl_TextureMatrixInverseTranspose[gl_MaxTextureCoords]

//
// Normal scaling
//
uniform float gl_NormalScale;

//
// Depth range in window coordinates
//
struct gl_DepthRangeParameters
{
    float near;        // n
    float far;         // f
    float diff;        // f - n
};
uniform gl_DepthRangeParameters gl_DepthRange;

//
// Clip planes
//
uniform vec4  gl_ClipPlane[gl_MaxClipPlanes];

//
// Point Size
//
struct gl_PointParameters
{
    float size;
    float sizeMin;
    float sizeMax;
    float fadeThresholdSize;
    float distanceConstantAttenuation;
    float distanceLinearAttenuation;
    float distanceQuadraticAttenuation;
};

uniform gl_PointParameters gl_Point;

//
// Material State
//
struct gl_MaterialParameters
{
    vec4 emission;     // Ecm
    vec4 ambient;      // Acm
    vec4 diffuse;      // Dcm
    vec4 specular;     // Scm
    float shininess;   // Srm
};
uniform gl_MaterialParameters  gl_FrontMaterial;
uniform gl_MaterialParameters  gl_BackMaterial;
//
// Light State
//

struct gl_LightSourceParameters
{
    vec4  ambient;              // Acli
    vec4  diffuse;              // Dcli
    vec4  specular;             // Scli
    vec4  position;             // Ppli
    vec4  halfVector;           // Derived: Hi
    vec3  spotDirection;        // Sdli
    float spotExponent;         // Srli
    float spotCutoff;           // Crli
                                // (range: [0.0,90.0], 180.0)
    float spotCosCutoff;        // Derived: cos(Crli)
                                // (range: [1.0,0.0],-1.0)
    float constantAttenuation;  // K0
    float linearAttenuation;    // K1
    float quadraticAttenuation; // K2
};

uniform gl_LightSourceParameters   gl_LightSource[gl_MaxLights];

struct gl_LightModelParameters
{
    vec4 ambient;        // Acs
};

uniform gl_LightModelParameters gl_LightModel;

//
// Derived state from products of light and material.
//

struct gl_LightModelProducts
{
    vec4 sceneColor;      // Derived. Ecm + Acm * Acs
};

uniform gl_LightModelProducts gl_FrontLightModelProduct;
uniform gl_LightModelProducts gl_BackLightModelProduct;

struct gl_LightProducts
{
    vec4 ambient;         // Acm * Acli
    vec4 diffuse;         // Dcm * Dcli
    vec4 specular;        // Scm * Scli
};
uniform gl_LightProducts gl_FrontLightProduct[gl_MaxLights];
uniform gl_LightProducts gl_BackLightProduct[gl_MaxLights];

//
// Texture Environment and Generation
//
uniform vec4  gl_TextureEnvColor[gl_MaxTextureUnits];
uniform vec4  gl_EyePlaneS[gl_MaxTextureCoords];
uniform vec4  gl_EyePlaneT[gl_MaxTextureCoords];
uniform vec4  gl_EyePlaneR[gl_MaxTextureCoords];
uniform vec4  gl_EyePlaneQ[gl_MaxTextureCoords];
uniform vec4  gl_ObjectPlaneS[gl_MaxTextureCoords];
uniform vec4  gl_ObjectPlaneT[gl_MaxTextureCoords];
uniform vec4  gl_ObjectPlaneR[gl_MaxTextureCoords];
uniform vec4  gl_ObjectPlaneQ[gl_MaxTextureCoords];

//
// Fog
//
struct gl_FogParameters
{
    vec4 color;
    float density;
    float start;
    float end;
    float scale;   // 1.0 / (gl_Fog.end - gl_Fog.start)
};

uniform gl_FogParameters gl_Fog;

五、内置常量

//
// Implementation dependent constants.  The values below
// are the minimum values allowed for these constants.
//
const int  gl_MaxLights = 8;
const int  gl_MaxClipPlanes = 6;
const int  gl_MaxTextureUnits = 2;
const int  gl_MaxTextureCoords = 2;
const int  gl_MaxVertexAttribs = 16;
const int  gl_MaxVertexUniformComponents = 512;
const int  gl_MaxVaryingFloats = 32;
const int  gl_MaxVertexTextureImageUnits = 0;
const int  gl_MaxTextureImageUnits = 2;
const int  gl_MaxFragmentUniformComponents = 64;
const int  gl_MaxCombinedTextureImageUnits = 2;
const int  gl_MaxDrawBuffers = 1;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值