water_fragment.cg

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

CG
32
字号
void main(float reflectionFactor : COLOR,
		  float3 incident : TEXCOORD0,
		  float3 N : TEXCOORD1,
		  //float3 incident : TEXCOORD2,

		  out float4 color : COLOR,

//		  uniform float       transmittance,
//		  uniform sampler2D   decalMap,
		  uniform samplerCUBE environmentMap)
{
//	float4 reflectedColor = texCUBE(environmentMap, R);
	//float4 refractedColor = texCUBE(environmentMap, T);

	incident = normalize(incident);
	N = normalize(N);
	float eta_ratio = 1.3;
//	float4 refract_color = texCUBE(environmentMap, refract(incident, N, eta_ratio));
	float4 refract_color = texCUBE(environmentMap, refract(incident, N, eta_ratio).xyz);
//	float4 refract_color = texCUBE(environmentMap, incident);
	float4 reflect_color = texCUBE(environmentMap, reflect(incident, N));

	//color = lerp(refract_color, reflectedColor, 0.2);
	color = lerp(refract_color, reflect_color, reflectionFactor);
//	color = lerp(lerp(refract_color, reflectedColor, reflectionFactor), dot(N, normalize(float3(1, 1, 0))), 0.5);
//	color = lerp(lerp(refract_color, reflect_color, reflectionFactor), dot(N, normalize(float3(1, 1, 0))) + float4(0.1, 0.1, 0.1, 1), 0.5);

	//color = reflectedColor;
	//color += 0.2*dot(N, normalize(float3(1, 1, 0)));
	//color = refract_color;
}

⌨️ 快捷键说明

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