three+objloader打造爱心歌单效果

代码语言:html

所属分类:三维

代码描述:three+objloader打造爱心歌单效果

代码标签: 歌单 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
html, body {
  overflow: hidden;
}
</style>

</head>
<body translate="no">

<script id="vertexShader" type="x-shader/x-vertex">
uniform float mRefractionRatio;
uniform float mFresnelBias;
uniform float mFresnelScale;
uniform float mFresnelPower;

varying vec3 vReflect;
varying vec3 vRefract[3];
varying float vReflectionFactor;

varying vec2 f_uv;
varying vec3 f_normal;
varying vec3 f_position;
void main() {
	f_uv = uv;
	f_normal = normalize( normalMatrix * normal );
	f_position = position;
	
	vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
	vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
	
	vec3 worldNormal = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );
	
	vec3 I = worldPosition.xyz - cameraPosition;
	
	vReflect = reflect( I, worldNormal );
	vRefract[0] = refract( normalize( I ), worldNormal, mRefractionRatio );
	vRefract[1] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.99 );
	vRefract[2] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.98 );
	vReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), worldNormal ), mFresnelPower );
	
	gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
uniform samplerCube tCube;

varying vec3 vReflect;
varying vec3 vRefract[3];
varying float vReflectionFactor;
	
uniform sampler2D texture;
uniform int u_useTexture;
uniform vec3 u_albedo;
uniform vec3 u_ambient;
uniform vec3 u_lightPos;
uniform vec3 u_lightCol;
uniform float u_lightIntensity;
uniform vec3 CamPos;

varying vec3 f_position;
varying vec3 f_normal;
varying vec2 f_uv;

void main() {
	vec4 color = vec4(u_albedo, 1.0);
	
	if (u_useTexture == 1) {
		color = texture2D(texture, f_uv);
	}
	float d = clamp(dot(f_normal, normalize(u_lightPos - f_position)), 0.0, 1.0);
	float t = clamp(dot(f_normal, normalize(CamPos - f_position)), 0.0, 1.0);
	
	float red = 0.5 + 0.5*(cos(6.28*(t)));
	float green = 0.5 + 0.5*(cos(6.28*(t+0.33)));
	float blue = 0.5 + 0.5*(cos(6.28*(t+0.67)));
	
	vec.........完整代码请登录后点击上方下载按钮下载查看

网友评论0