Shader学习一

本篇博文仅仅记录自己的学习,如果对谁有帮助这将是我都荣幸。

1

渲染流水线的最终目的在于渲染一张二位纹理即生成一张图片。
首先明白渲染流水线不等于GPU流水线。如下图我自己整理的,开发者在应用阶段有绝对的控制权,在这个阶段渲染图元(点,线,三角面等)传递给下一阶段在这里插入图片描述
渲染流水线的起点是CPU,渲染所需的数据从硬盘—>内存---->GPU,CPU调用DrawCall命令来进行渲染

2

GPU渲染的过程就是GPU流水线。
OpenGL的原点在左下角,
DirectX的原点在左上角。
逐片元操作是OpenGL中的说法,在DirectX中称为输出合并阶段。
OpenGL和DirectX是图像应用编程接口,架起了上层应用程序和底层GPU的沟通桥梁。
用书上的话说,应用程序运行在CPU上,应用程序可以通过OpenGL或DirectX的图形接口将渲染所需的数据,如顶点数据,纹理数据,材质参数等存储在显存中的特定区域。随后开发者可以通过图像编程接口发出渲染命令,这些渲染命令也被称为DrawCall,它们将会被显卡翻译成GPU能够理解的代码,进行真正的绘制。

3

着色语言:
DirectX的HLSL(High Level Shading Language)
OpenGL的GLSL(OpenGL Shading Language)
NVIDIA的Cg(C for Graphic)
改变一次渲染状态就要通过CPU调用DrawCall,数量一多就会把时间花费在提交DrawCall上,造成CPU过载。
批处理比较适合静态物体,当然也可以对动态物体进行批处理,但是由于物体不断运动每一帧都要重新合并然后发送给GPU,这对空间和时间都会造成一定的影响。
利用批处理,CPU在RAM把多个网格合并成一个更大的网格,再发给GPU,然后在一个DrawCall中渲染它们,使用批处理合并的网格将会使用同一种渲染状态。如果网格之间需要使用不同的渲染状态那么就无法使用批处理。不要使用过多的材质,尽量再不同的网格之间公用同一种材质。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shader(着色器)是用于在图形渲染过程中处理和操作像素数据的一种程序。学习Shader需要一定的编程基础,特别是对C++、OpenGL或DirectX等图形编程框架的熟悉。以下是一个关于学习Shader的计划: 1. 学习基本概念: - 了解计算机图形学的基本概念,如顶点、纹理、光照等。 - 学习Shader的基本组成部分,包括顶点着色器(Vertex Shader)、片段着色器(Fragment Shader)和几何着色器(Geometry Shader)。 2. 选择合适的编程语言和图形编程框架: - 根据个人喜好和项目需求,选择C++、C#或HLSL(High Level Shading Language)作为编写Shader的编程语言。 - 学习所选编程语言的基本语法和图形编程框架的使用方法。 3. 学习Shader语言: - 熟悉所选编程语言的Shader库,了解常用的Shader函数和结构。 - 学习编写基本的顶点着色器和片段着色器,掌握如何描述图形渲染的过程。 4. 学习高级Shader技术: - 学习纹理贴图、光照模型、阴影技术等高级Shader技术。 - 掌握如何使用多个着色器(如几何着色器和光栅化着色器)组合在一起实现复杂的渲染效果。 5. 实践项目: - 参与开源项目或自己创建项目,将所学的Shader知识应用到实际项目中。 - 通过不断地实践和优化,提高自己的Shader编程能力。 6. 深入学习: - 阅读相关书籍和教程,了解更多关于Shader的高级技术和实现方法。 - 参加线上或线下的技术社区,与其他开发者交流学习经验,共同进步。 总之,学习Shader需要时间和耐心,通过不断地学习和实践,你将能够掌握这一技能并在图形渲染领域取得突破。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值