Directx教程(23) 简单的光照模型(2)】的更多相关文章

原文:Directx教程(23) 简单的光照模型(2)    在工程myTutorialD3D11_16中,我在文件light.vs中定义了一个材质光源属性常量缓冲. //const buffer最好为4 float的倍数,否则创建const buffer会fail cbuffer LightMaterialBuffer {     float4 lightPosition; //光源位置     float4 lightColor;  //光源颜色     float4 globalAmbie…
原文:Directx教程(29) 简单的光照模型(8)      现在我们新建一个工程myTutorialD3D_23,在这个工程中,对前面一章的代码进行一些整理: 1.我们在顶点属性中增加材质的的漫反射系数和高光系数,前面我们放在一个光照材质结构中,这样我们能够比较灵活的定义不同顶点的材质属性,当然这也增加了顶点缓冲的大小. struct VertexType { D3DXVECTOR3 position; D3DXVECTOR3 normal; //法向 D3DXVECTOR4 Kd; //…
原文:Directx教程(28) 简单的光照模型(7)        现实生活中的点光源都是随着距离衰减的,比如一个电灯泡在近处会照的很亮,远处光线就很弱.本节中我们在前面光公式的基础上,再给漫反射和高光加上一个衰减因子.       光源随着距离衰减并不是纯线性的,常用的公式是: d 是光源到着色点的距离. kC, kL, 和 kQ 分别是常量.线性以及二次衰减系数. 现在在light.ps中,计算光照的代码变成了:   for ( i = 0; i < NUM_LIGHTS; i++)  …
原文:Directx教程(27) 简单的光照模型(6)      从myTutorialD3D11_15到myTutorialD3D11_19的工程中,我们都只有一个光源,光源的位置在LightClass中我设置为m_position = D3DXVECTOR4(5.0, 5.0, -3.0,1.0),所以我们渲染的cube,在前面,右侧,上面都没有问题,但是,我们通过A键移动摄像机后,会发现右侧的面没有光照效果.这是因为右侧面的法向是-x方向,漫反射光和高光都为0,所以效果很差. 现在我们将在…
原文:Directx教程(26) 简单的光照模型(5)     在前面的工程中,我们都是在vs中实现顶点光照计算,然后再把顶点颜色传到ps中.本章中我们尝试fragment光照(或者说叫ps光照),在vs中,我们把顶点在世界坐标系中的法向和位置都直接传输到ps中.     // 世界坐标系中的顶点法向.     float3 N = mul(input.normal, (float3x3)worldMatrix);     output.worldnormal= N;         //世界坐…
原文:Directx教程(25) 简单的光照模型(4)      在本篇日志中,我们尝试用不带衰减的点光源来计算漫反射颜色.     前面的三个工程,我们都用的是方向光源(directional light),它的特点是没有光源位置或者说光源位置位于无穷远处,且光线在各个方向都是平行的,所以在工程myTutorialD3D11_17中,我们看到的程序界面上,cube每个面上的颜色都是一样的[因为diffuse光占颜色的大部分].     方向光原理可用以下图表示:      现在我们尝试点光源,…
原文:Directx教程(24) 简单的光照模型(3)      在工程myTutorialD3D11_17中,我们重新定义我们的cube顶点法向,每个三角形面的顶点法向都是和这个三角形的面法向是一致的.如下图所示:     在该工程中,我们还修改了CubeModelClass文件,从一个cube.txt文件中读cube顶点位置.法向.纹理坐标.     cube.txt的格式为: Vertex Count: 36 Data: -1.0  1.0 -1.0 0.0 0.0  0.0  0.0 -…
原文:Directx教程(22) 简单的光照模型(1)      在前面的教程中,我们在顶点属性中直接给顶点赋颜色,这样生成的三维物体缺乏真实感,如下图中两个立方体,左边的是通过光照生成物体表面颜色的,右边的则是直接给顶点赋颜色值.      首先,我们学习一下最简单的phong光照模型:       在phong光照模型中,物体表面的颜色由自发射光(emissive).环境光(ambient).漫反射光(diffuse)以及镜面高光(specular)四部分组成,每一部分又是通过物体表面的材质…
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 众所周知,GUI是游戏中不可缺少的元素,这篇文章中,我们首先了解了游戏GUI界面的知识与相关概念,然后一起设计了一个封装好GUI图形界面的C++类.这个类有着非常强的扩展性,使用也是极其方便,很适合二次开发. 先看一张实现的效果图吧:…
[译]Vulkan教程(23)暂存buffer Staging buffer 暂存buffer Introduction 入门 The vertex buffer we have right now works correctly, but the memory type that allows us to access it from the CPU may not be the most optimal memory type for the graphics card itself to…