亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fluidphysics.fx

?? 游戲編程精粹6的光盤源代碼
?? FX
字號:
//=============================================================================
// fluidphysics.fx by Frank Luna (C) 2004 All Rights Reserved.
//
// Contains Techniques:
//
//   -CopyTexTech: Used to copy a D3DFMT_A16B16G16R16F/D3DFMT_G16R16F surface to
//      a D3DFMT_A32B32G32R32F surface.  We have to do this because we need the 
//      16-bit format for alpha blending, but we need the 32-bit format for vertex
//      texture fetch.
//
//   -DisturbTech: Explicitly adds in additional height displacements based on external disturbances.
//
//   -PhysicsTech: Performs the explicit finite difference scheme.
//
//   -CalcTangentsTech: Computes tangent vectors in x- and z- directions.  This needs to be done after
//      the physics simulation is complete (i.e., we compute the tangents of the new grid heights).     
//=============================================================================


//*****************************************************************************
// CopyTexTech

uniform extern texture gHeightMap;
uniform extern texture gTangentMap;

sampler gHeightSmplr = sampler_state
{
    Texture   = <gHeightMap>;
    MinFilter = POINT; 
    MagFilter = POINT;
    MipFilter = NONE;
    AddressU  = CLAMP;
    AddressV  = CLAMP;
};

sampler gTangentSmplr = sampler_state
{
    Texture   = <gTangentMap>;
    MinFilter = POINT; 
    MagFilter = POINT;
    MipFilter = NONE;
    AddressU  = CLAMP;
    AddressV  = CLAMP;
};

void CopyTexVS(float3 posH : POSITION0, out float4 oPosH : POSITION0, out float2 oUV : TEXCOORD0)
{
	// Vertices already specified on the projection window.
	oPosH = float4(posH, 1.0f);
	
	// Transform projection window coordinates, [-1, 1] +y up, to texture coordinates, [0, 1] +y down.
	oUV = float2(posH.x, posH.y) * float2(0.5, -0.5) + 0.5;
}

float4 CopyTexPS(float2 uv : TEXCOORD0) : COLOR
{
	// (r1, 0, 0, 0) + (r2, g, 0, 0) = (r1, r2, g, 0).
	float height   = tex2D(gHeightSmplr, uv).r;
	float2 tangents = tex2D(gTangentSmplr, uv).rg;
	return float4(height, tangents, 1.0f);
}

technique CopyTexTech
{
    pass P0
    {
        vertexShader = compile vs_3_0 CopyTexVS();
        pixelShader  = compile ps_3_0 CopyTexPS();
    }
}


//*****************************************************************************
// DisturbTech

void DisturbVS(float3 posH : POSITION0, out float4 oPosH : POSITION0, out float oHeight : TEXCOORD0)
{
	// Vertices already specified on the projection window.
	oPosH   = float4(posH.x, posH.y, 0.0f, 1.0f);
	oHeight = posH.z;
}

float4 DisturbPS(float height : TEXCOORD0) : COLOR
{
	return float4(height, 0.0f, 0.0f, 1.0f);
}

technique DisturbTech
{
    pass P0
    {
        vertexShader = compile vs_3_0 DisturbVS();
        pixelShader  = compile ps_3_0 DisturbPS();
        
        // f = src * srcBlend + dest + destBlend
        //   = src * 1 + dest * 1
        //   = src + dest (i.e., accumulate the heights)
        AlphaBlendEnable = true;
        SrcBlend = One;
        DestBlend = One;
    }
}


//*****************************************************************************
// PhysicsTech

uniform extern float gStepSizeL; // Step size in local space.
uniform extern float gTexelSize; // Texel size in texture space [0, 1] units.
uniform extern float gK1; 
uniform extern float gK2; // gK1, gK2 and gK3 are precomputed coefficents for
uniform extern float gK3; // explicit finite difference scheme.

uniform extern texture gPrevStepTex;
uniform extern texture gCurrStepTex;

sampler gPrevStepSmplr = sampler_state
{
    Texture   = <gPrevStepTex>;
    MinFilter = POINT; 
    MagFilter = POINT;
    MipFilter = NONE;
    AddressU  = CLAMP;
    AddressV  = CLAMP;
};

sampler gCurrStepSmplr = sampler_state
{
    Texture   = <gCurrStepTex>;
    MinFilter = POINT; 
    MagFilter = POINT;
    MipFilter = NONE;
    AddressU  = CLAMP;
    AddressV  = CLAMP;
};

void PhysicsVS(float3 posH : POSITION0, out float4 oPosH : POSITION0, out float2 oUV : TEXCOORD0)
{
	// Vertices already specified on the projection window.
	oPosH  = float4(posH, 1.0f);
	
	// Transform projection window coordinates, [-1, 1] +y up, to texture coordinates,
	// [0, 1] +y down.
	oUV = float2(posH.x, posH.y) * float2(0.5, -0.5) + 0.5;
}

