初次接触glsl,写了一个简易版的旋转指南针demo,先上代码:

​
/**
*@param uv      uv
*@param col     color
*@param probe_l 探针长度
*@param probe_w 探针宽度
*@param center  center
*/
vec4 campass(vec2 uv,vec4 col,float probe_l,float probe_w,vec2 center){float half_l=probe_l/float(2);float half_w=probe_w/float(2);float si=sin(iTime*.7);float cs=cos(iTime*.7);// 变换矩阵mat2 trans=mat2(cs,si,-si,cs);// 探针4顶点vec2 dot1=vec2(center.x-half_l,0.);vec2 dot2=vec2(0,center.y+half_w);vec2 dot3=vec2(center.x+half_l,0.);vec2 dot4=vec2(0.,center.y-half_w);// 对4顶点做矩阵变换dot1=dot1*trans;dot2=dot2*trans;dot3=dot3*trans;dot4=dot4*trans;// 向量叉乘,uv同各顶点连线对应向量,叉乘多边形各边,叉乘结果 z 值同正\同负,可判断 uv 坐标在对应多边形内vec3 inner12=cross(vec3(uv-dot1,.0),vec3(dot2-dot1,0.));vec3 inner23=cross(vec3(uv-dot2,0.),vec3(dot3-dot2,0.));vec3 inner34=cross(vec3(uv-dot3,0.),vec3(dot4-dot3,0.));vec3 inner41=cross(vec3(uv-dot4,0.),vec3(dot1-dot4,0.));vec3 inner24=cross(vec3(uv-dot4,0.),vec3(dot4-dot2,0.));//判断探针两头,填充不同颜色if((inner12.z>0.&&inner24.z>0.&&inner41.z>0.)||((inner12.z<0.&&inner24.z<0.&&inner41.z<0.))){return col;}if((inner23.z>0.&&inner34.z>0.&&inner24.z<0.)||((inner23.z<0.&&inner34.z<0.&&inner24.z>0.))){vec4 newcol=col*2.;return newcol;}// 画圈float panel_r=length(uv-center);if(panel_r<half_l+.001&&panel_r>half_l-.001){return vec4(vec3(0.),1.);}return vec4(vec3(1.),1.);
}void mainImage(out vec4 fragColor,in vec2 fragCoord)
{// uv范围(-0.5~0.5)vec2 uv=fragCoord/iResolution.xy-.5;uv.y=uv.y*(iResolution.y/iResolution.x);float cs=cos(iTime*.047),si=sin(iTime*.79);vec4 col=vec4(cs,si,.0,.5);col=campass(uv,col,.4,.05,vec2(.0,.0));fragColor=col;
}​

似乎没有什么好说的,直接看效果图吧:

效果图

shadertoy 实现简易指南针相关推荐

  1. Android传感器的使用开发、简易指南针

    原文链接地址:http://blog.csdn.net/aiynmimi/article/details/48660505 简介 现在每部Android手机里边都会内置有许多传感器,如光照传感器.加速 ...

  2. Android学习笔记-传感器开发之利用传感器和Tween开发简易指南针

    本次我们学习Android传感器的开发,前面已经介绍过了,tween的使用,所以,我们可以结合传感器与tween动画,开发简易的指南针. 首先先介绍一下传感器的相关知识, 在Android应用程序中使 ...

  3. android指南针Demo,谁有安卓简易指南针的DEmo

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.example.fanxian; import android.app.Activity; import android.cont ...

  4. 《信条》过去不可挽回, 未来已成史书(无剧透版)

    昨天去电影院观看诺兰新作<信条>, 脑洞超大, 配合奇妙的剪辑手法, 让观众一脸懵比的同时, 又大呼过瘾~ 本文不涉及人物情节剧透,请放心阅读~ 时间倒带, 万物熵减 在我们生活的世界,如 ...

  5. SensorManager

    光照传感器 Android 中每个传感器的用法其实都比较类似,真的可以说是一通百通了.首先第一步要获取到 SensorManager 的实例 [html] view plain copy Sensor ...

  6. 传感器SensorManager

    光照传感器 Android 中每个传感器的用法其实都比较类似,真的可以说是一通百通了.首先第一步要获取到 SensorManager 的实例 SensorManager senserManager = ...

  7. 传感器之方向:使用加速度传感器和地磁传感器共同实现

    布局很简单: activity: /*** 方向加速度:使用加速度传感器和地磁传感器共同实现.* 此模拟简易指南针功能.*/public class ActOrientationSensor exte ...

  8. 第一行代码——Android pdf

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 下载地址 ...

  9. 《第一行代码Android》笔记

    第1章 开始启程,你的第一行Android代码 1.1 了解全貌,Android王国简介 Android系统是基于Linux 2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示 ...

最新文章

  1. 理顺 JavaScript (17) - 函数
  2. VLC RTP Over TCP
  3. Apache ZooKeeper - 线上系统日志清理
  4. Python 命令行参数
  5. binder,hwbinder,vndbinder之间的关系
  6. 字段缺失_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据
  7. barmanager 不显示_这个双十一,摄影师的显示器该换了
  8. svn: Commit failed (details follow): svn: Authorization failed
  9. MATLAB图像分割系统GUI设计
  10. ABB机器人FOR循环指令
  11. 计算机奖学金用英语怎么说,奖学金证书的翻译,三好学生荣誉证书,优秀学生干部荣誉证书的英语,英语四、六级和计算机证书,辅修证书的英语怎么说, 教学实践单项奖,社会实践单项奖用英语怎么说...
  12. 鸿蒙系统如何进入语音助手,原来华为手机的语音助手还可以这么玩,九个实用技能分享给你...
  13. 电路的基本概念(1) 自学笔记
  14. 知到/智慧树——英语听说:实境主题与技能(参考答案)
  15. 《狂人日记》 词语解释 | 经典语录
  16. 鲸探NFT数字臧品系统开发技术分享
  17. 注册交管12123服务器异常,交管12123提示服务异常怎么解决
  18. 勒索病毒之后 企业文件安全保护如何落到实处?
  19. 2010年软件外包企业排名, 软件外包公司排名2010
  20. UA OPTI544 量子光学2 光与介质相互作用的经典力学方法

热门文章

  1. Service Mesh的未来将与Knative和Apahce Whisk等技术和谐共存——采访RedHat的Istio产品经理...
  2. Linux软件安装失败问题,source.list用了bionic,实际上我的Linux是focal版本
  3. 参考文献格式生成器(GB/T 7714-2015)
  4. 阿里云网盘不限速,公测可预约了!
  5. jenkins配置qq邮箱
  6. JavaWeb核心技术系列教程(23)——JSP标签
  7. PAT/C++甲级题解——图
  8. html轮播鼠标悬停效果,jQuery图片轮播加悬停效果
  9. 二阶边值问题的数值解matlab,《二阶常微分方程边值问题的数值解法》-毕业论文.doc...
  10. linux如何测试IP和端口是否能访问