float mix(floatx,float y,float a ) 返回x和y 的线性混合,即x(1-a)+ya

three.js webgl - shader [Monjori]

 <div id="container"></div><script src="js/three.js"></script><script src="js/Detector.js"></script><script id="vertexShader" type="x-shader/x-vertex">varying vec2 vUv;void main(){vUv = uv;vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );gl_Position = projectionMatrix * mvPosition;}</script><script id="fragmentShader" type="x-shader/x-fragment">uniform float time;uniform bool  isoriginColor;uniform sampler2D texture3;uniform sampler2D texture4;varying vec2 vUv;void main( void ) {vec2 position = - 1.0 + 2.0 * vUv;vec4 color3 = texture2D( texture3, vUv );vec3 tarcolor =color3.rgb;float f1 =color3.a;vec4 color4 = texture2D( texture4, vUv );float f2 =color4.a;if(isoriginColor == false){tarcolor =mix(tarcolor.rgb,color4.rgb,f2);}gl_FragColor = vec4(tarcolor,1);}</script><script>if ( ! Detector.webgl ) Detector.addGetWebGLMessage();var container;var camera, scene, renderer;var uniforms;init();animate();function init() {container = document.getElementById( 'container' );camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );scene = new THREE.Scene();var geometry = new THREE.PlaneBufferGeometry( 2, 2 );var textureLoader = new THREE.TextureLoader();uniforms = {time: { value: 1.0 },texture3:{value:textureLoader.load("time1.jpg" )},texture4:{value:textureLoader.load("2.png" )}};var material = new THREE.ShaderMaterial( {uniforms: uniforms,vertexShader: document.getElementById( 'vertexShader' ).textContent,fragmentShader: document.getElementById( 'fragmentShader' ).textContent} );var mesh = new THREE.Mesh( geometry, material );scene.add( mesh );renderer = new THREE.WebGLRenderer();renderer.setPixelRatio( window.devicePixelRatio );container.appendChild( renderer.domElement );onWindowResize();window.addEventListener( 'resize', onWindowResize, false );}function onWindowResize( event ) {renderer.setSize( window.innerWidth, window.innerHeight );}//function animate( timestamp ) {requestAnimationFrame( animate );uniforms.time.value = timestamp / 1000;renderer.render( scene, camera );}</script></body>