float4 PhysicsPS(float2 uv : TEXCOORD0) : COLOR
{
	// Zero out boundaries.
	if(uv.x < 0.001f || uv.x > 0.985f || uv.y < 0.001f || uv.y > 0.985f)
		return float4(0.0f, 0.0f, 0.0f, 0.0f);
	else
	{
		// Sample grid points from previous and current time steps.
		float c0 = tex2D(gPrevStepSmplr, uv).r;
		float c1 = tex2D(gCurrStepSmplr, uv).r;
		float t  = tex2D(gCurrStepSmplr, float2(uv.x, uv.y - gTexelSize)).r;
		float b  = tex2D(gCurrStepSmplr, float2(uv.x, uv.y + gTexelSize)).r;
		float l  = tex2D(gCurrStepSmplr, float2(uv.x - gTexelSize, uv.y)).r;
		float r  = tex2D(gCurrStepSmplr, float2(uv.x + gTexelSize, uv.y)).r;
	
		// Return next solution at this grid point.
		return float4(gK1*c0 + gK2*c1 + gK3*(t+b+l+r), 0.0f, 0.0f, 0.0f);
	}
}

technique PhysicsTech
{
    pass P0
    {
        vertexShader = compile vs_3_0 PhysicsVS();
        pixelShader  = compile ps_3_0 PhysicsPS();
    }    
}


//*****************************************************************************
// CalcTangentsTech

float4 CalcTangentsPS(float2 uv : TEXCOORD0) : COLOR
{
	// Zero out boundaries.
	if(uv.x < 0.001f || uv.x > 0.985f || uv.y < 0.001f || uv.y > 0.985f)
		return float4(0.0f, 0.0f, 0.0f, 0.0f);
	else
	{
		float t  = tex2D(gCurrStepSmplr, float2(uv.x, uv.y - gTexelSize)).r;
		float b  = tex2D(gCurrStepSmplr, float2(uv.x, uv.y + gTexelSize)).r;
		float l  = tex2D(gCurrStepSmplr, float2(uv.x - gTexelSize, uv.y)).r;
		float r  = tex2D(gCurrStepSmplr, float2(uv.x + gTexelSize, uv.y)).r;
		
		// r = x-tangent y-coordinate
		// g = y-tangent y-coordinate
		float xtanY = (r - l) / (2*gStepSizeL);
		float ztanY = (t - b) / (2*gStepSizeL);
	
		return float4(xtanY, ztanY, 0.0f, 0.0f);
	}
}

