ThreeJs-12使用着色器加工材质
一.three框架材质原理与应用
其实three里面所有的材质不管是基础还是点等等之类最终都会编译为shader然后执行,所以如果拿到一个材质我想对某个地方小改一下,那么也是可以用shader来进行修改的

这里用基础材质创建一个平面

通过材质的这个回调就可以拿到他的shader并且里面也有顶点着色器和片段着色器


当然这里面这些定义都不是目前学的,因为这是three自己封装的,要看其源码都可以在这个目录下面找到
像commen就是封装了一些可以快速使用的变量函数等

还比如这个导入就是对position做出了一个封装,可以快速修改位置通过transformed变量

当然如果我们要修改一些参数
因为glsl是字符串,所以需要通过字符串的方法来修改
比如偏移位置


动起来


二.修改物理光照材质制作人物被打效果
先把模型加载进来


继续加载纹理和法相纹理


修改被打效果,核心就是脸扭曲变形
比如让连续旋转180度,PI就是3.14就是180度,注意旋转角度是x轴和z轴同时转


当然要捏造被打的形象,扭曲应该围绕着y轴为角度


开启阴影后发现阴影有点问题

这时候需要调整法相的旋转角度跟刚才保持一致
注意几个问题:法相在前,此时还没有transformed用原始的position
还有就是法相的位置是objectNormal
第三个就是法相前面已经声明了angle这些后面不用在声明直接用



这个问题解决后但是投射到后面的还是不对

对于3D物体有一个方法

首先需要设置一个自定义深度材质

有了这个材质后,跟刚才的材质一样也要去设置旋转角度,只是没有了法相的设置


最后添加来回被打的效果,加上时间器
注意来回要加sin函数


ThreeJs-12使用着色器加工材质的更多相关文章
- CesiumJS PrimitiveAPI 高级着色入门 - 从参数化几何与 Fabric 材质到着色器 - 上篇
目录 0. 基础 0.1. 坐标系基础 0.2. 合并批次 1. 参数化几何 1.1. 几何类清单 1.2. 举例 1.3. 纯手搓几何 1.4. *子线程异步生成几何 2. 使用材质 2.1. 外观 ...
- Unity 渲染教程(二):着色器基础
转载:https://www.jianshu.com/p/7db167704056 这是关于渲染基础的系列教程的第二部分.这个渲染基础的系列教程的第一部分是有关矩阵的内容.在这篇文章中我们将编写我们的 ...
- ThreeJS 物理材质shader源码分析(顶点着色器)
再此之前推荐一款GLTF物理材质在线编辑器https://tinygltf.xyz/ ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib ...
- ThreeJS 物理材质shader源码分析(像素着色器)
再此之前推荐一款GLTF物理材质在线编辑器https://tinygltf.xyz/ 像素着色器(meshphysical_frag.glsl) #define PHYSICAL uniform ve ...
- 【Cesium 颜狗初步】fabric 材质定义与自定义着色器实践
fabric 材质定义:着色器实践 1. 示例代码 贴到沙盒里就可以运行: var viewer = new Cesium.Viewer("cesiumContainer"); v ...
- unity 模型 材质 贴图 关系;着色器属性
模型包含 材质(Material),包括 [核心]着色器(Shader) 贴图和其他参数,贴图也算是一种参数 其他,如网格渲染器(Mesh Renderer).动画.坐标 一个材质可以看做为一个Sha ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader)
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工 ...
- three.js 着色器材质之glsl内置函数
郭先生发现在开始学习three.js着色器材质时,我们经常会无从下手,辛苦写下的着色器,也会因莫名的报错而手足无措.原因是着色器材质它涉及到另一种语言–GLSL,只有懂了这个语言,我们才能更好的写出着 ...
- CesiumJS 2022^ 原理[5] - 着色器相关的封装设计
目录 1. 对 WebGL 接口的封装 1.1. 缓冲对象封装 1.2. 纹理与采样参数封装 1.3. 着色器封装 1.4. 上下文对象与渲染通道 1.5. 统一值(uniform)封装 1.6. 渲 ...
随机推荐
- C++之OpenCV入门到提高005:005 图像操作
一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第五篇文章.这篇文章也不难,介绍如何图像的基本操作,比如:读取一张图片的像素值,如何修改一张图片中的像素值,如何读取一张图片 ...
- 使用yt-dlp下载youtube高清2k 60fps视频
只演示windows下的操作,linux和mac应该差不多的命令行. 首先放上github仓库地址:https://github.com/yt-dlp/yt-dlp 它的介绍: 厉害啊,支持数千个网站 ...
- git cherry-pick 同事代码commit后 如何修改为自己的author
如果有个功能是同事在做,但是做到一半,需要接手帮忙修改或者完成后续,可以切入他的分支 git checkout 分支名称 直接开发,也可以 git checkout -b 新分支名称 这样就完全拥有他 ...
- Docker私有仓库操作----命令行
查看所有镜像 http://10.206.29.162:5000/v2/_catalog {"repositories":["dashboard"," ...
- JDK 7 中的 Fork/Join 模式
轻松实现多核时代的并行计算 随着多核时代的来临,软件开发人员不得不开始关注并行编程领域.而 JDK 7 中将会加入的 Fork/Join 模式是处理并行编程的一个经典的方法.虽然不能解决所有的问题,但 ...
- npm run build命令运行后报错 npm ERR! missing script: build
打开vue项目中的package.json查看一下script的设置,是否如下图 如果是的话,那么运行打包命令的时候要运行 npm run build:prod --report
- SPRING 动态注册BEAN
场景 有些情况下,不能直接使用BEAN的方式: @Bean(name = "storage") public DataSourceProxy storageDataSourcePr ...
- ZCMU-1156
思路: 要改变的是一个范围的情况,所以正常情况下会超时. 查阅后知道应该用一个叫做树状数组的结构. 查阅和树状数组的后续情况 这个也不错 注意: 我没怎么看懂,可能没太仔细看. 树状数组当中存在的是前 ...
- sqlserver配置分发实现主备
方案总体说明 本方案采用"发布-订阅模式" 由主服务器进行发布消息,备份服务器进行订阅 当主服务器数据发生变更时,就会发布消息,备份服务器读取消息进行同步更新,中间过程延迟比较短. ...
- vscode使用github
1, vscode打开terminal,生成RSA密钥,并查看蜜月 PS D:\code\SQL> git init Reinitialized existing Git repository ...