1.【UE5.1】卡通渲染管线修改 学习笔记(改源码版)
2.华为手机上的rom是什么意思
3.Androidå¼åä¹èçï¼Bluetoothï¼
4.linux å¦ä½è¿è¡ç¼è¯ç¨åº
5.手机刷rom是什么意思的介绍
【UE5.1】卡通渲染管线修改 学习笔记(改源码版)
UE5.1的卡通渲染管线修改笔记
起始于提升MMD制作质量的需求,从C4D的octane到Blender的Eevee和Cycle,再到现在的UE5,探索了各种卡渲方法,包括后处理和自发光。现在转向直接修改源码,溯源码都能查到什么信息回顾过去发现自己的学习路径混乱,缺乏记录,因此决定补写这篇学习笔记,以供参考。
在探索过程中,我借鉴了前辈们在卡通渲染领域的netshop源码成果,通过预加载ToonShaderShadowAtlas和ToonShaderSpecularAtlas两个曲线图谱,以及相应的Sampler和高度参数。添加ShadingModel时,我选择了Toon、ToonSSP和ToonSDF,涉及了阴影重映射、高光重映射,以及整体阴影着色的优化。
对于KajiyaKai高光,我利用Anisotropy作为输入,并通过一个参数控制是littlefs源码否启用。SDF阴影着色方面,尝试将算法内置Shader以解决现有问题,尽管初期尝试受限。扩展GBuffer以适应新增ShadingModel的需求,特别关注了ToonData的处理。
在Material文件夹中,我创建了MaterialExpressionToonShaderCustomOutput,结合ToonCurve选择、环境反射、SDF输入等功能,实现了定制化的源码macd输出。同时,我还注意到了Lumen修正和BackFace方案的选用。
UE5.1版本中,修改CreateToonOutLinePassProcessor是关键步骤,以处理超过个Pass的问题。尽管扩展ShadingModel上限的方案暂未使用,但已做了相关笔记,涉及GBufferInfo、ShaderGenerationUtil和EngineType的改动。
总结来说,本文记录了从理论学习到实践应用的RecordAccumulator源码UE5.1卡通渲染管线修改过程,供后来者参考和学习。
华为手机上的rom是什么意思
ROM是 ROM image的简称,常用于手机定制系统玩家的圈子中. 一般手机刷机的过程,就是将只读内存镜像(ROM image)写入只读内存的过程.下面来说说华为手机上的rom是什么意思. rom的意思是说什么: 华为手机的rom是基于安卓深度定制的EMUI。Emotion UI是华为基于Android进行开发的情感化用户界面。独创的Me Widget整合常用功能,一步到位;快速便捷的合一桌面,减少二级菜单;缤纷海量的主题,何止让你眼花缭乱。触手可及的智能指导,潇洒脱离小白状态。贴心的语音助手,即刻解放你的双手。随时随地,尽情愉悦体验。目前,已超过1亿全球用户。 手机ROM主要指的是手机内部可存储资料、程序、文档的空间,如果有不足的,可通过SD卡,mmd卡等外置卡解决文档存量需求。 而手机RAM主要是指手机的内存,主要针对手机软件运行所需要的缓存堆栈,一般对手机的运行速度有直接的影响。 1、一般手机刷机的过程,就是将手机ROM写入只读内存的过程。 常见的手机ROM有img、zip等格式: 1)前者通常用fastboot程序通过数据线刷入(线刷),故img镜像被称为线刷包; 2)后者通常用recovery模式从sd刷入(卡刷),zip镜像被称为卡刷包。 2、因为Android系统的开放性,所以大多情况下手机ROM都是指代Android系统的各种发行版。一般分为两大类: 1)一种是出自手机制造商官方的原版ROM,特点是稳定,功能上随厂商定制而各有不同; 2)另一种是开发爱好者利用官方发布的源代码自主编译的原生ROM,特点是根据用户具体需求进行调整,使ROM更符合不同地区用户的使用习惯。 以上就是rom的意思是说什么的内容,希望可以帮助到大家。Androidå¼åä¹èçï¼Bluetoothï¼
å¨ä¸ä¸ç¯ä¸æä»ç»äºWifiä¸ç½ç»è¿æ¥å¤çAndroidå¼åä¹WiFiä¸ç½ç»è¿æ¥å¤ç
ä¸é¢ï¼æ¥ç»§ç»è¯´è¯´Androidä¸èççåºæ¬ä½¿ç¨ã
Bluetoothæ¯ç®å使ç¨çæ广æ³çæ 线é讯åè®®ä¹ä¸,主è¦é对çè·ç¦»è®¾å¤é讯ï¼ç±³ï¼ï¼å¸¸ç¨äºè¿æ¥è³æºãé¼ æ å移å¨é讯设å¤çã
å¼å¾ä¸æçæ¯ï¼
android4.2æ°å¢äºé¨åæ°åè½ï¼ä½æ¯å¯¹äºBluetoothçæç人æ许å¼å§å¤´ç¼äºï¼é£å°±æ¯Android4.2å¼å ¥äºä¸ä¸ªæ°çèçåè®®æ éBLEãè°·æåBroadcomä¹é´çåä½ï¼å¼åæ°çèçåè®®æ ï¼å代äºåºäºå æ çBluezãå æ¤å¸åºä¸åºç°äºè设å¤çå ¼å®¹é®é¢ï¼å¾å¤èç设å¤å¨android4.2ææºä¸ä¸è½æ£å¸¸ä½¿ç¨ã
BluetoothAdapterç®åç¹æ¥è¯´å°±æ¯ä»£è¡¨äºæ¬è®¾å¤(ææºãçµèç)çèçéé å¨å¯¹è±¡ã
firstï¼we need permission
è¦æä½èçï¼å è¦å¨AndroidManifest.xmléå å ¥æé
**ä¸é¢æ¥ççå¦ä½ä½¿ç¨èçã **âââ
****Demo已就绪ï¼
è¿åå¼ï¼å¦æ设å¤å ·å¤èçåè½ï¼è¿åBluetoothAdapter å®ä¾ï¼å¦åï¼è¿ånull对象ã
æå¼èç设å¤çæ¹å¼ï¼
1.ç´æ¥è°ç¨å½æ°enable()å»æå¼èçè®¾å¤ ï¼
2.ç³»ç»APIå»æå¼èç设å¤ï¼è¯¥æ¹å¼ä¼å¼¹åºä¸ä¸ªå¯¹è¯æ¡æ ·å¼çActivityä¾ç¨æ·éæ©æ¯å¦æå¼èç设å¤ã
注æï¼1.å¦æèçå·²ç»å¼å¯ï¼ä¸ä¼å¼¹åºè¯¥Activityçé¢ã2.å¨ç®å大å¤æ°Androidææºä¸ï¼æ¯ä¸æ¯æå¨é£è¡æ¨¡å¼ä¸å¼å¯èççãå¦æèçå·²ç»å¼å¯ï¼é£ä¹èççå¼å ³ ,ç¶æä¼éçé£è¡æ¨¡å¼çç¶æèåçæ¹åã
1. æç´¢èç设å¤
使ç¨BluetoothAdapterçstartDiscovery()æ¹æ³æ¥æç´¢èç设å¤
startDiscovery()æ¹æ³æ¯ä¸ä¸ªå¼æ¥æ¹æ³ï¼è°ç¨åä¼ç«å³è¿åã该æ¹æ³ä¼è¿è¡å¯¹å ¶ä»èç设å¤çæç´¢ï¼è¯¥è¿ç¨ä¼æç»ç§ã该æ¹æ³è°ç¨åï¼æç´¢è¿ç¨å®é ä¸æ¯å¨ä¸ä¸ªSystem Serviceä¸è¿è¡çï¼æ以å¯ä»¥è°ç¨cancelDiscovery()æ¹æ³æ¥åæ¢æç´¢ï¼è¯¥æ¹æ³å¯ä»¥å¨æªæ§è¡discovery请æ±æ¶è°ç¨ï¼ã
ç³»ç»å¼å§æç´¢èç设å¤
^( * ï¿£(oo)ï¿£ ) ^ ç³»ç»ä¼åé以ä¸ä¸ä¸ªå¹¿æï¼
2.æ«æ设å¤
3.å®ä¹å¹¿ææ¥æ¶å¨æ¥æ¶æç´¢ç»æ
4.注å广æ
è·åéè¿çèç设å¤
第ä¸æ¥å»ºç«è¿æ¥ï¼é¦å Android sdkï¼2.0以ä¸çæ¬ï¼æ¯æçèçè¿æ¥æ¯éè¿BluetoothSocket建ç«è¿æ¥ï¼æå¡ç«¯BluetoothServerSocketå客æ·ç«¯ï¼BluetoothSocketï¼éæå®åæ ·çUUIDï¼æè½å»ºç«è¿æ¥ï¼å 为建ç«è¿æ¥çæ¹æ³ä¼é»å¡çº¿ç¨ï¼æ以æå¡å¨ç«¯å客æ·ç«¯é½åºå¯å¨æ°çº¿ç¨è¿æ¥ã
ï¼è¿éçæå¡ç«¯å客æ·ç«¯æ¯ç¸å¯¹æ¥è¯´çï¼
两个èç设å¤ä¹é´çè¿æ¥ï¼åå¿ é¡»å®ç°æå¡ç«¯ä¸å®¢æ·ç«¯çæºå¶ã
å½ä¸¤ä¸ªè®¾å¤å¨åä¸ä¸ªRFCOMM channelä¸åå«æ¥æä¸ä¸ªè¿æ¥çBluetoothSocketï¼è¿ä¸¤ä¸ªè®¾å¤æå¯ä»¥è¯´æ¯å»ºç«äºè¿æ¥ã
æå¡ç«¯è®¾å¤ä¸å®¢æ·ç«¯è®¾å¤è·åBluetoothSocketçéå¾æ¯ä¸åçã
1ï¼æå¡ç«¯è®¾å¤æ¯éè¿acceptedä¸ä¸ªincoming connectionæ¥è·åçï¼
2ï¼å®¢æ·ç«¯è®¾å¤åæ¯éè¿æå¼ä¸ä¸ªå°æå¡ç«¯çRFCOMM channelæ¥è·åçã
æå¡ç«¯
éè¿è°ç¨BluetoothAdapterçlistenUsingRfcommWithServiceRecord(String, UUID)æ¹æ³æ¥è·åBluetoothServerSocketï¼UUIDç¨äºå®¢æ·ç«¯ä¸æå¡ç«¯ä¹é´çé 对ï¼
客æ·ç«¯
è°ç¨BluetoothServiceçcreateRfcommSocketToServiceRecord(UUID)æ¹æ³è·åBluetoothSocketï¼è¯¥UUIDåºè¯¥åäºæå¡ç«¯çUUIDï¼ã
è°ç¨BluetoothSocketçconnect()æ¹æ³ï¼è¯¥æ¹æ³ä¸ºblockæ¹æ³ï¼ï¼å¦æUUIDåæå¡ç«¯çUUIDå¹é ï¼å¹¶ä¸è¿æ¥è¢«æå¡ç«¯acceptï¼åconnect()æ¹æ³è¿åã
æ°æ®ä¼ éï¼éè¿ä»¥ä¸æä½ï¼å°±å·²ç»å»ºç«çBluetoothSocketè¿æ¥äºï¼æ°æ®ä¼ éæ éæ¯éè¿æµçå½¢å¼
è·åæµ
该类就æ¯å ³äºè¿ç¨èç设å¤çä¸ä¸ªæè¿°ãéè¿å®å¯ä»¥åæ¬å°èç设å¤---BluetoothAdapterè¿æ¥éä¿¡ã
好å¤ä¸è¥¿æä¹ä¸ç¥éæä¹æè¿°ï¼ä¸é¢ç»åºDemoï¼
å好æåå¦ä¹ çå°ä¼ä¼´é®æListViewæä¹ç¨ï¼é£æå°±ç¨ListViewã
æºç ï¼
RairDemo
GitHub: /Rairmmd/android-demo
Coding: /u/Rair/p/RairDemo/git
linux å¦ä½è¿è¡ç¼è¯ç¨åº
gccæå¤è¾¾å¤ä¸ªåæ°ï¼ç°ä»ç»å¸¸ç¨çå 个ãå¦æå¯¹å ¶ä»åæ°ä¹æå ´è¶£ï¼å¯ä»¥åèï¼man gcc
é¢å å¤çé项
-Eï¼ åªå¯¹æ件è¿è¡é¢å¤çï¼è¾åºç»æå°æ åè¾åº
-Cï¼ åè¯é¢å¤çå¨ä¸è¦ä¸¢å¼æ³¨é.é å`-Eâé项使ç¨.-Pï¼ åè¯é¢å¤çå¨ä¸è¦äº§ç`#line'å½ä»¤.é å`-E'é项使ç¨.
-vï¼ æ¾ç¤ºæ£å¨ä½¿ç¨çgccççæ¬
常ç¨ç¼è¯é项
-c: å°æºç¨åºç¼è¯ä¸ºç®æ 代ç ä½å¹¶ä¸åé¾æ¥çå·¥ä½ï¼ä¸çææç»çå¯æ§è¡æ件ï¼åªçæä¸ä¸ªä¸æºæ件æ件åç¸åç以.o为åç¼çç®æ æ件ã
-Sï¼å°è¿ç¨åºç¼è¯ä¸ºä¸ä¸ªåç¼ä¸º.sçæ±ç¼è¯è¨æ件ï¼ä¸ä¼çæå¯æ§è¡æ件
-xï¼å¼ºå¶ç¼è¯å¨ç¨æå®çè¯è¨ç¼è¯å¨æ¥ç¼è¯æ个æºæ件
gcc -x c++ test.c 表示强å¶ç¨C++ç¼è¯å¨æ¥ç¼è¯cç¨åº
-staticï¼ å¼ºå¶è¿æ¥éæåºï¼è¿è¡æ¶ä¸ä¾èµå¨æåº
-shareï¼ ç¼è¯æ¶å°½é使ç¨å¨æåº
-oï¼ æå®çæçå¯æ§è¡æ件åï¼å¦æ没æ该é项ï¼å¦æçæå¯æ§è¡æ件ï¼é»è®¤æ件å为a.out
ç¼è¯è·¯å¾é项
-i ï¼ æå®ç¹å®å¤´æ件
gcc âc -i /home/zry/test.h test.c
-I<DIR>:ãä¾èµé项ï¼æå®å¤´æ件路å¾
Linuxä¸å¤§å¤æ°å½æ°å°å¤´æ件æ¾å¨/usr/includeç®å½ä¸ï¼å¦æéè¦æå®å ¶ä»è·¯å¾ï¼å¯ä»¥ä½¿ç¨è¯¥é项
gcc âI/home/zry/include âc test.c æ·»å /home/zry/includeå°æ¥æ¾è·¯å¾
-L<DIR> : æå®åºæ件æç´ è·¯å¾ï¼ç¨æ³åä¸
-l<åºå>ï¼æå®ç¹å®åºæ件
gcc âlapp âc test.c
Linuxçåºæ件æä¸ä¸ªçº¦å®ï¼å³ä»¥libå¼å¤´ï¼-lapp表示è¿æ¥libapp.soåºæ件
ç®æ çæé项
-sharedï¼ çæå¨æåº
gcc âshared libtest.so -i /home/zry/test.h test.c
çæéæåºéè¦arå½ä»¤ï¼åé¢è®²è§£
-fPIC: çæå¯ç¨äºå¨æåºçä½ç½®ç¬ç«ä»£ç ãææçå é¨å¯»ååéè¿å ¨å±å移表å®æã
-ansiï¼æ¯æ符åANSIæ åçCç¨åº.
该é项就ä¼å ³éGNU Cä¸æäºä¸å ¼å®¹ANSI Cçç¹æ§,ä¾å¦asm, inlineå typeofå ³é®å以å诸å¦unixåvaxè¿äºè¡¨æå½åç³»ç»ç±»åçé¢å®ä¹å®ã
__asm__, __extension__, __inline__å__typeof__ä»ç¶ææ
使ç¨`-ansi'é项çæ¶å,é¢å¤çå¨ä¼é¢å®ä¹ä¸ä¸ª__STRICT_ANSI__å®.æäºå¤´æ件 å ³æ³¨æ¤å®,以é¿å 声ææäºå½æ°,æè é¿å å®ä¹æäºå®,è¿äºå½æ°åå®ä¸è¢«ANSIæ åè°ç¨;è¿æ ·å°±ä¸ä¼å¹²æ°å¨å ¶ä»å°æ¹ä½¿ç¨è¿äºååçç¨åºäº.
fno-asmï¼æ¤é项å®ç°ansié项çåè½çä¸é¨åï¼å®ç¦æ¢å°asm,inlineåtypeofç¨ä½å ³é®åã
-fno-strict-prototypeï¼åªå¯¹g++èµ·ä½ç¨,使ç¨è¿ä¸ªé项,g++å°å¯¹ä¸å¸¦åæ°çå½æ°,é½è®¤ä¸ºæ¯æ²¡ææ¾å¼ç对åæ°ç个æ°åç±»å说æ,èä¸æ¯æ²¡æåæ°.ègccæ 论æ¯å¦ä½¿ç¨è¿ä¸ªåæ°,é½å°å¯¹æ²¡æ带åæ°çå½æ°,认为没ææ¾å¼è¯´æçç±»å
-fthis-is-varialbleï¼å°±æ¯åä¼ ç»c++çé½,å¯ä»¥ä½¿ç¨thiså½ä¸è¬åé使ç¨
-fcond-mismatchï¼å 许æ¡ä»¶è¡¨è¾¾å¼ç第äºå第ä¸åæ°ç±»åä¸å¹é ,表达å¼çå¼å°ä¸ºvoidç±»å
-funsigned-charï¼
-fno-signed-charï¼
-fsigned-char:
-fno-unsigned-char:
è¿å个åæ°æ¯å¯¹charç±»åè¿è¡è®¾ç½®,å°charç±»å设置unsigned char(å两个åæ°)æè signed char(å两个åæ°)
-imacros file: å°fileæ件çå®,æ©å±å°gcc/g++çè¾å ¥æ件,å®å®ä¹æ¬èº«å¹¶ä¸åºç°å¨è¾å ¥æ件ä¸
-Dmacro: ç¸å½äºCè¯è¨ä¸ç#define macro
-Dmacro=defn: ç¸å½äºCè¯è¨ä¸ç#define macro=defn
-Umacro: ç¸å½äºCè¯è¨ä¸ç#undef macro
-undef: åæ¶å¯¹ä»»ä½éæ åå®çå®ä¹
-M: çææä»¶å ³èçä¿¡æ¯ãå å«ç®æ æ件æä¾èµçæææºä»£ç
-MM: åMä¸æ ·ï¼ä½æ¯å®å°å¿½ç¥ç±#include<file>é æçä¾èµå ³ç³»ã
-MD: -Mç¸åï¼ä½æ¯è¾åºå°å¯¼å ¥å°.dçæ件éé¢
-MMD: å-MMç¸åï¼ä½æ¯è¾åºå°å¯¼å ¥å°.dçæ件éé¢
è¦åé项
fsyntax-onlyï¼æ£æ¥ç¨åºä¸çè¯æ³é误,ä½æ¯ä¸äº§çè¾åºä¿¡æ¯.
-wï¼ç¦æ¢ææè¦åä¿¡æ¯.
-Wno-importï¼ ç¦æ¢ææå ³äº#importçè¦åä¿¡æ¯.
-pedanticï¼æå¼å®å ¨éµä»ANSI Cæ åæéçå ¨é¨è¦åè¯æ;æç»æ¥åéç¨äºè¢«ç¦æ¢çè¯æ³æ©å±çç¨åº.
-Werrorï¼å°ææè¦å转æ¢ä¸ºé误
Werroré项è¦æ±GCCå°ææè¦åå½ä½é误è¿è¡å¤çã
-Wallï¼ æ¾ç¤ºææè¦åä¿¡æ¯
手机刷rom是什么意思的介绍
手机ROM主要指的是手机内部可存储资料、程序、文档的空间,如果有不足的,可通过SD卡,mmd卡等外置卡解决文档存量需求. 今天小编来跟大家说说手机刷rom是什么意思的介绍吧. 怎么刷rom: 手机ROM的意思是一种只读内存镜像,常用于手机定制系统玩家的圈子中。 1、一般手机刷机的过程,就是将手机ROM写入只读内存的过程。 常见的手机ROM有img、zip等格式: ①前者通常用fastboot程序通过数据线刷入(线刷),故img镜像被称为线刷包。 ②后者通常用recovery模式从sd刷入(卡刷),zip镜像被称为卡刷包。 2、因为Android系统的开放性,所以大多情况下手机ROM都是指代Android系统的各种发行版。一般分为两大类: ①一种是出自手机制造商官方的原版ROM,特点是稳定,功能上随厂商定制而各有不同; ②另一种是开发爱好者利用官方发布的源代码自主编译的原生ROM,特点是根据用户具体需求进行调整,使ROM更符合不同地区用户的使用习惯。 以上就是怎么刷rom的内容,你学会了吗,赶快去试试吧。