technique CalcTangentsTech
{
    pass P0
    {
        vertexShader = compile vs_3_0 PhysicsVS();
        pixelShader  = compile ps_3_0 CalcTangentsPS();
    }    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品视频在线观看免费| 欧美人与z0zoxxxx视频| 国产精品污污网站在线观看| 欧美一级一区二区| 欧美精品在线视频| 欧洲一区二区三区在线| av不卡在线播放| 色综合久久中文综合久久牛| 欧美在线免费观看亚洲| 欧美三级中文字幕| 91视频免费观看| 精品一区二区在线视频| 日韩综合小视频| 免费欧美在线视频| 麻豆91小视频| 国产美女一区二区| 福利一区在线观看| 91一区二区三区在线观看| 一本一道综合狠狠老| 欧亚一区二区三区| 欧美理论在线播放| 激情欧美日韩一区二区| 99久久久久久99| 欧洲视频一区二区| 福利电影一区二区| 天堂在线一区二区| 亚洲国产精品嫩草影院| 亚洲一区二区三区在线播放| 成人免费看视频| 在线精品视频免费观看| 久久天天做天天爱综合色| 首页国产欧美日韩丝袜| 在线观看91视频| 亚洲一区电影777| 欧美在线一区二区三区| 日韩中文字幕1| 欧美日韩小视频| 日本午夜精品一区二区三区电影| 99re成人精品视频| 在线亚洲人成电影网站色www| 91成人网在线| 国产精品―色哟哟| 日韩精品免费专区| 欧美综合久久久| 国产视频一区二区在线观看| 亚洲成人免费看| 国产米奇在线777精品观看| 欧美色偷偷大香| 中文幕一区二区三区久久蜜桃| 欧美日韩精品久久久| 日本道精品一区二区三区| 欧美一区二区大片| 中文字幕中文字幕在线一区 | 亚洲视频一区二区在线观看| 亚洲第一在线综合网站| 精品一区二区三区在线播放 | 在线观看亚洲a| 日本视频在线一区| 国产精品18久久久久久vr| 欧美日韩精品一区二区三区蜜桃| 91麻豆精品91久久久久久清纯 | 中文字幕国产一区二区| 综合中文字幕亚洲| 爽好久久久欧美精品| 伦理电影国产精品| 欧美精品亚洲一区二区在线播放| 欧美一二三四区在线| 国产欧美一区二区三区在线看蜜臀| 亚洲欧美电影院| 国产不卡在线一区| 日韩精品综合一本久道在线视频| 亚洲精品伦理在线| 国产激情精品久久久第一区二区 | 夜夜嗨av一区二区三区中文字幕| 美国十次综合导航| 欧美性感一区二区三区| 国产精品免费视频网站| 麻豆91小视频| 欧美一区二区三区在线| 亚洲电影一区二区| 色综合久久久久综合体| 国产女人aaa级久久久级| 麻豆精品视频在线观看| 欧美精品xxxxbbbb| 亚洲亚洲人成综合网络| 97精品久久久午夜一区二区三区| 久久伊人蜜桃av一区二区| 蜜桃精品视频在线观看| 制服丝袜成人动漫| 亚洲chinese男男1069| 一本到不卡精品视频在线观看 | 亚洲专区一二三| 91免费观看视频| 中文字幕日韩欧美一区二区三区| 成人免费高清在线观看| 久久久久久久综合| 国产又黄又大久久| 欧美电影免费提供在线观看| 日本免费在线视频不卡一不卡二| 欧美精品久久99久久在免费线| 亚洲在线视频网站| 欧美日韩精品三区| 亚洲成人第一页| 欧美裸体bbwbbwbbw| 日韩国产欧美视频| 国产亚洲精品福利| 成人久久18免费网站麻豆 | 国产寡妇亲子伦一区二区| 国产欧美日韩中文久久| 色又黄又爽网站www久久| 麻豆精品在线播放| 国产精品久久久久婷婷| 宅男噜噜噜66一区二区66| 精品在线亚洲视频| 一个色综合av| 中文字幕+乱码+中文字幕一区| 日韩欧美电影一二三| 亚洲福利一区二区| 欧美男生操女生| 石原莉奈在线亚洲三区| 日韩一级免费观看| 国产一区二区电影| 国产精品久久777777| 91啪亚洲精品| 亚洲地区一二三色| 日韩欧美一区二区视频| 国产一区二区不卡在线| 亚洲欧洲av在线| 91黄视频在线观看| 日本不卡一二三| 国产欧美一区二区精品婷婷| 99久久综合国产精品| 亚洲久草在线视频| 欧美剧在线免费观看网站| 麻豆91在线播放免费| 欧美国产精品v| 欧美综合亚洲图片综合区| 男男视频亚洲欧美| 日本一区二区三区国色天香 | 亚洲综合色噜噜狠狠| 欧美精品高清视频| 国产精品123区| 亚洲狠狠丁香婷婷综合久久久| 在线播放欧美女士性生活| 国产一区美女在线| 中文字幕在线视频一区| 欧美天堂亚洲电影院在线播放| 麻豆一区二区99久久久久| 国产精品视频一二| 欧美精三区欧美精三区| 国产精品18久久久久久久久久久久| 亚洲美女屁股眼交3| 日韩女优视频免费观看| voyeur盗摄精品| 日韩av网站在线观看| 中文字幕欧美区| 欧美精品久久久久久久久老牛影院| 国产一区二区三区高清播放| 尤物视频一区二区| 在线一区二区三区四区五区| 欧美一级黄色大片| 国产精品初高中害羞小美女文| av电影天堂一区二区在线| 欧美日韩成人综合| 国产日韩欧美麻豆| 亚洲一区二区三区激情| 国产一区二区三区观看| 91麻豆国产香蕉久久精品| 欧美午夜精品久久久久久超碰| 91麻豆精品国产91久久久久久久久 | 一级精品视频在线观看宜春院| 欧美一级二级在线观看| 不卡av在线网| 精品亚洲免费视频| 亚洲国产精品一区二区久久恐怖片 | 日韩视频免费直播| 色综合夜色一区| 国产**成人网毛片九色| 男人的j进女人的j一区| 亚洲综合无码一区二区| 国产精品久久久久久久久久久免费看 | 91在线视频18| 国产精品一区二区免费不卡| 日本中文字幕一区| 一区二区三区不卡在线观看| 欧美国产亚洲另类动漫| 精品国产乱子伦一区| 欧美日韩国产成人在线91 | 国产精品久久毛片a| 日韩三级免费观看| 欧美日韩大陆在线| 欧美亚洲动漫精品| 一本大道久久a久久综合| 成人国产精品免费观看动漫| 久久66热偷产精品| 美女尤物国产一区| 热久久久久久久| 天天色 色综合| 午夜精品久久久久久久久| 夜夜爽夜夜爽精品视频|