亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
婷婷成人激情在线网| 亚洲午夜精品17c| 美女脱光内衣内裤视频久久网站| 国产美女一区二区| 精品少妇一区二区三区 | 欧美日韩三级在线| 亚洲欧美国产高清| 91在线免费看| 一级特黄大欧美久久久| 91免费小视频| 午夜欧美视频在线观看| 欧美女孩性生活视频| 日韩综合在线视频| 欧美电影免费观看高清完整版 | 亚洲国产视频一区二区| 欧美色成人综合| 亚洲第一电影网| 欧美一区二区三区四区久久| 日韩精品免费视频人成| 日韩一区二区不卡| 国产91精品露脸国语对白| 国产精品美女久久久久aⅴ国产馆| 99精品久久免费看蜜臀剧情介绍| 亚洲毛片av在线| 欧美一区二区三区成人| 国产精品66部| 亚洲国产精品久久久男人的天堂 | 欧美高清www午色夜在线视频| 美女在线视频一区| 亚洲色图视频免费播放| 欧美一区二区三区四区五区| www.亚洲色图| 免费高清在线视频一区·| 久久欧美一区二区| 欧美视频一区二区三区| 国产一区二区在线观看免费 | 国产午夜精品理论片a级大结局| 成人久久18免费网站麻豆| 亚洲综合999| 国产精品女上位| 91精品国产色综合久久| 欧美性色欧美a在线播放| 成人网页在线观看| 精品一区二区三区视频| 天堂影院一区二区| 一区二区三区av电影| 国产精品不卡视频| 久久久久久久久久电影| 精品免费一区二区三区| 欧美片网站yy| 欧美日韩高清一区二区三区| 色综合中文字幕| 9色porny自拍视频一区二区| 久久疯狂做爰流白浆xx| 美女视频网站久久| 麻豆成人91精品二区三区| 天天综合色天天综合色h| 亚洲成人一区在线| 视频在线在亚洲| 国产成人免费在线视频| 日韩精品免费专区| 激情文学综合丁香| 国产裸体歌舞团一区二区| 国产一区二区福利| 91在线一区二区| 欧美美女激情18p| 日韩欧美国产高清| 国产精品久久久久久久久果冻传媒 | 一区二区三区高清在线| 欧美一二三在线| www.亚洲色图.com| 久久国产精品一区二区| 亚洲伊人伊色伊影伊综合网| 风流少妇一区二区| 毛片av中文字幕一区二区| 久久99久国产精品黄毛片色诱| 国产福利一区二区三区| 成人免费的视频| 欧美无人高清视频在线观看| 欧美色视频在线观看| 久久夜色精品一区| 樱花草国产18久久久久| 极品少妇xxxx精品少妇| 国产黄人亚洲片| 9i看片成人免费高清| 日韩欧美在线影院| 亚洲曰韩产成在线| av成人老司机| 欧美xxxx在线观看| 亚洲精品一二三| 粉嫩绯色av一区二区在线观看| 色婷婷综合在线| 国产精品天天摸av网| 视频一区欧美日韩| 欧美日韩精品一区二区三区四区| 欧美国产精品一区二区三区| 日本人妖一区二区| 欧美日韩在线电影| 一区二区三区在线免费视频| 大白屁股一区二区视频| 欧美精品一区二区在线播放| 日日夜夜精品免费视频| 欧美午夜不卡在线观看免费| 亚洲免费av高清| av在线免费不卡| 亚洲精品日韩专区silk| 99久久精品情趣| 中文字幕一区三区| 99re在线视频这里只有精品| 国产精品私人影院| 色综合久久久久久久久久久| 亚洲欧美日韩国产中文在线| 91一区一区三区| 亚洲风情在线资源站| 日韩视频在线一区二区| 成人午夜激情视频| 国产精品午夜在线| 在线视频一区二区三| 亚洲成人在线观看视频| 日韩午夜激情视频| 不卡的av电影| 日韩1区2区日韩1区2区| 2023国产精品视频| 在线视频国内一区二区| 免费成人结看片| 亚洲色图欧美偷拍| 精品久久一区二区| 色偷偷成人一区二区三区91| 日本va欧美va瓶| 亚洲乱码中文字幕| 精品福利一区二区三区| 色噜噜偷拍精品综合在线| 麻豆精品一区二区三区| 亚洲色图欧美激情| 久久久www成人免费毛片麻豆| 日本精品免费观看高清观看| 国内精品久久久久影院色| 亚洲国产视频在线| 亚洲欧美电影一区二区| 欧美电影影音先锋| 国产乱理伦片在线观看夜一区| 亚洲第一综合色| 亚洲欧美日韩在线| 国产精品区一区二区三区| 精品欧美乱码久久久久久| 欧美一区二区三区四区久久| 欧美日韩免费视频| 久久综合色天天久久综合图片| 欧美日韩国产电影| 欧美精品日日鲁夜夜添| 欧美色欧美亚洲另类二区| 91麻豆免费看片| 欧洲国内综合视频| 欧美日韩国产一区| 日韩午夜电影av| 久久综合久色欧美综合狠狠| 久久久久国产精品免费免费搜索| 久久五月婷婷丁香社区| 国产精品女主播av| 亚洲国产日日夜夜| 国产一区二区三区精品视频| 精品一区二区在线免费观看| 一区二区视频在线| 亚洲欧洲中文日韩久久av乱码| 日韩欧美一区中文| 欧美精品日韩精品| 成人av网站免费观看| 韩国欧美国产一区| 美日韩一级片在线观看| 午夜精品国产更新| 日韩高清在线不卡| 成人综合婷婷国产精品久久蜜臀 | 国产日韩成人精品| 国产精品成人免费精品自在线观看 | 国产成人精品免费一区二区| 91在线无精精品入口| 欧美色图片你懂的| 久久精品一区八戒影视| 亚洲免费观看高清完整| 天堂蜜桃一区二区三区| 成人毛片在线观看| 精品国产一区久久| 亚洲福利视频一区二区| 国产一区二区电影| 欧美一级视频精品观看| 一区二区三区在线观看欧美 | 制服视频三区第一页精品| 亚洲欧美日韩国产中文在线| 国产成人午夜精品5599| 日韩欧美中文字幕精品| 亚洲高清视频的网址| 91麻豆成人久久精品二区三区| 国产精品拍天天在线| 国产一区二区三区观看| 日韩你懂的电影在线观看| 日韩不卡免费视频| 91福利视频在线| 亚洲国产成人av网| 欧美三级在线播放| 午夜精品久久久久久久99樱桃|