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. android TextView 例子代码(文字图片、文字省略、文字滚动)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  2. apache伪静态规则解析

    apache伪静态规则解析 最近有个客户有个要求,昨天折腾了一会,没解决,今天没啥就多学习学习 还是根据例子来学习比较快 1 简单的重定向规则 RewriteEngine On //启动规则 Rewr ...

  3. myeclipse项目 不能打开

    重启电脑后, myeclipse项目 不能打开了, 之前都是好好的!! 出现: Failed to read the project description file (.project) for ' ...

  4. otter 数据同步

    阿里巴巴分布式数据库同步系统(解决中美异地机房) 基本介绍: https://github.com/alibaba/otter 快速使用: https://github.com/alibaba/ott ...

  5. java多态和继承

    继承定义:子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 多态定义看了很多,都觉得不够贴切,后来在一个同学的笔记中看到了如下的定义觉得很 ...

  6. 关于阿里云图片识别接口的demo

    服务器处理过程 $host = "https://dm-53.data.aliyun.com"; $path = "/rest/160601/ocr/ocr_vehicl ...

  7. 【转】Django 图表制作(By Highcharts)

    马克,待不时之需 Django 图表制作(By Highcharts):https://blog.csdn.net/Temanm/article/details/54141759 免费而优秀的图表JS ...

  8. 构建模式--Adapter模式(JAVA)

    适配器模式: 适配器就相当于我们的转接头,比如手机充电器插头(小米和华为的手机充电器不能共用,这时候就可以给华为的充电器按一个转接头,就可以给小米手机充电). 同理,当一个类(充电器 HuaweiCh ...

  9. C#与.NET概述

    .NET Framework是一个支持生成和运行下一代应用程序和web服务的集成在Windows中的组件. 关键组建为CLR和FCL. 为其运行的应用程序提供各种服务的托管执行环境,简化的开发和部署以 ...

  10. js弹出div层,弹出层页面底部出现UL出现一条线问题

    整个弹出div层,列表满一页时:底部会出现一条横线 原因:ul固定写在页面中了 解决方法: 将ul代码与li列表一样写在js中,如下 var newhtml = '<ul class=" ...