```![在这里插入图片描述](https://img-blog.csdn.net/20181017153331250?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhbnJhbjEyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

在这里插入代码片

gl_FragColor = vec4(tarcolor.rgb+color4.rgb,1);

1
2
gl_FragColor = vec4(tarcolor.rgb-color4.rgb,1);

![在这里插入图片描述](https://img-blog.csdn.net/20181017155017578?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhbnJhbjEyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

threejs的shader材质 颜色混合函数mix相关推荐

  1. threejs(webgl)-shader入门教程(1)

    1.shader基本使用 2.shader粒子 shader是什么? shader是一个用GLSL编写的小程序,也就是着色器语言,我们可以通过shader来编写顶点着色器和片元着色器,在WEBGL编程 ...

  2. Cesium自定义shader材质实现逼真水面,支持uniforms属性实时修改

    水的shader代码参考的是Shader - Shadertoy BETA 本文主要解决在cesium的shader中如何实时修改时间变量iTime,从而实现材质的动态变化. MaterialAppe ...

  3. 基于ThreeJS修改模型材质

    基于ThreeJS修改模型材质 示例描述与操作指南 示例效果展示 实现方式 示例描述与操作指南 当前示例用于展示如何在模型上改变构件的材质.材质和几何体构成网格,决定几何体是否像金属,透明与否,是否展 ...

  4. 【 Threejs 】- Shader 着色器实例渲染教程

    着色器在threejs中是一个难点,话不多说,先来看看着色器是什么? 如果您已经有使用计算机绘图的经验,您就会知道在这个过程中您先画一个圆,然后画一个矩形.一条线.一些三角形,直到您组成您想要的图像. ...

  5. 【ThreeJS基础教程-材质纹理篇】3.2 初识基础网格材质MeshStandardMaterial

    初识标准网格材质 学习ThreeJS的捷径 了解材质的基本知识 材质继承关系 常用的通用材质属性 alphaTest的验证和应用 depthTest和depthWrite应用 渲染哪一面Side 常用 ...

  6. WebGL/ThreeJS几何体、材质、纹理贴图,给几何体披上好看的外衣

    1.ThreeJS的常见几何体 BufferGeometry和Geometry有什么不同? 如果你想简单理解BufferGeometry和Geometry有什么不同,就是两者的数据结构不同,缓冲类型几 ...

  7. threejs 热力图做成材质_ThreeJS 热力图

    环境 ThreeJS 107版本 three.min.js OrbitControls.js heatmap.min.js 说明 地球上添加热力图的原理是先生成平面的热力图,绘制在canvas上,再将 ...

  8. 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶

    纹理知识进阶 学习ThreeJS的捷径 如何用一张地板砖贴图制作出地板砖效果 旋转纹理 移动纹理 纹理旋转与移动的应用 简单的光圈效果 简单的流水效果 WebGL项目优化技巧:没必要的细节可以用纹理直 ...

  9. Shader Graph6-点积函数(下)

    一.模拟衣服材料 首先我们来观察下面衣服材质 第一个图是棉毛织物,第二个图是丝绸,m黄线表示表面最高的位置,b蓝线表示表面边缘位置.我们可以看出棉毛织物的m线比较亮,b线比较暗,而丝绸的m线比较暗,b ...

  10. webgl函数 mix

    一.简介 mix函数用于混合两个颜色得到新的颜色.有3个参数分别是颜色1,颜色2,以及混合比例. 二.代码 #ifdef GL_ES precision mediump float; #endifun ...

最新文章

  1. char 转为 int 类型
  2. [译]使用JavaScript来操纵数据视图DataView新建视图的默认值
  3. IT从业者进阶指南:如何提升自身的不可替代性
  4. Druid.io索引过程分析——时间窗,列存储,LSM树,充分利用内存,concise压缩
  5. zookeeper命令行(zkCli.shzkServer.sh)使用及四字命令
  6. 相关系数矩阵计算_corrplot包:相关性矩阵可视化
  7. 一个程序员的郁闷吐槽
  8. 10个提升职场人气de小方法
  9. c语言从栈分配地址函数,C语言 子函数return局部变量和栈地址 机制
  10. 中国孩子的micro:bit:TurnipBit自制小乐器教程实例
  11. Java:获取两个区间内 为周几或星期符合 的所有日期,指定日期 使用周数计算出相对应的工作日
  12. 移动硬盘做PE启动盘的技巧
  13. PowerPoint 在播放时自动运行宏
  14. 工业设计公司在设计时有哪些注意的地方
  15. 老罗(www.luocong.com)
  16. 魅力电子学习考试小笔记
  17. IntellIdea中的jsp中include出现乱码问题
  18. 【2023最新】32个web前端实战项目,练完即可就业,从入门到进阶,基础到框架,你想要的全都有,建议码住!
  19. oracle buys,Aconex - Logiciel de contrôle des projets de construction | Oracle France
  20. 女性月经忽多忽少一定要注意(分享)

热门文章

  1. 【NLP】常见衡量指标(metrics)
  2. CentOS 7.9.2009查看本机IP地址
  3. C语言自学完备手册(02)——变量的声明与定义
  4. 用letax写毕业论文-- 原创性声明、承诺书、授权书
  5. 当游戏遇上电视,智能大屏就能讲出新故事?
  6. 微信小程序例子——点击发送信息清空输入框
  7. 科研绘图 | MATLAB科研绘图之折线图
  8. How to choose the number oftopics/partitions in a Kafka cluster?
  9. 西门子PLC程序调试方法
  10. 基于RSelenium爬取中国裁判文书网文书数据