<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[孤独de守候的专栏]]></title><description><![CDATA[3D渲染]]></description><link>https://blog.youkuaiyun.com/u010897187</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010897187]]></copyright><item><title><![CDATA[SSAO]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49472797</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49472797</guid><author>u010897187</author><pubDate>Wed, 28 Oct 2015 23:19:25 +0800</pubDate><description><![CDATA[思路SSAO每一帧都将场景视图空间的最近可视点的Normal ,Depth渲染到全屏render target上。然后将render target作为输入计算屏幕上每个像素对应的环境光遮蔽。渲染Normal , Depth创建一张纹理贴图，将其作为RenderTarget格式为DXGI_FORAMT_R16G16B16A16_FLOAT 
RGB用于保存视图空间中的最近可视点的法线坐标。alpha通]]></description><category></category></item><item><title><![CDATA[SkyBox]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49469679</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49469679</guid><author>u010897187</author><pubDate>Wed, 28 Oct 2015 15:48:57 +0800</pubDate><description><![CDATA[Sky天空是位于极远处的，因此我们将天空盒的深度值设置在远截面cbuffer Transform
{
float4x4 WorldViewProj;
};struct VertexIn
{
float3 PosL :   POSITION;
};struct VertexOut
{
float4 PosH :   SV_POSITION;
float3 PosL :   POSITION;
};Ve]]></description><category></category></item><item><title><![CDATA[ShadowMap]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49468571</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49468571</guid><author>u010897187</author><pubDate>Wed, 28 Oct 2015 14:40:04 +0800</pubDate><description><![CDATA[创建阴影分为两步： 
一：以光源为视点，正交投影渲染整个场景，得到深度图（shadow map）并保存变换矩阵。深度图中记录了以光源为视点时，所有的可视点的深度。 
二：以相机为视点渲染场景，对于场景中的每个顶点，将其变换到以光源为视点的空间，若其深度大于shadow map中对应点的深度值，则说明光源射来的光线被物体遮蔽了。则该点处于阴影中由于光源发出的光是平行光，因此我们需要建立一个正交投影矩阵]]></description><category></category></item><item><title><![CDATA[Displacement Map]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49453173</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49453173</guid><author>u010897187</author><pubDate>Tue, 27 Oct 2015 19:55:57 +0800</pubDate><description><![CDATA[Normal Map仅仅提升了光照细节，并没有提升图元细节，Normal Map仅仅只是一种光照技巧。 
Displacement Map可以用于提升图元的细节。位移贴图配合细分可以极大的提升效果。 
Displacement Map通过将顶点沿着法线方向的反方向进行偏移。 
p′=p+s(h−1)p^\prime = p + s(h - 1) 
ss是缩放量，h∈(0,1)h \in (0 , 1]]></description><category></category></item><item><title><![CDATA[Normal Map]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49451311</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49451311</guid><author>u010897187</author><pubDate>Tue, 27 Oct 2015 17:31:22 +0800</pubDate><description><![CDATA[法线贴图是通过扰动法线来产生视觉上的凹凸感 
法线贴图的每个像素保存了切线空间的坐标值 
 
如图所示，T ,B , N构成了切线空间，法线贴图中记录的就是该空间中的坐标 
然而我们的光照计算是在世界空间进行的，所以我们需要知道该点在世界空间中的法线坐标。 
如图所示：假设三角形的三个点为V0V_0 , V1V_1 , V2V_2.对应的纹理坐标为(u0,v0u_0 , v_0) , (u1,v1u]]></description><category></category></item><item><title><![CDATA[Shader Stage]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49308997</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49308997</guid><author>u010897187</author><pubDate>Fri, 23 Oct 2015 18:21:12 +0800</pubDate><description><![CDATA[Programmable StageVertex StageHull StageDomain StageGeometry StagePixel StageCompute StageFixed StageInput Assembler StageRasterizer StageStream Out StageOutput Merger Stage]]></description><category></category></item><item><title><![CDATA[Pipeline System - Shader Reflection]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49278113</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49278113</guid><author>u010897187</author><pubDate>Tue, 20 Oct 2015 15:42:16 +0800</pubDate><description><![CDATA[Shader ReflectionShader的信息可以通过轮询ID3D11ShaderReflection接口获取，该接口也可以获取用于轮询Constant Buffer , Variable , Type信息的接口。通过D3DReflect()函数可以从shader获取其ID3D11ShaderReflection接口以下为从shader中获取ID3D11ShaderReflection的方法：]]></description><category></category></item><item><title><![CDATA[Parameter System]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49188085</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49188085</guid><author>u010897187</author><pubDate>Sat, 17 Oct 2015 00:31:52 +0800</pubDate><description><![CDATA[参数类型enum ParameterType
{
    // 数值
    VECTOR ,
    MATRIX ,
    MATRIX_ARRAY ,    // 资源视图
    SHADER_RESOURCE , 
    UNORDERED_ACCESS ,     CBUFFER ,     SAMPLER ,     ENTITY
}这些都是Shader中的各种参数RenderPa]]></description><category></category></item><item><title><![CDATA[Resource System]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49183125</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49183125</guid><author>u010897187</author><pubDate>Fri, 16 Oct 2015 20:08:22 +0800</pubDate><description><![CDATA[资源类型Resource分为以下几类：enum ResourceType
{
    // Buffer
    RT_VERTEXBUFFER = 0x010000, 
    RT_INDEXBUFFER = 0x020000,
    RT_CONSTANTBUFFER = 0x030000, 
    RT_STRUCTUREDBUFFER = 0x040000, 
    RT_BYTEA]]></description><category></category></item><item><title><![CDATA[Ray Box求交点]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49081497</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49081497</guid><author>u010897187</author><pubDate>Mon, 12 Oct 2015 22:15:20 +0800</pubDate><description><![CDATA[Ray与Box的定义：class Ray
{
    // data member
    Vector3f Origin;
    Vector3f Direction;
}class Box
{
    // data member
    Vector3f Center;    float Extents[3];
    Vector3f Axis[3];
}Box可以看成由三组平面所构成的平]]></description><category></category></item><item><title><![CDATA[Ray Box 碰撞检测]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49076783</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49076783</guid><author>u010897187</author><pubDate>Mon, 12 Oct 2015 17:13:43 +0800</pubDate><description><![CDATA[Box采用OBB定义：enum AxisDefine
{
    X , 
    Y , 
    Z
};// data member 
Vector3f Center;
Vector3f Axis[3];
float extent[3];    // 边长的一半Ray采用参数式Point=Origin+t∗Direction,0≤t≤∞Point = Origin + t * Directio]]></description><category></category></item><item><title><![CDATA[Ray Sphere 求交点]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49031829</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49031829</guid><author>u010897187</author><pubDate>Sat, 10 Oct 2015 22:51:19 +0800</pubDate><description><![CDATA[Ray：// data member
Vector3f Origin;
Vector3f Direction;设Ray的起点OriginOrigin为O(x0,y0,z0)O(x_0 , y_0 , z_0)，DirectionDirection为D(dx,dy,dz)D(dx , dy , dz) 
⎧⎩⎨x=x0+t∗dxy=y0+t∗dyz=z0+t∗dz  
    \begin{equat]]></description><category></category></item><item><title><![CDATA[Ray Sphere 相交测试]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49029931</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49029931</guid><author>u010897187</author><pubDate>Sat, 10 Oct 2015 21:26:11 +0800</pubDate><description><![CDATA[Ray：// data member
Vector3f Origin;
Vector3f Direction;Sphere：// data member
Vector3f Origin;
float Radius;测试Ray Sphere是否相交： 
 
 
球心为O , 光线的起点为A，以点A向球发射切线，设点B为切点 
则当光线在图示的椎体中时，光线与球产生相交 
在椎体之外，则无相交 
并且当]]></description><category></category></item><item><title><![CDATA[视椎体提取]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/49023897</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/49023897</guid><author>u010897187</author><pubDate>Sat, 10 Oct 2015 14:54:44 +0800</pubDate><description><![CDATA[参考：fast extraction viewing frustum planes from world view projection matrix本文主要是记录下视椎体提取的主要方法首先假设我们有一个顶点v=(x,y,z,w=1)\mathbf{v} = (x , y , z , w = 1)和4x4矩阵M=(mij)\mathbf{M}=(m_{ij}),M\mathbf{M}是视图投影矩阵，]]></description><category></category></item><item><title><![CDATA[DirectX 11 填充二维纹理]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/46053357</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/46053357</guid><author>u010897187</author><pubDate>Wed, 27 May 2015 21:36:53 +0800</pubDate><description><![CDATA[最近写程序刚好需要将数据写到二维纹理中，然后显示出来看数据是否正确。以这个笔记小小的记载下    srand( 0 );
    DirectX::XMFLOAT2 data[128 * 128];
    for( int i = 0; i < 128 * 128; i++ )
    {
        data[i].x = rand() / ( float )RAND_MAX;]]></description><category></category></item><item><title><![CDATA[位逆置变换]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/45585265</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/45585265</guid><author>u010897187</author><pubDate>Fri, 08 May 2015 21:31:58 +0800</pubDate><description><![CDATA[将数组int a[] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7};进行位逆置变换变为{0 , 4 , 2 , 6 , 1 , 5 , 3 , 7};变换前二进制表示为：000 , 001 , 010 , 011 , 100 , 101 , 110 , 111变换后：000 , 100 , 010 , 110 , 001 , 101 , 011 , 111代码如下：#inclu]]></description><category></category></item><item><title><![CDATA[那些年的狗血bug-----shadow]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/45035973</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/45035973</guid><author>u010897187</author><pubDate>Tue, 14 Apr 2015 01:58:43 +0800</pubDate><description><![CDATA[看了Directx 11龙书中讲阴影的一章后，自己迫不及待的开始动手写~~ 
于是噼里啪啦一阵之后，代码终于敲完了，于是开始了漫长的调试过程小问题不断不过也很好解决，很快Basic模式和Normal Map模式都能很好的运行~然而，Displacement Map模式下的阴影并非如此~~ 
出现了如下的画面： 
从图中可以发现，柱子的阴影不见了(好吧，从右下角的调试纹理中也能看出来~~ 
于是乎，阴]]></description><category></category></item><item><title><![CDATA[VS生成后事件闲谈]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/45030359</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/45030359</guid><author>u010897187</author><pubDate>Mon, 13 Apr 2015 18:57:28 +0800</pubDate><description><![CDATA[之前写DirectX时，每次都是将shader编译后生成的文件放在$(ProjectDir)(ProjectDir) 
然后再将生成的文件拷贝一份到$(OutDir)(OutDir)中,以便单独运行可执行文件时，可以正确加载shader但是这样太麻烦了~于是乎，想到了VS的生成后事件的功能。于是乎开始尝试下将Shader的生成文件名改为:$(ProjectDir)(ProjectDir)\CSO\%]]></description><category></category></item><item><title><![CDATA[Debug and Release 优化闲谈]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/45029879</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/45029879</guid><author>u010897187</author><pubDate>Mon, 13 Apr 2015 18:05:44 +0800</pubDate><description><![CDATA[今天运行程序的时候，在Release模式下调试了一下，忽然发现奇怪的现象(好吧，是我不懂，所以觉得奇怪~)比如有两个文件: A , B 
当我在Debug模式下调试时，在A文件中添加一个断点，程序运行到这里的时候理所当然的停下了~ 
而我在Release模式下，做相同的事情时，断点却跳到文件B的某处去了~对于此现象百思不得其解~于是乎，问了知乎的大神们，得知是Release优化的原因，于是乎，打开属]]></description><category></category></item><item><title><![CDATA[vector::resize]]></title><link>https://blog.youkuaiyun.com/u010897187/article/details/44999035</link><guid>https://blog.youkuaiyun.com/u010897187/article/details/44999035</guid><author>u010897187</author><pubDate>Sat, 11 Apr 2015 20:59:23 +0800</pubDate><description><![CDATA[今天遇到一个和resize相关的问题，于是就测试了一下~~代码如下：#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <vector>struct Fuck
{    Fuck()  
    {
        std::cout << "调用构造函数" << std::endl;        ZeroMem]]></description><category></category></item></channel></rss>