博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Directx11教程(16) D3D11管线(5)
阅读量:6612 次
发布时间:2019-06-24

本文共 1630 字,大约阅读时间需要 5 分钟。

本章我们学习VS中具体做些什么事情?

首先再看看我们的VS shader代码:

Clolor.vs

PixelInputType ColorVertexShader(VertexInputType input)
{
    PixelInputType output;
   

    // Change the position vector to be 4 units for proper matrix calculations.

    input.position.w = 1.0f;

    // Calculate the position of the vertex against the world, view, and projection matrices.

    output.position = mul(input.position, worldMatrix);
    output.position = mul(output.position, viewMatrix);
    output.position = mul(output.position, projectionMatrix);
   
    // Store the input color for the pixel shader to use.
    output.color = input.color;
   
    return output;

}

    我们现在知道的信息是:MatrixBuffer被UMD放在了video memory中的const buffer,并在VS开始执行的时候被传入shader。

    shader block,通常被叫做CU或者SIMD,它有很多的stream core组成,一般stream core是一个可以执行一维向量(x,y,z,w)浮点计算的单位,一个CU有很多streamcore组成,这个我们OpenCL教程中曾经给过很多图。

在VS中,很多stream core并行执行,每一个stream core处理一个顶点的VS shader计算。

从我们的VS shader代码中,可以知道,它主要做空间转化。

// Change the position vector to be 4 units for proper matrix calculations.

input.position.w = 1.0f;

// Calculate the position of the vertex against the world, view, and projection matrices.

output.position = mul(input.position, worldMatrix);
output.position = mul(output.position, viewMatrix);
output.position = mul(output.position, projectionMatrix);

把顶点从世界坐标系中转化到齐次clip空间中。具体的推导大家可以查询相关资料。

推荐这本书。

注意:clip裁剪空间是一个长方体,

-r <= x <= r (r是窗口宽高比例)

-1 <= y <= 1

f <= z <= n (f,n近平面和远平面距离)。

fig4_4.jpg

   

     另外VS shader还把顶点颜色传到下一个阶段,在我们前面的教程中,我们都是直接给顶点赋颜色值,通常的做法是根据顶点法向和光照来计算颜色,这些代码通常也在VS shader中,在后面的其它教程中,我们也会逐渐学习这些知识。

     VS shader计算出来的顶点会放在一个FIFO中,在D3D11逻辑管线中,下一个stage是RS,其实在大部分硬件中,VS FIFO(不考虑GS,tessellation操作)的内容会传输到一个固定管线称作PA(体元装配),在这个阶段执行透视除法,clip等操作,下一节,我们来学习了解PA的功能。

 

转载地址:http://evaso.baihongyu.com/

你可能感兴趣的文章
Ubuntu制作动态壁纸
查看>>
tcpdump抓包脚本
查看>>
用友U821不能启动服务的问题解决
查看>>
并发连接数、请求数、并发用户数
查看>>
HTML页面设置不缓存
查看>>
跨网段文件和打印机共享的防火墙设置小技巧
查看>>
Java抽象类和接口
查看>>
memcached 安装使用
查看>>
《诗经·邶风·击鼓》
查看>>
CentOS新手必备:Linux vi命令
查看>>
教程:Win10预览版10056如何升级到10061
查看>>
VSS安装使用
查看>>
合并两个不相关的Git仓库
查看>>
Mac OSX操作系统安装和配置Zend Server 6教程(3)
查看>>
缔造程序兼容的契约(ABI)
查看>>
oracle pivot 和 unpivot 函数的使用
查看>>
tomcat
查看>>
assuming drive cache:write through
查看>>
zabbix基础知识
查看>>
【安全牛学习笔记】初识sql注入漏洞原理
查看>>