<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiumaol的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jiumaol</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiumaol]]></copyright><item><title><![CDATA[Shader学习（9）法线和切线空间的定义和变换演示]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/114240457</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/114240457</guid><author>jiumaol</author><pubDate>Sun, 28 Feb 2021 21:39:40 +0800</pubDate><description><![CDATA[不如醉里风吹尽，又是一天未学习。西山日下雨足稀，又是一周未学习。垂死病中惊坐起，又是一月未学习
最近迷上了骑砍，游戏一玩啥都不管，做什么事都意兴阑珊。
一、法线的概念
三维模型是用一个一个的点构成的，在前面的各种空间变换中，对顶点的位置信息进行了各种计算，但是要想构成一个模型光知道顶点的位置信息是不够的，有一个问题就是，如果我们用几个点构成了一个平面之后，我们该怎么确定哪一面是平面的正面？
法线就是为了确定模型的正面是朝向哪里而存在的。法线（normal）是定义一个点的朝向的信息，它是一个矢量信息，所以也被]]></description><category></category></item><item><title><![CDATA[Shader入门（4）坐标系和矢量的概念]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/108269207</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/108269207</guid><author>jiumaol</author><pubDate>Thu, 27 Aug 2020 21:40:41 +0800</pubDate><description><![CDATA[文中多有引用，如有侵权请指出。
坐标系和矢量的概念

笛卡尔坐标系

(1) 在三维游戏的实现中，所有的物体和图像都在笛卡尔坐标系的基础上实现。
(2) 二维坐标系和三维坐标系，这些知识在高中时期就已经学过。需要注意的是，在游戏实现中，坐标轴的指向不是一定的，比如二维坐标系的y轴就可以是从下往上，但是也可以是从上往下，三维坐标系中可以是y轴指向上方，也可以是z轴指向上方。每个图形接口，每个引擎，每个坐标空间中的坐标系都有可能是不一样的，这个在以后的工作中需要逐步熟悉。

二维笛卡尔坐标系

三维笛卡尔坐标系]]></description><category></category></item><item><title><![CDATA[Shader入门（3）性能优化的概念]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/108269165</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/108269165</guid><author>jiumaol</author><pubDate>Thu, 27 Aug 2020 21:36:52 +0800</pubDate><description><![CDATA[文中多有引用，如有侵权请指出。
学习笔记之三：性能优化
一些名词的概念介绍

OpenGL和DirectX

OpenGL和DirectX是图像编程接口，用于渲染二维或者三维图像，架起上层应用程序和底层GPU的沟通桥梁。
我们的应用程序运行在CPU上，应用程序调用图形接口将渲染数据储存在显存中，然后图形接口发出渲染命令，这些命令传递给显卡驱动，被显卡驱动翻译成GPU可以理解的机器语言，进行图形绘制。

着色语言HLSL、GLSL、Cg

着色语言专门用来编写着色器，常见类型有DirectX的HLSL（UE4]]></description><category></category></item><item><title><![CDATA[Shader入门（2）渲染管线的概念]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/108269099</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/108269099</guid><author>jiumaol</author><pubDate>Thu, 27 Aug 2020 21:34:14 +0800</pubDate><description><![CDATA[最近因为工作的需要而学习Unity Shader，为了方便记忆也方便和各位大佬们一起交流，所以把笔记发了出来，有问题的话希望大佬指正。文中多有引用，如有侵权请指出。
一、应用阶段
渲染流水线的第一步是在CPU中进行的，这一步叫做应用阶段(Application)。
应用阶段又分为三个步骤。1.数据加载2.设置渲染状态3.调用DrawCall
1.数据加载
（1）显卡可以更快的读取显存来运算，所以首先要把渲染数据从硬盘加载到显存中。
（2）加载的过程是：硬盘=&gt;内存=&gt;显存
（3）需要准备的场景数]]></description><category></category></item><item><title><![CDATA[Shader入门（1.1）GPU的高并行结构和为什么可以有渲染流水线]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/108269039</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/108269039</guid><author>jiumaol</author><pubDate>Thu, 27 Aug 2020 21:29:03 +0800</pubDate><description><![CDATA[基础知识点
1.CPU和GPU都可以从逻辑上划分为3个模块：控制模块、运算模块、储存模块。
2.控制模块由指令寄存器、指令译码器、操作控制器组成。CPU工作时从内存中读取指令，存放在指令寄存器中，指令译码器分析寄存器的指令如何操作，然后由操作控制器向相应的部件发出控制信号。
3.运算模块接收控制模块的命令执行各种运算，有算数运算（比如加减乘除等基本运算）和逻辑运算（比如逻辑测试或比较两个值）。运算模块的所有动作都是由控制单元的控制信号来进行的，它是个执行部件。
4.储存模块是cpu中暂时存放数据的地方，里面]]></description><category></category></item><item><title><![CDATA[Shader入门（1）渲染流水线的概念]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/108268987</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/108268987</guid><author>jiumaol</author><pubDate>Thu, 27 Aug 2020 21:26:03 +0800</pubDate><description><![CDATA[最近因为工作的需要而强行学习Unity Shader，为了方便记忆也方便和各位大佬们一起交流，所以把笔记发了出来，有问题的话希望大佬指正。
一、渲染流水线的概念
1.简单来说，渲染流水线就是输入一些三维场景等信息生成一张二维的图像。
2.渲染流水线和现代工业中的流水线有相同的设计理念，可以说渲染流水线就是工业流水线在电脑中进行复杂数学计算的版本。




Unity Shader入门精要中的插图
4.渲染流水线的最终目的就是把电脑中的抽象信息呈现到屏幕上，让人眼可以接收。
5.渲染流水线是由CPU和GPU共]]></description><category></category></item><item><title><![CDATA[Shader入门（8）各种坐标空间的定义和变换演示]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/105281257</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/105281257</guid><author>jiumaol</author><pubDate>Thu, 02 Apr 2020 22:43:21 +0800</pubDate><description><![CDATA[文中内容主要参考书籍《unity shader入门精要》，作者为冯乐乐。
该篇建议先浏览前面篇章的渲染流水线部分结合理解。
一、模型空间（model space）
模型空间（model space）在不同的游戏引擎或者是软件中又称作对象空间（object space）或者局部空间（local space）。
在游戏中的每一个模型或者物体都有各自独立的坐标空间，模型有自己的前后左右，这是它的自身属性...]]></description><category></category></item><item><title><![CDATA[Shader入门（7）空间变换的数学原理]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/104826809</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/104826809</guid><author>jiumaol</author><pubDate>Thu, 12 Mar 2020 20:20:45 +0800</pubDate><description><![CDATA[文中内容主要参考书籍《unity shader入门精要》，作者为冯乐乐。
坐标空间的变换是三维图形学中一个绕不过去的知识点，在编写shader的时候经常会用到。在渲染流水线中，我们无法只靠一个坐标空间就完成所有的事情，使用多个坐标空间来表示三维数据既符合了人类在编辑三维场景时对三维的直接感受，也提高了程序在计算各种数据时的运算效率。
一、世界空间
首先需要搞清楚的是，为什么一个空间的原点表示为：
...]]></description><category></category></item><item><title><![CDATA[Shader入门（5）矩阵的基础概念]]></title><link>https://blog.youkuaiyun.com/jiumaol/article/details/104008460</link><guid>https://blog.youkuaiyun.com/jiumaol/article/details/104008460</guid><author>jiumaol</author><pubDate>Thu, 16 Jan 2020 17:30:49 +0800</pubDate><description><![CDATA[Unity Shader入门（五）矩阵的基础概念
文中多有引用，如有侵权请指出。
在三维数学中，矩阵是最为重要的数学概念之一，在整个线性代数的数学世界当中都举足轻重的角色。
一、定义
由m * n 个数a ij 排成的m行n列的数表称为m行n列的矩阵，简称m * n矩阵（matrix）。

这m * n个数称为矩阵A的元素，简称为元，数a ij位于矩阵A的第i行第j列，称为矩阵A的（i，j）元，以...]]></description><category></category></item></channel></rss>