3090功耗挺高,功耗墙在350W,我原本的1080ti好像是在250W,所以需要稍微折腾一下以节省电费。
首先看一下我这张卡默认情况下的策略
作为给自己的生日和新年礼物,也为了blender在渲染时可以节省更多时间,我买了这块目前能找到的最便宜的3090显卡。
3090作为这代应该是顶级或次顶级消费级显卡,花了10755元,虽然价格比3080标价5499翻倍,纯属智商税,但目前即使是3080售价都飙到8000多,相对来说3090反而更贴近NV官方给出的售价。
另外24G显存是真的没法找对手,3080的10G显存太拉跨,比我1080ti的11G还小,AMD家显存虽然有16G但目前和3080一样都是缺货,在卖的价格也同样没法看,而且没有CUDA和nvenc并不利于某些工作,只适合纯打游戏的人或者要黑苹果的人选择,所以这次虽然嘴上喊着AMD YES却也只能继续用N家的卡。
自本博客的第一篇文章发布以来,已经持续运行了3066天,即8年零8个月,且基本上没怎么断更过,这似乎是我坚持的最久的一件事了。
之后也会继续运行下去,希望可以陪我走完一生,毕竟本质就是一个人生记录blog。
另外作为给自己过期的生日兼新年礼物,我买了一块RTX 3090,会在下一篇文章发些图片出来。和旧卡1080ti的对比评测就不做了,我也懒得把两张卡拆来拆去的,反正就是很快很强就对了。它在blender中的渲染速度有显著提升,这点是我买这张卡的主要目的。
最后祝大家:新年快乐!
看到这张图就忍不住找了个棒球棒P了上去
书接上回,今年依然是单身。
一样是每日处理着公司里琐碎的事情,在家就看看动画和学点知识,最近代码也写得比较少了。
最近在学blender。
最近也买了个Oculus Quest2来玩osu vr版锻炼身体,身上肥肉太多了得减掉点。个人认为osu vr比beat saber更好玩一点,运动量也更大一点。
在淘宝上买了一个改装成USB连接的惠普笔记本红外摄像头,用来实现Windows Hello人脸识别解锁功能,但是它没有外壳,所以需要自己制作一个外壳才能摆在屏幕上面使用。
9月13号,也就是两个月前我买了一台光固化3D打印机,当时买回来只打了官网上给的一个漏斗用于测试,后来直到现在都没有再用过,这段时间里我都在学Blender,就是为了做这个壳子。
最近开始学blender碰到了这样的情况
每次打字都会出现输入的那组拼音的第一个字母留在输入框里的情况,打完几个字还要去删除掉那个字母,非常麻烦
但是我查了查好像没看到有别人碰到这个问题,很迷惑,只能自己改了改各种设置试试看。
最后发现只要在输入法设置里把它改为旧版就正常了
打开这个开关即可,打开后可能会弹出一个反馈app问题为什么要改为旧版,我已经提交了该问题。
一台电脑突然死活连不上梯子,而且部分程序打开https网址会报SSL验证错误,推理了三天终于发现是电脑时间慢了三分钟。奇怪的是Chrome却可以正常打开https网站,难道它里面内置了另一个时钟。
之前碰到一个奇怪的问题,就是一调用 WiFi.begin() 就会整个板子卡住然后触发task wdt,也没别的报错什么的。
经过反复注释各种代码,最后终于发现是因为这一句 ets_update_cpu_frequency(240000000UL) ,这句是用来调整cpu频率的,注释掉了之后wifi就正常了。
后来发现是搞错了参数的单位,这里面填240就可以,单位就是Mhz,而不是hz。
这个小钟已经做好并运行了有1个月了,这也是我第一次用esp8266和arduino ide做的练手项目。目前连续工作测试稳定正常,并且它一直都是以当初拼装出来的姿态在工作,如图:
赛博朋克2020.jpg
这个小钟会在开机和每24小时后连接到windows的ntp服务器对时,mic检测到一定响度的声音后亮起屏幕,安静时10秒后关闭屏幕。本来我想用以前买的一个传感器包里的红外检测模块在检测到人的时候就亮屏的,但是它好像坏了,就用了声控方案。
在Arduino中使用digitalWrite来设置引脚的高低电平其实并不只是做了改变引脚寄存器数据这一件事,所以它的效率并不高,在需要高频输出的场景下就会出现瓶颈。
最近我在写大型LED矩阵屏驱动板的时候就遇到了这样的情况,一轮loop的速度太慢以至于watch dog以为程序死循环了而导致重启。后来我查来查去发现可以通过直接改变寄存器的数据来改变引脚的输出电平,而且官方头文件里其实也有对应的宏可以进行相关操作,但我怎么试都没成功,最后在一个官方demo里发现了一个函数,效率也同样不错,所以抄出来记录一下
1 2 3 4 5 6 7 8 9 |
void ICACHE_RAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) { if(pin < 16){ if(val) GPOS = (1 << pin); else GPOC = (1 << pin); } else if(pin == 16){ if(val) GP16O |= 1; else GP16O &= ~1; } } |
只要调用 __digitalWrite(gpio引脚,0或1) 就可以了。
==========更新===========
把这个函数写成宏可以更进一步提高效率
1 2 3 4 5 6 7 8 9 |
//pin最好为常数,以便编译器优化掉判断 #define __digitalWrite(pin,val)\ if(pin < 16){\ if(val) GPOS = (1 << pin);\ else GPOC = (1 << pin);\ } else if(pin == 16){\ if(val) GP16O |= 1;\ else GP16O &= ~1;\ } |
新版bilibili右键菜单去掉了原本的实用功能视频变速,加上了不常用的功能,音效设定也不知道是不是从ac抄来的。
现在没有右键变速后每次变速鼠标都要移动到播放器右下角的倍速上等待设定条出来再点击,而且底部控制栏有时候是会隐藏的,远没有视频上随处可点的右键菜单快捷,所以写了个油猴脚本又加回了这个功能,从0.5倍开始以0.25倍递增到2倍。
有Tampermonkey插件的可以直接点击上面的链接安装,没有的先安装插件。
本文演示的代码均在这里,本文仅说明原理,不会细化到webgl基础。
最近学会了用WebGL2画球,其实学会也有两个多月了,但由于某些误解一直没法生成正确的贴图映射,导致贴图错乱,直到两周前才突然开窍发现了原因,又拖到今天才来发这么一篇文章。忙里偷闲做事就是效率低下,好在并没有什么迫切需求要做,慢慢学也无所谓。
要用WebGL画球主要就是要先建个球模,然后给它上色或者贴图。要贴图就要搞清楚每个顶点和贴图的坐标映射关系,不同的球模类型映射关系也不一样,我这画的是最容易理解的经纬球,即以地球仪那种经纬线为线框的球体。
接下来开始我们的正题。
先摆一个随便找的经纬球
现在假装看不见经线(竖线),只能看见纬线(横线),那么这个球外面每隔一定的角度就绕着一个正圆,我们生成模型也可以用这种逻辑,首先生成一个正圆,然后把它按角度调整好大小并放到正确的位置上。关于生成一个合适边数的圆的方法我在前一篇文章已经写过了,这里就不再赘述了。