1.1什么是着色器

    技术2022-05-11  65

     

    1.HLSL入门

    1.1什么是着色器

    DirectX使用管道技术(pipeline)进行图形渲染,其构架如下:

    1.1 Direct3D Graphics Pipeline

    之前我们使用管道的步骤如下:

    1.       设定顶点、图元、纹理等数据信息;

    2.       设定管道状态信息;

    ²        渲染状态

    通过SetRenderState方法设定渲染状态;

    另外,使用以下方法设置变换、材质和光照:

                  SetTransform

                  SetMaterial

    SetLight

                  LightEnable

    ²        取样器状态

    通过SetSamplerState方法设定取样器状态;

    ²        纹理层状态

    通过SetTextureStageState设定纹理层状态;

    3.       渲染;

    这部分交由D3D管道按照之前的设定自行完成,这部分操作是D3D预先固定的,所以这种管道技术被称为固定功能管道(fixed function pipeline)

     

    固定功能管道给我们编程提供了一定的灵活性,但是仍有很多效果难以通过这种方式实现,比如:

    1.       在渲染过程中,我们要求y坐标值大于10的顶点要被绘制到坐标值(000)的地方,在之前的固定功能管道中,顶点被绘制的位置是在第1步即被设定好的,不可能在渲染过程中进行改变,所以是不可行的;

    2.       谋顶点在纹理贴图1上映射为点A,在纹理贴图2上映射为点B,我们要求该顶点颜色由AB共同决定,即:

    定点颜色 = A点色彩值*0.7 + B点色彩值*0.3

       这在固定管道编程中也是不可行的。

    以上两个问题都可以由可编程管道(pragrammable pipeline)来解决。

           可编程管线允许用户自定义一段可以在GPU上执行的程序,代替固定管道技术中的Vertex ProcessingPixel Processing阶段(参照图1.1),从而在使我们在编程中达到更大的灵活性。其中替换Vertex Processing的部分叫做Vertex Shader(顶点着色器),替换Pixel Proccessing的部分叫做Pixel Shader(像素着色器),这就是我们所说的着色器Shader

     


    最新回复(0)