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. IDEA下载Git中项目

     一.             打开idea,点击File>Settings,搜索git(安装系统默认设置即可) 二.        选择git 三.        Git中项目的路径粘贴到ID ...

  2. First C++

    第一天接触C++,根据老师的作业写了两行代码...保存到Github了. https://github.com/BlackDn 首先是认识到自己的一些小错误,如打代码的时候会忘记这一行最后加“:”.可 ...

  3. github构建个人网站模板

    http://novoland.github.io/%E5%B9%B6%E5%8F%91/2014/09/11/ThreadLocal%20%E5%88%86%E6%9E%90.html

  4. linux配置防火墙,开启端口

    Centos7,配置防火墙,开启端口 1.查看已开放的端口(默认不开放任何端口) firewall-cmd --list-ports 2.开启80端口 firewall-cmd --zone=publ ...

  5. 31.用 CSS 的动画原理,创作一个乒乓球对打动画

    原文地址:https://segmentfault.com/a/1190000015002553 感想:纯属动画 HTML代码: <div class="court"> ...

  6. js提高篇

    1定义一个方法 function aa(){alert(this)} 对于浏览器 这只是一个方法,那么this是什么的,this理所当然是document对象了..也就是说 打页面定义的方法 都是do ...

  7. git 简单的操作命令

    1, 克隆已存在项目 => git clone url 2, 拉取代码 => git pull 3,  配置账号密码 git config --global user.email &quo ...

  8. hadoop动态添加删除节点datanode及恢复

    1. 配置系统环境 主机名,ssh互信,环境变量等 本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本ha ...

  9. <记录> PHP 缓存区ob

    介绍: ob是output buffering的简称,输出缓冲区,缓冲区是通过php.ini中的output_buffering变量控制的.其默认值是off,可以设置为on来打开buffer.打来bu ...

  10. microsoft visual c++ 14.0 is required问题解决办法

    方法有两个: 1.绕过pip,手动下载包 2.升级vc 详情参考:https://blog.csdn.net/amoscn/article/details/78215641