着色器语言GLSL学习

1 初步尝试

import {
    Scene, WebGLRenderer, OrthographicCamera, PlaneGeometry, ShaderMateria } from 'three.js'

const scene = new Scene()
const camera = new OrthographicCamera(-1,1,1,-1,0.1, 10)

const renderer = new WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)

// 创建一个大小为2 的平面几何容器
const geometry = new PlaneGeometry(2,2)

// 设置着色器材质
const material = new ShaderMaterial()

// 创建网格对象 绘制平面
const plane = new mesh(geometry, material)
scene.add(plane)

//设置相机z轴以便能看到平面,注意范围为0.1 - 10,即远近裁截面
camera.position.z = 1 
renderer.render(scene, camera)

2 颜色随时间改变

const fragmentShader = {
   
	uniform float u_time;
	void main() {
   
		vec3 color = vec3((sin(u_time) + 1.0) /2.0, 0.0, (cos(u_time) + 1.0) /2.0);
		gl_FragColor = vec4(color, 1.0);
	}
}

const uniforms = {
   
	u_time: {
    value: 0.0 }
}

const clock =  new THREE.Clock()

function animate(){
   
	requestAnimation(animate)
	uniforms.u_time.value += clock.getDelta()
	renderer.render(scene, camera)
}

3 混合

用法:mix(a,b,c)
公式:a*(1-c)+b*c, 0<=c<=1

4

相关推荐

  1. 着色语言GLSL学习

    2024-01-19 04:00:03       50 阅读
  2. shader学习记录——几何着色

    2024-01-19 04:00:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 04:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 04:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 04:00:03       87 阅读
  4. Python语言-面向对象

    2024-01-19 04:00:03       96 阅读

热门阅读

  1. net.ipv4.ip_forward

    2024-01-19 04:00:03       56 阅读
  2. Template -- Vue3

    2024-01-19 04:00:03       53 阅读
  3. Backtrader 文档学习-Indicators 开发

    2024-01-19 04:00:03       55 阅读
  4. 速盾网络:高防ip是什么

    2024-01-19 04:00:03       48 阅读
  5. 文件上传报错总结

    2024-01-19 04:00:03       49 阅读
  6. LC674. 最长连续递增序列

    2024-01-19 04:00:03       61 阅读
  7. Fastapi打包exe后无限启动导致死机的解决办法

    2024-01-19 04:00:03       74 阅读