update_position.cg

来自「游戏编程精粹6第中关于粒子的实时流体仿真系统,对入门的游戏开发者很有帮助.」· CG 代码 · 共 34 行

CG
34
字号
#include "sph.cg"

void main(float index : TEXCOORD0,
		  uniform samplerRECT attr_rect : TEXUNIT0,
		  uniform float timestep,
		  out float3 result : COLOR)
{
	float3 pos = f3texRECT(attr_rect, float2(index, GPU_ATTR_POS));
	float3 vel_half = f3texRECT(attr_rect, float2(index,  GPU_ATTR_VELHALF));
	//float3 acc = f3texRECT(attr_rect, float2(index, GPU_ATTR_ACC));
	//float3 exacc = f3texRECT(attr_rect, float2(index, GPU_ATTR_EXACC));
	//float3 gravity = float3(0.0, 0.0, -9.8);
//	float3 gravity = float3(0.0, 0.0, -4.9);
/*
	float3 final_acc = (acc  + gravity - 1.1f*vel);
	float3 mid_acc = 0.5*(final_acc + f3texRECT(attr_rect, float2(index, GPU_ATTR_PUSHACC)));

	float3 new_v = vel + timestep*mid_acc;

	float3 mid_v = 0.5f*(vel + new_v);
	 
	result = pos + timestep*mid_v;
*/
	
	result = pos + timestep*vel_half;
	/*
	float3 final_acc = (acc  + gravity - 0.0f*vel);

	float3 new_v = vel + timestep*final_acc;

	float3 mid_v = 0.5f*(vel + new_v);
	 
	result = pos + timestep*mid_v;*/
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?