Three.js 热带海洋效果着色器

提示词

PROMPT
1
创建一个热带海洋效果着色器,包含热带海浪、清澈度、阳光透射和热带色彩渐变效果,支持波浪频率和清澈度调节。

效果描述

这是一个模拟热带海洋的效果着色器,通过热带海浪、清澈度和阳光透射效果创造热带海洋的视觉效果。

效果特性

  • 热带海浪:多层海浪效果
  • 清澈度效果:清澈海水效果
  • 阳光透射:阳光穿透海水
  • 热带色彩渐变:基于深度的颜色渐变
  • 明亮感:热带海洋的明亮感

参数调节

参数 默认值 范围 说明
波浪频率 8.0 2.0-15.0 海浪的频率
清澈度 0.6 0.1-1.0 海水的清澈度
阳光强度 0.4 0.1-0.8 阳光的强度
海洋颜色 #00aaff - 海洋的基础颜色

核心代码解析

热带海浪函数

GLSL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
float tropicalWaves(vec2 uv, float time) {
    float waves = 0.0;
    
    // 创建多层海浪效果
    for (int i = 0; i < 3; i++) {
        float layer = float(i) * 0.3;
        float frequency = waveFrequency * (1.0 + layer * 0.5);
        float speed = 1.0 + layer * 0.8;
        
        // 海浪波动
        float wave = sin(uv.x * frequency + time * speed) * 
                   cos(uv.y * frequency * 0.7 + time * speed * 0.6);
        
        waves += wave * (1.0 - layer * 0.3);
    }
    
    return waves * 0.5 + 0.5;
}

清澈度效果

GLSL
1
2
3
4
5
6
7
float clarityEffect(vec2 uv, float clarity) {
    // 创建清澈海水效果
    float clear = sin(uv.x * 25.0 + time * 0.5) * 
                sin(uv.y * 25.0 + time * 0.5) * 0.1;
    
    return clear * clarity;
}

阳光透射效果

GLSL
1
2
3
4
5
6
7
8
float sunTransmission(vec2 uv, float glow) {
    // 模拟阳光穿透海水
    vec2 sunPos = vec2(0.5, 0.3);
    float dist = distance(uv, sunPos);
    float sunEffect = smoothstep(0.3, 0.0, dist) * glow;
    
    return sunEffect;
}

热带色彩渐变

GLSL
1
2
3
4
5
6
7
8
9
10
11
12
vec3 tropicalGradient(float depth) {
    // 热带海水颜色渐变
    vec3 shallowColor = vec3(0.0, 0.8, 0.9);   // 浅水蓝绿色
    vec3 midColor = vec3(0.0, 0.5, 0.7);        // 中层蓝色
    vec3 deepColor = vec3(0.0, 0.3, 0.5);       // 深蓝色
    
    if (depth < 0.4) {
        return mix(shallowColor, midColor, depth / 0.4);
    } else {
        return mix(midColor, deepColor, (depth - 0.4) / 0.6);
    }
}

Uniforms

JAVASCRIPT
1
2
3
4
5
6
7
8
uniforms: {
    time: { value: 0 },
    resolution: { value: new THREE.Vector2(_width, _height) },
    waveFrequency: { value: 8.0 },
    clarity: { value: 0.6 },
    sunGlow: { value: 0.4 },
    oceanColor: { value: new THREE.Color(0x00aaff) }
}

技术亮点

  1. 多层海浪:3层不同频率的海浪
  2. 清澈度:高频sin/cos创造清澈效果
  3. 阳光透射:smoothstep创造阳光效果
  4. 热带色彩:三层颜色mix实现渐变
  5. 明亮感:1.2倍亮度增强明亮感

调试技巧

  1. 波浪频率:影响海浪的频率
  2. 清澈度:控制清澈度的强度
  3. 阳光强度:影响阳光的强度
  4. 蓝绿色主题:适合热带海洋
  5. 明亮感:需要较高的亮度

扩展方向

  1. 热带鱼:添加热带鱼模型
  2. 珊瑚礁:添加珊瑚礁场景
  3. 海底世界:添加海底世界
  4. 阳光效果:增强阳光效果
  5. 海岛场景:添加海岛背景

本文档由 ThreeLab 编辑整理,如需转载,请注明出处。