Shader原理部分

渲染绘图管线流程:

 

 

1.顶点处理(坐标系的转换)

一个模型有自身的方向(前方,上方,右方等)和中心点,既本地坐标系;

将这个模型放到场景当中,通过场景中的世界坐标原点和世界坐标的方向,计算出当前模型的世界坐标,从本地坐标系转换到世界坐标系;

一个模型在不同的角度观察,观察的效果是不一样的,在Unity中,摄像机是观察者,摄像机也有自己的方位,相对于每个模型来讲,就有了一个摄像机的观察坐标系;

有了观察坐标系以后,模型和摄像机都有自己的位置,最终渲染的时候,将模型投影到摄像机的画面上,转成了投影坐标系;

摄像机有两种渲染模式:正交和透视,正交没有近大远小的概念,透视有;

2.面处理

将所有的顶点连到一起,形成了面;

面剔除就是剔除摄像机看不到的面的那一部分,面截取是摄像机看到的那一部分被截取下来,在面剔除中,会产生一点能耗;

3.光栅化

表示的是将一个面转换成一个一个像素;

4.像素处理

给每一个像素去着色的过程,纹理坐标指的是当前像素所对应的贴图的坐标

总之,关于3D模型输出为屏幕上的2D图片的过程分为四步:顶点处理(四个坐标系的转换)、面处理(面的截取和剔除)、光栅化(一个一个的像素排列成面)、像素处理(为每个像素着色);这样就形成了在屏幕上所看到的画面

Shader基础(渲染管线)的更多相关文章

  1. Unity Shader 基础(4) 由深度纹理重建坐标

    在PostImage中经常会用到物体本身的位置信息,但是Image Effect自身是不包含这些信息的,因为屏幕后处其实是使用特定的材质渲染一个刚好填满屏幕的四边形面片(四个角对应近剪裁面的四个角). ...

  2. 【Unity Shader】Shader基础

    目录 Chapter3 Unity Shader 基础 Chapter3 Unity Shader 基础 概述 在Unity需要材质(Material)与Unity Shader配合使用来达到满意的效 ...

  3. Unity Shader基础

    Unity Shader基础 先上代码,代码一般是这样的. void Initialization(){ //先从硬盘加载代码再加载到GPU中 string vertexShaderCode = Lo ...

  4. [原]Unity3D深入浅出 - Shader基础开发

    概述 简单来讲,shader是为渲染管线中的特定处理截断提供算法的一段代码.Shader是伴随着可编程渲染管线出现的,开发者可使用Shader对渲染过程加以控制,拥有更大的创作控件,因此Shader的 ...

  5. Unity3D Shader基础教程

    原文地址:http://bbs.9ria.com/thread-212557-1-1.html 此教程将指引你如何建立自己的Shaders,让你的游戏场景看起来更好.Unity配备了强大的阴影和材料的 ...

  6. Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础

    来源作者:candycat   http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...

  7. 第二章 Unity Shader基础

    [TOC] 1. Unity Shader 的基础: ShaderLab 学习和编写着色器的过程一直是一个学习曲线很陡峭的过程,通常情况下为了自定义渲染效果往往要和很多文件和设置打交道,这些设置很容易 ...

  8. Unity Shader 基础

    推荐: https://www.cnblogs.com/nanwei/p/7277417.html 上面链接作者的整个系列都写的不错 https://www.cnblogs.com/nanwei/ca ...

  9. Shader基础(固定管线着色器)

    在Shader的编码中,要养成不加空格的习惯,否则会有时候出现一些错误 固定管线着色器: 优点:实现简单 缺点:处理的效果比较差 //设置Shader的路径 Shader "MyFixedS ...

随机推荐

  1. Geany 编辑器打开 高亮所选单词 功能

    Geany 编辑器打开 高亮所选单词 功能 在Ubuntu 系统的Software Center 工具中,搜索到geany, 下方有个 Miscellanous Plugins for Geany, ...

  2. Heap Dump (heap=dump)

    Heap Dump (heap=dump) 转储堆内容使用heap=dump选项.可以是ASCII或者是二进制格式,根据设定的格式,jhat解析二进制格式.format=b. 如果指定格式是二进制,转 ...

  3. Linux 虚拟机的安全加固建议

    1.修改用户的密码口令策略:   [root@centos-73-1 chpaadmin]# cat /etc/login.defs |grep -i pass # passwd command) s ...

  4. 链接(跳转)<router-link> 和 路由实例Router

    <router-link>和<router-link>传入的对象参数中包含path路径.name命名路由.params路径参数.query ?查询,并且如果提供了 path,p ...

  5. idea 一款神一样的编辑器 IDEA,破解方式

    功能1,可以开发后端如 JAVA, PHP, PYTHON ,NODE 功能2,可以开发前端如 HTML +  CSS + JS 破解方式 1,编辑C:\Windows\System32\driver ...

  6. 10款流行的Markdown编辑器,总有一款适合你

    摘要:作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用. 作为一个开源 ...

  7. db连接驱动

    1.oracle 驱动jar包-->ojdbc6.jar 驱动类-->oracle.jdbc.driver.OracleDriver 驱动连接--> 第一种:jdbc:oracle: ...

  8. sizeof 空类

    C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1. 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针 ...

  9. byobu copy

    Copy and Paste in Scrollback mode (screen/byobu) Enter scrollback mode: F7 Move the cursor to the st ...

  10. Python中的元类(译)

    add by zhj: 这是大stackoverflow上一位小白提出的问题,好吧,我承认我也是小白,元类这块我也是好多次想搞明白, 但终究因为太难懂而败下阵来.看了这篇文章明白了许多,再加下啄木鸟社 ...