在 Shader 中使用四元数
来源:互联网 发布:linux msleep函数 编辑:程序博客网 时间:2024/06/01 19:07
Shader 代码:
vec4 quaternionMul(vec4 q, vec4 r){vec3 qv = q.xyz;vec3 rv = r.xyz;return vec4(cross(qv, rv) + qv * r.w + q.w * rv,q.w * r.w - dot(qv, rv));}vec4 rotate(vec4 q, vec4 p){vec4 c = vec4(-1.0 * q.xyz, q.w);vec4 t = quaternionMul(q, p);return quaternionMul(t, c);}vec3 expand(float halfW, float halfH, vec3 viewRight, vec3 viewUp, float angle, vec3 localPos, mat4 worldMat){vec3 obj = halfW * viewRight + halfH * viewUp;vec3 forward = normalize(cross(viewRight, viewUp));angle = angle/2.0;vec4 p = vec4(obj, 0.0);vec4 r = vec4(forward * sin(angle), cos(angle));vec4 worldPosition = worldMat * vec4( localPos, 1.0 );return worldPosition.xyz + rotate(r, p).xyz;}
具体的主要看:rotate(r, p)
结合:
A Translation for Quaternion 一篇对四元数的翻译
0 0
- 在 Shader 中使用四元数
- 在cocos2d中使用shader
- 在Unity中使用Shader
- Unity Shader 在Shader中使用法线贴图
- 怎么在unity中使用 glsl shader
- cocos2dx中 Node 在shader使用v_texCoord
- 在Cocos2dx 3.10中第一次使用shader
- [Shaders] 在Vertex Shader中使用 tex2D tex2D**
- 在Cocos2d-x 3.0中使用opengl shader
- unity3d 在shader中创建及使用Texture3D
- 在Unity3D中使用Visual Studio调试shader
- [Modern OpenGL系列(四)]在OpenGL中使用Shader
- 在Unity3D中使用Visual Studio调试shader
- 在Unity3D中使用Visual Studio调试shader
- 在Unity3D中使用Visual Studio调试shader
- OpenGL中shader使用
- OpenGL中使用Shader
- OpenGL中shader使用
- Activiti环境搭建详解
- Hibernate----初识
- hdu5512Pagodas+GCD
- 数据科学的完整学习路径—Python版
- Android5.0常用颜色属性
- 在 Shader 中使用四元数
- 剑指offer[6]斐波那契数列
- 第2周项目3 -体验复杂度(1)
- FSG脱壳学习
- asio的学习笔记
- 华为 15
- 2016秋季练习
- 浙大PAT甲级 1115
- 进入Activity停止几秒后直接跳转