普通视图
美股三大指数收盘涨跌不一,大型科技股涨跌不一
谷歌投资日本人工智能初创企业Sakana AI
9点1氪丨高铁车厢二氧化碳浓度超标,12306客服回应;中国太空旅游预售票300万一张;五家韩国航司26日起禁止机舱内使用充电宝
今日热点导览
宜家首次支持即时零售
泡泡玛特“星星人情人节限定”系列溢价近7倍
操纵证券市场,余韩被证监会罚没超10亿
理想汽车将关闭部分门店
腾讯通报2025年反舞弊结果:九十余人被解聘
TOP3大新闻
12306客服回应“高铁车厢二氧化碳浓度超标”
近日,一条在高铁二等座车厢内测二氧化碳浓度的视频引发网友热议,视频画面显示:乘客入座前,车厢内二氧化碳浓度在880ppm(百万分之一,浓度单位)左右浮动;乘客入座过程中,二氧化碳浓度已经开始上涨;行驶一段距离后,车厢内二氧化碳浓度已超过2000ppm,此时画面中的多数乘客也已进入睡眠状态。这一现象引发了大量网友的共鸣:难怪一坐高铁就犯困!
据中新经纬报道,一位中国铁路12306客服表示,高铁厢虽然是密闭空间,但在行驶过程中中央空调在保持恒温的前提下会实时更换空气,提供氧气,(所以)即便是长时间行驶乘客也不会出现缺氧的情况。另一位客服则表示,每趟列车在出发以及到站后都会做系统检查,空气方面肯定是没有问题的。至于有乘客检测二氧化碳浓度变高可能确实是因为乘客密度变高。(中新经纬)
中国飞船预售票一张300万
1月22日,北京穿越者载人航天科技有限公司(以下简称“穿越者”)举行“太空旅游全球发布会”。会上,首批太空游客亮相,包括中国工程院院士李立浧、智元机器人CMO邱恒、探路者品牌创始人王静、啟赋资本董事长傅哲宽、青年演员黄景瑜等,目前已预订了超三艘船,合计20余位太空游客,预计2028年将实现载人首飞。(每经报道)
大韩航空等韩国五家航司26日起禁止机舱内使用充电宝
1月23日,大韩航空、韩亚航空、真航空、釜山航空及首尔航空宣布,1月26日起,所有国内及国际航班上均禁止使用移动电源为手机、平板电脑、笔记本电脑、相机等电子设备充电。
据了解,旅客须遵守客舱内关于移动电源携带容量及数量的相关规定,并采取必要措施防止短路。例如,在电极端口粘贴绝缘胶带或将充电宝单独装入塑料袋及独立包装袋中存放。登机后,移动电源必须置于旅客可触及范围内,由旅客随身携带,或放置于前排座椅靠背袋内或前方座椅下方。旅客不可以将其放置在飞机行李架上,以防出现异常征兆时,初期应对延迟从而可能酿成重大事故。(新京报)
大公司/大事件
大连成为东北首个GDP破万亿元城市
辽宁省大连市统计局1月23日发布消息称,2025年,大连市实现地区生产总值10002.1亿元,按不变价格计算,同比增长5.7%。大连市成为东北地区首个GDP突破万亿元城市。(中国新闻网)
79岁特朗普回应左手背再现新瘀青
1月23日,据外媒报道,美国总统特朗普当地时间22日在瑞士达沃斯参加美国主导的所谓加沙“和平委员会”签约仪式时,被拍到左手手背出现一处新瘀青,与他之前右手手背的瘀青类似。特朗普当日对此回应称,他的手“磕到了桌子”,并将容易出现瘀青归因于为保护心脏每日服用大剂量阿司匹林所产生的副作用。(九派新闻)
腾讯集团发布2025反舞弊通报
1月23日,据“阳光腾讯”,2025年全年,腾讯反舞弊调查部共发现并查处触犯“腾讯高压线”案件七十余起,九十余人因触犯“腾讯高压线”被解聘,其中二十余人因涉嫌犯罪被移送公安机关处理,三十余名涉案的外部人员也被公安机关一并抓捕。(九派新闻)
理想汽车将关闭部分门店
理想汽车内部人士1月23日表示,理想汽车后续将关闭一些能效低、扩张期铺开的门店,包括不赚钱的商超门店。“目前处于评估阶段,门店关闭数量不详。”这位内部人士说。(中新经纬)
英特尔CFO:公司正处于“手停口停”的极限状态
1月23日,英特尔公司发布2025年第四季度及全年财报。尽管在营收和每股收益上均超出华尔街预期,但公司对2026年第一季度的业绩指引低于市场普遍预测,导致盘后股价一度重挫。对此,David Zinsner表示公司正处于“手停口停”(hand to mouth)的极限运营状态,“所以我们在客户端内部所做的是,我们专注于中高端,而不那么专注于低端。”这也意味着,在供应受限下,英特尔将进行一些份额调整,优先满足数据中心和高端客户端需求,可能一定程度导致部分中低端市场份额的短期波动。(界面新闻)
泡泡玛特“星星人情人节限定”系列溢价近7倍
1月22日,泡泡玛特发布2026年情人节限定款盲盒“星星人怦然星动”系列,包括毛绒挂件盲盒、搪胶毛绒公仔礼盒、手办等。其中,“星星人怦然星动”毛绒挂件盲盒,包括6个常规款和2个隐藏款,单个盲盒售价为89元,整盒价为534元。潮玩平台得物APP数据显示,该系列毛绒挂件盲盒中的隐藏款“一起白头”和“一起变老”颇受欢迎,成交价均由89元一度最高涨至699元,溢价6.8倍,也是2026年泡泡玛特溢价最高的产品。截至发稿前,“一起白头”的价格为420元,“一起变老”的价格为410元。(界面新闻)
亚马逊计划下周再裁数千人
1月23日,据报道,媒体援引两位知情人士称,亚马逊计划最快于下周启动新一轮裁员,规模达数千人,属于其整体削减约3万名企业员工计划的一部分。消息称,本轮裁员将涉及亚马逊云服务(AWS)、零售、Prime Video以及人力资源等部门,但具体影响范围仍可能调整。亚马逊方面暂未对此发表评论。(界面新闻)
库克热门接班人浮出水面:特纳斯
1月22日,有消息称苹果公司已于2025年最后几个月任命苹果的硬件工程团队领导者约翰·特纳斯(John Ternus)负责领导该公司的设计团队,扩大了他的职责范围。此前,苹果的软件和硬件设计团队由前首席运营官杰夫·威廉姆斯(Jeff Williams)管理,他于2025年从苹果退休。苹果的设计团队负责人直接向公司CEO库克汇报,而特纳斯目前也是库克接班人最有潜力的竞争人选。(第一财经)
特斯拉FSD被传最快于下月在中国获批,特斯拉中国回应
据外媒报道,当地时间1月22日,特斯拉CEO埃隆·马斯克在瑞士达沃斯世界经济论坛上透露,特斯拉需驾驶员监督的FSD(Full Self-Driving)系统预计最快下个月在中国获批,有望与在欧洲获批的时间接近。特斯拉中国有关负责人就此回应称,“没有相关消息可以提供”。该负责人同时表示,特斯拉FSD目前在中国市场推进工作,暂无新进展可以披露。(第一财经)
罚单创“史上最重”,证监会严查私募机构瑞丰达
近日,证监会对浙江瑞丰达资产管理有限公司(以下简称“瑞丰达”)及关联私募机构、实际控制人孙伟等相关责任人员违法违规行为作出行政处罚,共罚没2800余万元,5名责任人员领罚款1300余万元,瑞丰达实际控制人被采取终身证券市场禁入措施。据了解,对瑞丰达相关机构和人员开出的超4100万元的罚单,处罚力度再创“史上最重”。证券监管部门用足用好法律条款,进一步提高违法违规成本,表明了证监会对私募基金严重违法违规行为“零容忍”的态度。(证券时报)
操纵证券市场,余韩被证监会罚没超10亿
1月23日,中国证券监督管理委员会发布〔2026〕1号行政处罚决定书,披露了对自然人余韩操纵“博士眼镜”股票行为的处罚结果。因操纵证券市场,证监会决定没收余韩违法所得约5.11亿元,并处以等额罚款,罚没合计金额超过10.2亿元。(财联社)
宜家首次支持即时零售
近日,全球知名家居品牌宜家家居上线京东秒送,首次推出即时零售服务,覆盖北京、广州、深圳、杭州、成都、武汉、济南、昆明、佛山9城13家门店。消费者在京东APP搜索“宜家秒送”即可线上下单。此举标志着这家以“线下体验+长途配送”为核心的家居巨头,正式切入即时零售赛道。
宜家中国对这次大规模闭店回应称,此次调整是面对快速变化的零售环境作出的主动转型,未来,大店仍然是宜家体验的基石,并将以北京和深圳作为重点市场,在两年内开设超过10家小型门店。(界面新闻)
微软服务中断致Outlook邮箱瘫痪数小时
微软周四表示,正在调查一起服务中断事件。受此影响,北美地区的Office 365系列应用(包括Outlook邮箱服务和Teams即时通讯软件)全天无法正常使用。该公司称,已注意到部分用户无法通过Outlook收发邮件的问题。(新浪财经)
马斯克:星舰今年目标完全复用,进入太空成本将下降100倍
马斯克在达沃斯世界经济论坛上表示,SpaceX希望今年通过“星舰”技术实现火箭完全可重复使用。他指出,这一突破将使进入太空成本降低100倍。此外,马斯克计划在未来几年内发射由太阳能驱动的人工智能卫星,并提及将人工智能部署到太空的展望。(财联社)
立白官旗标错商品价格,购买后被“强制退款”,官方客服回应
1月22日,多位消费者在社交平台投诉,在立白官方旗舰店低价购买的商品遭强制退款,原因系立白方面错标价格,多位消费者质疑品牌方“玩不起”。1月23日,立白官方客服表示,因价格过低,订单无法发出,已为消费者补偿5元现金红包。同日,立白相关负责人向南都·湾财社记者表示,此次问题源于内部运营审核疏漏,对给消费者造成的不便与失望,立白诚恳致歉,公司已启动流程升级,将全面加强价格校验、增加多岗复核,杜绝此类问题。(中国新闻周刊)
白银,涨破100美元
1月24日凌晨,随着地缘政治风险与美元走弱,贵金属继续狂飙,叠加工业需求,现货白银涨超7%,最高报约103美元/盎司,再创历史新高记录,在去年录得耀眼的147%年度最佳涨幅后今年以来延续涨势,本月迄今已涨超40%,多方势头只增不减。令人惊叹的不只是幅度,更是神速——纽约白银自2025年4月的28美元起步,仅用9个多月便一举突破100美元大关,涨幅超260%。(财联社)
丰田过去四年半承担近5.1万亿日元额外成本
丰田汽车1月23日在社交媒体平台X回应媒体报道称,过去几年物价上涨对日本国内汽车产业造成巨大冲击,能源、原材料、物流和劳动力成本均大幅飙升,其零部件供应商已无法以此前价格生产相同的产品。丰田表示,过去四年半,该公司向零部件供应商支付约5.1万亿日元额外成本,“若零部件价格继续上涨,丰田将被迫提高整车价格,这将削弱日本的价格竞争力”。(界面新闻)
四连板*ST长药:收到终止上市事先告知书
36氪获悉,*ST长药公告,公司于2026年1月23日收到深圳证券交易所下发的《事先告知书》,拟决定终止公司股票上市交易。公司2021年至2023年年度报告信息披露存在虚假记载,触及创业板股票上市规则规定的股票终止上市情形。公司有权在规定期限内申请听证或提出书面陈述和申辩。若未在规定期限内提出听证申请,上市委员会将在规定期限后审议是否终止上市。公司股票自1月26日起停牌,退市整理期为十五个交易日,整理期届满次一交易日摘牌。
最高奖励100万元,浙江出台细则,支持举办演唱会、音乐节等
36氪获悉,据浙江发布,近日,浙江省文化广电和旅游厅印发《2026年度浙江省大型营业性演出奖补实施细则》,支持在浙江举办演唱会、音乐节等大型营业性演出活动,鼓励全国唯一站、在浙首演、巡演首站落地浙江。对于将浙江作为全国唯一一站、在浙首演和巡演首站落地浙江的国内外一流演唱会项目,累计售票总人数不低于1.8万人次、售票收入规模不低于1500万元,且省外观众占比超过60%,给予最高50万元奖补;累计售票总人数不低于4万人次、售票收入规模不低于3000万元,且省外观众占比超过65%,给予最高80万元奖补;累计售票总人数不低于10万人次、售票收入规模不低于8000万元,且省外观众占比超过70%,给予最高100万元奖补。
上市进行时
特锐德
36氪获悉,特锐德公告,公司拟发行境外上市外资股(H股)并申请在香港联交所主板挂牌上市。
大普微电子
36氪获悉,证监会网站发布批复,同意深圳大普微电子股份有限公司首次公开发行股票并在创业板上市的注册申请。
AI最前沿
蚂蚁数科与同方全球人寿签约保险AI创新应用
36氪获悉,蚂蚁数科与同方全球人寿签署“保险AI创新应用”合作协议,后续将以人工智能技术为核心,在保险全业务领域深化合作。此前,双方共同研发的智能理赔系统,基于AI智能体与多模态大模型技术,实现材料防伪核验、智能分类、质量检测、上下文语义解析及缺件自动提示、结合保单责任自动审核等核心能力,该系统识别准确率超过99%。测试数据显示,该系统将整体理赔效率提升近一倍,部分简易案件可实现从提交、审核到赔款到账的全流程一小时办结。
OpenAI已敲定广告商名单,并在广告上线前公布关键细节
据两位知情人士透露,OpenAI已开始向数十家广告主推出其全新的聊天机器人广告业务。知情人士称,该公司初期将按广告曝光量计费,而非谷歌、亚马逊等大型搜索广告平台普遍采用的按广告点击量计费模式。(新浪财经)
大公司财报
招商银行:2025年净利润1501.81亿元,同比增长1.21%
36氪获悉,招商银行发布2025年度业绩快报。报告显示,2025年实现营业收入3375.32亿元,同比微增0.01%;归属于本行股东的净利润1501.81亿元,同比增长1.21%。
航天机电:预计2025年净亏损3.90亿元-5.80亿元
36氪获悉,航天机电发布2025年业绩预告。报告显示,预计2025年度归属于上市公司股东的净利润为亏损3.90亿元到5.80亿元。业绩预亏主要因光伏产业受行业产能过剩、竞争加剧、限电及电价机制调整影响,量价齐跌;汽配产业面临客户需求不及预期及铝价上涨压力;同时光伏业务盈利能力下降,计提资产减值准备。
宝洁第二财季净销售额222亿美元,同比增长1%
当地时间1月22日,宝洁公司发布2026财年第二季度(2025年10-12月)财报。财报显示,第二财季净销售额为222亿美元,同比增长1%;摊薄后每股净收益为1.78美元,同比下降5%。该公司维持2026财年总销售额同比增长1%至5%的指引区间,将2026财年摊薄后每股净收益增长指引从原先的3%-9%调整至1%-6%。(界面新闻)
Mobileye第四财季营收同比下降9%
当地时间1月22日,Mobileye公布截至2025年12月27日的2025财年第四季度及全年财报。财报显示,2025财年全年营收同比增长15%,达18.94亿美元;第四季度营收同比下降9%。该公司预计,2026财年全年营收将实现同比持平至5%的增长,其中2026财年第一季度营收预计同比增长约19%。(界面新闻)
投融资
具微科技宣布完成近亿元A轮融资
36氪获悉,杭州四足机器人企业“具微科技”宣布完成近亿元A轮融资。本轮融资由正强股份领投,壹连科技、见素资本、鲁信创投跟投(排名不分先后)。本轮融资将用于产品研发生产、团队建设,以及应用场景拓展与生态构建等方面。
日本人工智能创企Sakana AI宣布获谷歌投资,建立合作关系
1月23日,日本人工智能创企Sakana AI宣布与谷歌达成战略合作,并获后者投资。Sakana AI表示,将在其技术和产品开发中充分利用包括Gemini和Gemma在内的谷歌前沿模型。(界面新闻)
因势新材完成数千万元天使轮融资
36氪获悉,近日,“因势新材”完成数千万元天使轮融资。本轮融资由奇瑞集团的风险投资(CVC)平台瑞丞基金领投,淡马锡旗下的风险投资机构祥峰投资、安徽省国有资本运营控股集团旗下国控投资公司跟投,小米战投继续追加投资。本次所融资金将重点投入于产能扩建和技术迭代中。
整理|徐子欣
【节点】[InstanceID节点]原理解析与实际应用
在Unity引擎的渲染管线中,GPU实例化是一项重要的性能优化技术,它允许在单个绘制调用中渲染多个相同的网格,显著减少了CPU到GPU的数据传输开销。在URP(Universal Render Pipeline)的Shader Graph中,InstanceID节点扮演着关键角色,它为开发者提供了访问每个实例唯一标识符的能力。本文将深入探讨InstanceID节点的各个方面,包括其工作原理、应用场景、使用技巧以及实际示例。
InstanceID节点的基本概念
InstanceID节点是Shader Graph中的一个特殊功能节点,它返回当前正在渲染的几何体实例的唯一标识符。这个标识符在GPU实例化过程中由Unity引擎自动分配和管理。
当Unity使用GPU实例化技术渲染多个相同网格时,每个实例都会获得一个独一无二的Instance ID。这个ID从0开始递增,对应于绘制调用中每个实例的索引位置。理解这一点对于正确使用InstanceID节点至关重要。
InstanceID节点的输出是一个浮点数值,代表当前实例的标识符。在非实例化渲染情况下,这个值始终为0。需要注意的是,当使用动态实例化时,实例ID在不同帧之间可能不会保持一致,这意味着开发者不应该依赖实例ID在多个帧之间的持久性。
InstanceID节点的工作原理
![]()
要深入理解InstanceID节点,首先需要了解GPU实例化的基本机制。GPU实例化允许在单个绘制调用中渲染多个相同的网格,每个实例可以有不同的变换矩阵、颜色和其他属性。Unity通过实例缓冲区(Instance Buffer)将这些每实例数据传递给着色器。
在着色器执行过程中,系统会为每个实例分配一个唯一的索引,这就是Instance ID的来源。InstanceID节点本质上就是访问这个内置的着色器变量unity_InstanceID。
在HLSL代码中,InstanceID节点的实现大致如下:
HLSL
void Unity_InstanceID_float(out float Out)
{
Out = unity_InstanceID;
}
当在Shader Graph中使用InstanceID节点时,这个内置变量会被自动包含在生成的着色器代码中。Unity的渲染管线负责在实例化绘制调用时正确设置这个值。
InstanceID节点的端口配置
InstanceID节点的端口配置相对简单,只有一个输出端口:
输出端口(Out)提供当前实例的ID值,数据类型为浮点数(Float)。这个端口不需要任何绑定,因为它的值是由渲染管线自动提供的。
虽然输出类型显示为浮点数,但实际使用时,实例ID通常是整数值。在Shader Graph中,我们可以通过适当的节点将其转换为整数,或者直接作为浮点数使用,具体取决于应用场景。
InstanceID节点的应用场景
InstanceID节点在Shader Graph中有多种应用场景,以下是几个常见的用例:
- 实例差异化:通过Instance ID为每个实例生成不同的颜色、大小或外观,即使它们使用相同的网格和材质。例如,在渲染一片森林时,可以使用Instance ID为每棵树生成略微不同的颜色和大小,增加场景的自然感。
- 程序化动画:利用Instance ID为每个实例创建不同的动画效果。例如,在渲染一群鱼时,可以使用Instance ID控制每条鱼的游动相位,使鱼群运动更加自然。
- 数据索引:使用Instance ID作为索引,从纹理或数组中查找对应的数据。这在需要为每个实例应用不同贴图或参数时特别有用。
- 随机值生成:将Instance ID作为随机数生成的种子,为每个实例创建可预测的随机值。这种方法确保同一实例在不同帧中保持一致的随机行为。
- 调试和可视化:在开发过程中,使用Instance ID可视化不同的实例,帮助调试实例化相关的问题。
使用InstanceID节点的注意事项
在使用InstanceID节点时,有几个重要事项需要注意:
- 实例化启用条件:InstanceID节点只有在真正使用GPU实例化时才会返回有意义的非零值。确保材质和渲染设置正确启用了GPU实例化。
- 动态实例化的不稳定性:当使用动态实例化时,实例ID在不同帧之间可能不一致。避免依赖实例ID的持久性进行跨帧的状态管理。
- 性能考虑:虽然访问InstanceID本身开销很小,但基于它的复杂计算可能会影响性能。在移动平台等性能受限的环境中要特别小心。
- 最大值限制:实例ID的取值范围受限于绘制调用中的实例数量。在极少数情况下,如果实例数量超过一定限制,可能需要考虑替代方案。
- 与非实例化渲染的兼容性:在非实例化渲染情况下,InstanceID始终返回0。确保着色器在这种情况下也能正确工作。
InstanceID节点与其他节点的配合使用
InstanceID节点通常需要与其他Shader Graph节点配合使用才能发挥最大效用:
与数学节点结合,可以通过简单的运算将Instance ID转换为更有用的值范围。例如,使用取模运算将Instance ID限制在特定范围内。
与纹理节点配合,可以使用Instance ID作为UV坐标或纹理数组的索引,实现每个实例使用不同纹理的效果。
与随机节点结合,可以将Instance ID作为随机种子,生成每个实例特有的随机值,同时保证这些值在帧间保持一致。
与时间节点配合,可以创建基于Instance ID的相位偏移动画,使多个实例的动画效果错开,增加视觉多样性。
实际示例:创建实例化颜色变化效果
下面通过一个具体示例演示如何使用InstanceID节点为实例化对象创建颜色变化效果:
首先在Shader Graph中创建InstanceID节点,然后将其连接到Color节点的各个通道。通过适当的数学运算,可以将Instance ID映射到不同的颜色范围。
一个常见的做法是使用正弦函数基于Instance ID生成平滑的颜色变化:
HLSL
// 伪代码示例
float hue = (InstanceID * 0.1) % 1.0;
float3 color = HSLtoRGB(hue, 1.0, 0.5);
在Shader Graph中,可以通过以下节点连接实现类似效果:
- 将InstanceID节点连接到Multiply节点,乘以一个小数(如0.1)控制颜色变化速率
- 将结果连接到Fraction节点,取小数部分确保值在0-1范围内
- 使用这个值作为HDR Color节点的Hue输入
这种方法可以为每个实例生成独特但协调的颜色,非常适合用于创建大规模的对象群组,如草地、人群或星空。
实际示例:实例化动画偏移
另一个实用示例是使用InstanceID节点为实例化对象创建动画偏移:
假设我们有一组使用相同动画的实例,但希望它们的动画相位不同,避免所有实例完全同步运动。可以通过以下步骤实现:
将InstanceID节点连接到Multiply节点,乘以一个控制相位间隔的值。然后将结果添加到时间变量上,作为每个实例的个性化时间输入。
在Shader Graph中的具体实现:
- 创建Time节点获取着色器时间
- 创建InstanceID节点获取实例标识
- 使用Multiply节点将InstanceID乘以一个小的相位值(如0.2)
- 使用Add节点将时间与相位偏移相加
- 将这个个性化时间用于驱动动画计算
这种方法可以创建更加自然和有机的动画效果,特别适用于群体动画,如鸟群、鱼群或摇摆的植物。
性能优化与最佳实践
为了确保使用InstanceID节点的着色器具有良好的性能,可以遵循以下最佳实践:
- 尽量减少基于InstanceID的复杂计算,特别是在片段着色器中
- 尽可能在顶点着色阶段完成基于InstanceID的计算,而不是在片段着色阶段
- 使用适当的精度修饰符,在保证质量的同时减少计算开销
- 在移动平台上,测试使用InstanceID的着色器性能,确保不会造成帧率下降
- 考虑使用其他实例化技术,如GPU实例化属性块,对于大量不同的实例数据
常见问题与解决方案
在使用InstanceID节点时,可能会遇到一些常见问题:
如果InstanceID始终返回0,首先确认是否真正启用了GPU实例化。检查材质的Inspector窗口,确保"Enable GPU Instancing"选项已勾选。同时确认是通过Graphics.DrawMeshInstanced或类似的实例化API进行渲染。
如果实例化对象的颜色或行为不符合预期,检查基于InstanceID的计算是否正确。特别注意数值范围和精度问题,确保计算不会导致意外的截断或溢出。
当遇到性能问题时,使用Unity的Frame Debugger分析绘制调用和实例化情况。确认实例化确实按预期工作,并且没有意外的批处理中断。
【Unity Shader Graph 使用与特效实现】专栏-直达 (欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)
理财学习笔记(一):每个人必须自己懂理财
序言
我打算系统性整理一下这几年投学习投资理财的心得。因为一方面通过总结,可以让自己进一步加深对投资的理解。另一方面我也想分享给同样想学习理财的读者们。
我的女儿虽然还在读小学,但我也给她报了一个针对小学生的财商课。她对理财非常有兴趣,我也想通过这一系列的文章,给她分享她爸爸的理财成长经历。
这是这是本系列的第一篇,主题是每个人必须自己懂理财。
我身边的案例
我是 80 年代出生的,不得不说,我所处的是那个年代是缺乏理财和财商教育的。因此,我发现我身边的人大多不具备优秀的理财能力。
下面我举几个身边朋友的真实例子。
朋友 A:
他都把挣到的钱存银行定期或者余额宝。但是在现在这个年代,收益率是非常低的,只有一点几。但是他非常胆小,怕买其他的产品会导致亏损,所以说不敢碰。
朋友 B:
朋友 B 买了很多基金。但是他胆子很小,每个只买 1000 - 5000 块钱。然后账户里面有着几十只基金。既看不过来,也不知道应该如何操作。
唯一好的一面是:不管任何行业有行情,他都有一只基金命中。这让他的错失恐惧症(FOMO)小了很多。
朋友 C:
我这个朋友之前在快手上班,在 P2P 盛行的年代,把自己的所有积蓄都投在 P2P 上,最后爆雷,损失惨重。
朋友 D:
这个朋友通过另外一个朋友了解到有一个股票正在做庄阶段,未来会大涨,于是就听信买入,最后损失了 90%。
朋友 E:
朋友 E 的大学同学有一个在香港卖保险,于是听朋友的推荐在香港买了很多保险。但是过了 5 年,他发现收益率和最初承诺的相差非常大。这个时候看合同才发现,合同上写的收益测算并不保证。但是现在赎回的话,只能拿到非常少的本金,所以他只能继续硬着头皮每年交钱。
只有理解才能有效持有
听完上面几个朋友的故事,你身边有类似的朋友吗?
我跟一些朋友交流,我问他们,你们为什么不自己先学习投资理财的知识,之后再去做相关的操作呢?他们很多回答说,这个事情太专业了,专业的事情交给专业的人做就可以了。
当我反问他们:假如你买了一个专业人士管理的基金,那你对他的信仰来自于哪呢?你其实对他每个月发的报告并没有完全的判断能力,你只能选择相信他。
大多数时候,你其实相信的是他过去的业绩。如果它连续三年、连续五年一直都盈利,或者有超额收益,你就会持续持有它,甚至买入更多。
如果它连续几年亏损或者某一年大额亏损,你就会质疑它,甚至赎回它。
你的信心其实就是来源于过去的业绩表现。那这和散户的追涨杀跌有什么本质区别呢?
在你持仓持续下跌的那些时间,你能睡好觉吗?如果你不能理解它,那显然不能。
所以我说,每个人必须懂投资理财。
只有你深刻理解了你买入的是什么,才能在它下跌的时候有信心继续持有它,甚至抄底,才能睡得着觉。
小结
每个人都必须懂理财。因为银行的定期存款利率太低,而其他理财产品都需要深刻理解,才可能做到长期持有。
另外,社会上充斥着像 P2P 一类的产品,以及宣传这类产品的巧舌如簧的销售。他们不断地诱惑着我们,如果我们没有辨识能力,也可能将自己辛苦一辈子挣到的钱损失掉。
以上。
🚀 纯前端离线局域网P2P大文件断点传输:别让你的照片墙崩了
前言:小明和他的照片墙危机
想象一下,你是小明,一个热爱摄影的程序员。周末去爬山拍了一堆4K高清照片,总共3GB,准备发给老婆分享。微信传?算了,压缩后画质渣得像像素风。网盘?离线状态下连不上。蓝牙?慢得像蜗牛在跑步。你急得团团转,突然灵机一动:用电脑直接传啊!可是怎么在浏览器里实现局域网P2P大文件传输,还得支持断点续传?别急,今天咱们就聊聊这个技术方案。
技术背景:P2P不是什么新鲜玩意儿
P2P(点对点)传输在局域网里其实挺常见的,BT下载就是经典案例。但咱们今天聊的是纯前端实现,意思是完全不用后端服务器,用户A直接把文件传给用户B。核心技术是WebRTC(Web Real-Time Communication),这货本来是用来视频聊天的,但咱们可以拿来传文件。
为什么选WebRTC?因为它支持数据通道(DataChannel),可以直接在浏览器间建立连接。加上File API和Blob,咱们就能把大文件切成小块,边传边收,断点续传自然就出来了。
核心实现:分块传输 + 断点续传
1. 文件切块:大象塞冰箱,得先切成块
浏览器处理大文件有个硬伤:内存限制。如果直接把3GB文件读进内存,Chrome得哭爹喊娘。所以咱们用FileReader分块读:
// 文件分块函数
function chunkFile(file, chunkSize = 1024 * 1024) { // 1MB每块
const chunks = [];
let offset = 0;
while (offset < file.size) {
const chunk = file.slice(offset, offset + chunkSize);
chunks.push(chunk);
offset += chunkSize;
}
return chunks;
}
这里用file.slice()切块,每个块1MB。为什么要1MB?平衡传输效率和内存占用,太小网络开销大,太大浏览器卡。
2. WebRTC连接:建立地下通道
WebRTC连接需要信令服务器(用来交换连接信息),但咱们是离线局域网,所以可以用WebSocket或者直接用浏览器本地存储交换SDP(会话描述协议)。
// 创建RTCPeerConnection
const pc = new RTCPeerConnection({
iceServers: [] // 局域网不需要STUN服务器
});
// 创建数据通道
const dataChannel = pc.createDataChannel('file-transfer');
// 监听连接事件
dataChannel.onopen = () => console.log('通道开了,可以传文件了');
dataChannel.onmessage = handleMessage;
3. 断点续传:从中断处继续
断点续传的关键是记录已传块的进度。用IndexedDB或者localStorage存进度:
// 发送文件块
async function sendFileChunks(file, dataChannel) {
const chunks = chunkFile(file);
const progress = loadProgress(file.name) || 0; // 从本地加载进度
for (let i = progress; i < chunks.length; i++) {
const chunk = chunks[i];
const arrayBuffer = await chunk.arrayBuffer();
// 发送块数据,带上索引
dataChannel.send(JSON.stringify({
type: 'chunk',
index: i,
data: arrayBuffer
}));
saveProgress(file.name, i + 1); // 保存进度
}
// 发送结束信号
dataChannel.send(JSON.stringify({ type: 'end' }));
}
接收端收到块后,先存到临时数组,收到'end'信号再合并成完整文件。
浏览器限制:那些坑爹的现实
1. 文件大小限制:Chrome说不行就不行
Chrome对单个文件上传有限制,默认是2GB。有些版本甚至更低。遇到大文件怎么办?继续分块,但块数太多会影响性能。
解决方案:用File System Access API(Chrome 86+),可以直接操作本地文件系统,绕过内存限制。
// 使用File System Access API
const fileHandle = await window.showOpenFilePicker();
const file = await fileHandle.getFile();
const writableStream = await fileHandle.createWritable();
// 分块写入
for (const chunk of chunks) {
await writableStream.write(chunk);
}
await writableStream.close();
2. 内存泄漏:传着传着浏览器崩了
大文件传输时,如果不及时释放Blob对象,内存会爆。解决方案:用stream API边读边传:
// 用ReadableStream处理大文件
const stream = file.stream();
const reader = stream.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
// 直接发送value(Uint8Array)
dataChannel.send(value);
}
3. 网络限制:局域网防火墙挡道
公司局域网可能有防火墙,WebRTC的UDP连接会被挡。解决方案:降级到WebSocket,或者用TURN服务器中转(但这就不纯前端了)。
实战案例:三个真实场景
案例1:照片分享应用
我之前做的一个家庭相册App,用这个技术实现了局域网照片同步。妈妈在客厅电脑上传相册,爸爸在卧室就能直接收到,不用连路由器。
关键代码:进度条显示 + 错误重试
// 进度显示
dataChannel.onmessage = (event) => {
const message = JSON.parse(event.data);
if (message.type === 'progress') {
updateProgressBar(message.percent);
}
};
案例2:游戏存档同步
做游戏开发时,团队成员在局域网同步大存档文件(几GB)。用断点续传,网络断了重连后从断点继续,省去了重传的时间。
案例3:视频剪辑素材传输
剪辑师在局域网传4K视频素材。传统方法用U盘慢,用这个方案直接浏览器传,还能显示传输速度和剩余时间。
其他方案:当WebRTC不够用时
方案1:WebTorrent
基于WebRTC的BitTorrent实现,支持多对多传输,更适合大文件群发。
import WebTorrent from 'webtorrent';
const client = new WebTorrent();
client.seed(file, (torrent) => {
console.log('种子创建成功:', torrent.magnetURI);
});
优点:多人同时下载快。缺点:需要种子文件管理。
方案2:Socket.IO + 二进制传输
用WebSocket传二进制数据,配合socket.io实现断点续传。
const socket = io();
socket.emit('send-file-chunk', { chunk, index });
socket.on('chunk-received', (index) => {
// 继续发下一块
});
优点:兼容性好。缺点:需要服务器中转。
方案3:Electron应用
如果纯浏览器限制太多,可以做个Electron桌面应用,用Node.js的fs模块直接操作文件系统,结合WebRTC。
总结与展望
纯前端P2P大文件断点传输,听起来高大上,其实就是把文件切块 + WebRTC传数据 + 本地存储进度。浏览器限制是客观存在的,但通过File System API和内存管理,大部分场景都能搞定。
未来,随着WebTransport协议的普及(基于HTTP/3),传输效率会更高。5G和WiFi 6普及后,局域网传输速度会飞起。
下次老婆让你传照片,别再抱怨网速了,直接用浏览器P2P传吧!有什么问题,评论区见。🚀
Ollama 本地部署完整指南
1. 简介
1.1 什么是 Ollama?
Ollama 是一个开源的大模型运行工具,支持在本地运行 Llama 3、Qwen2.5、DeepSeek、Mistral 等上百款大语言模型。它通过命令行操作,简单高效,特别适合开发者快速部署和测试各类 AI 模型。
1.2 核心特性
| 特性 | 说明 |
|---|---|
| 一键部署 | 一行命令完成安装和模型启动 |
| API 兼容 | 自带 OpenAI 格式 API,现有项目可直接迁移 |
| 跨平台支持 | macOS、Linux、Windows 全平台覆盖 |
| 模型丰富 | 内置 Qwen2.5、DeepSeek-V3、Llama 3 等上百款模型 |
| 安全可靠 | 支持密钥认证,修复已知安全漏洞 |
1.3 硬件要求
| 模型规模 | 显存要求 | 内存要求 | 推荐场景 |
|---|---|---|---|
| 3B(轻量) | 3GB+ | 8GB+ | 低配设备、快速测试 |
| 7B(推荐) | 4-6GB | 16GB+ | 日常开发、个人使用 |
| 13B(进阶) | 10-12GB | 32GB+ | 专业应用、团队协作 |
| 30B+(专业) | 24GB+ | 64GB+ | 企业部署、复杂任务 |
2. 安装指南
2.1 macOS 安装
# 方法一:一键安装脚本(推荐)
curl -fsSL https://ollama.com/install.sh | sh
# 方法二:使用 Homebrew
brew install ollama
# 验证安装
ollama --version
2.2 Linux 安装
# 一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh
# 验证安装
ollama --version
2.3 Windows 安装
- 访问官网下载:ollama.com/download
- 下载
OllamaSetup.exe - 运行安装程序,务必勾选「Add to PATH」
- 打开 PowerShell 或 CMD,验证安装:
ollama --version
2.4 验证安装成功
安装完成后,运行以下命令验证:
ollama --version
# 输出示例:ollama version is 0.12.0
3. 启动服务(重要)
3.1 启动 Ollama 服务
安装完成后,必须先启动 Ollama 服务才能下载模型或进行对话。
方法一:启动服务(推荐)
ollama serve
保持这个终端窗口运行,然后新开一个终端窗口执行其他命令。
方法二:后台运行(macOS/Linux)
# 后台启动服务
ollama serve &
# 然后直接执行其他命令
ollama pull qwen2.5:7b
Windows 用户:
确保 Ollama 应用已经在运行(在系统托盘查看 Ollama 图标),或在 PowerShell/CMD 中执行:
ollama serve
3.2 验证服务运行状态
# 测试服务是否正常运行
curl http://localhost:11434/api/tags
# 或查看已安装模型
ollama list
3.3 服务未响应处理
如果遇到 Error: ollama server not responding 错误:
-
确认服务已启动:运行
ollama serve -
检查端口占用:
lsof -i :11434(macOS/Linux)或netstat -ano | findstr :11434(Windows) -
重启服务:关闭当前终端,重新执行
ollama serve -
检查安装:运行
ollama --version确认正确安装
4. 国内加速配置(必做)
4.1 设置国内镜像
由于 Ollama 官方模型库在国内访问较慢,建议配置国内镜像加速:
# macOS / Linux
export OLLAMA_MODEL_SERVER=https://mirror.ollama.com
# Windows(PowerShell)
$env:OLLAMA_MODEL_SERVER="https://mirror.ollama.com"
4.2 永久配置镜像
macOS / Linux(推荐):
# 编辑配置文件
nano ~/.bashrc # 或 ~/.zshrc
# 添加以下内容
export OLLAMA_MODEL_SERVER=https://mirror.ollama.com
# 保存后重新加载配置
source ~/.bashrc # 或 source ~/.zshrc
Windows:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」中新建:
- 变量名:
OLLAMA_MODEL_SERVER - 变量值:
https://mirror.ollama.com
- 变量名:
5. 安全配置(重要)
5.1 设置 API 密钥
为防止未授权访问,建议设置访问密钥:
# 设置密钥
export OLLAMA_API_KEY=your_strong_password123
# Windows PowerShell
$env:OLLAMA_API_KEY="your_strong_password123"
5.2 限制本地访问
仅允许本地访问,避免暴露到公网:
# 绑定到本地回环地址
export OLLAMA_HOST=127.0.0.1:11434
# Windows PowerShell
$env:OLLAMA_HOST="127.0.0.1:11434"
6. 模型管理
6.1 搜索可用模型
访问 Ollama 官方模型库:ollama.com/library
常用中文模型推荐:
| 模型 | 说明 | 显存占用 |
|---|---|---|
qwen2.5:7b |
通义千问 2.5,中文效果优异 | ~4.5GB |
qwen2.5:14b |
更强中文能力,适合专业场景 | ~9GB |
deepseek-r1:7b |
DeepSeek 推理模型 | ~4.5GB |
gemma2:9b |
Google 开源模型 | ~5.5GB |
llama3.1:8b |
Meta Llama 3.1 | ~5GB |
6.2 下载模型
# 下载通义千问 7B(中文推荐)
ollama pull qwen2.5:7b
# 下载 INT4 量化版本(显存优化)
ollama pull qwen2.5:7b-chat-q4_0
# 下载 Llama 3.1
ollama pull llama3.1:8b
# 下载 DeepSeek 推理模型
ollama pull deepseek-r1:7b
6.3 查看已安装模型
ollama list
输出示例:
NAME ID SIZE MODIFIED
qwen2.5:7b 846a0b7e 4.7GB 2 hours ago
llama3.1:8b a7872503 4.9GB 1 day ago
6.4 删除模型
# 删除指定模型
ollama rm qwen2.5:7b
# 删除多个模型
ollama rm llama3.1:8b gemma2:9b
7. 使用指南
7.1 命令行对话
# 启动交互式对话
ollama run qwen2.5:7b
# 直接提问(非交互模式)
ollama run qwen2.5:7b "请用 Python 写一个快速排序"
# 从文件读取提示
ollama run qwen2.5:7b "$(cat prompt.txt)"
7.2 启动 API 服务
# 启动服务(默认端口 11434)
ollama serve
# 自定义端口
export OLLAMA_HOST=0.0.0.0:8080
ollama serve
7.3 测试 API 服务
# 测试健康检查
curl http://localhost:11434/api/tags
# 测试对话接口
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "你好,请介绍一下你自己"
}'
8. 编程调用
8.1 浏览器环境(原生 Fetch)
// 流式响应示例
async function chatWithOllama(prompt) {
const response = await fetch("http://localhost:11434/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer your_api_key"
},
body: JSON.stringify({
model: "qwen2.5:7b",
messages: [{ role: "user", content: prompt }],
stream: true
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
let result = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split("\n").filter(line => line.trim());
for (const line of lines) {
if (line.startsWith("data: ")) {
const data = line.slice(6);
if (data === "[DONE]") continue;
try {
const json = JSON.parse(data);
const content = json.choices?.[0]?.delta?.content;
if (content) {
result += content;
console.log(content);
}
} catch (e) {
// 忽略解析错误
}
}
}
}
return result;
}
// 使用
chatWithOllama("写一个 Python 快速排序");
8.2 Node.js 环境
const axios = require("axios");
async function chatWithOllama(prompt) {
const response = await axios.post(
"http://localhost:11434/v1/chat/completions",
{
model: "qwen2.5:7b",
messages: [{ role: "user", content: prompt }],
temperature: 0.7,
max_tokens: 2000
},
{
headers: {
"Authorization": "Bearer your_api_key"
}
}
);
return response.data.choices[0].message.content;
}
// 使用
chatWithOllama("写一个 Python 快速排序").then(console.log);
9. 常见问题
9.1 下载速度慢
解决方案:
# 配置国内镜像
export OLLAMA_MODEL_SERVER=https://mirror.ollama.com
9.2 显存不足
解决方案:
# 选择 INT4 量化版本
ollama pull qwen2.5:7b-chat-q4_0
# 或选择更小的模型
ollama pull qwen2.5:3b
9.3 Windows 启动失败
解决方案:
下载并安装 Microsoft C++ 生成工具: visualstudio.microsoft.com/visual-cpp-…
9.4 服务未响应
检查清单:
# 1. 确认服务正在运行
ollama serve
# 2. 检查端口是否被占用
lsof -i :11434 # macOS/Linux
netstat -ano | findstr :11434 # Windows
# 3. 检查防火墙设置
# 4. 验证 API 密钥
echo $OLLAMA_API_KEY
9.5 模型加载慢
优化方案:
- 将模型存储在 SSD 硬盘
- 关闭其他占用 GPU 的程序
- 选择量化版本的模型
10. 进阶配置
10.1 自定义模型
创建 Modelfile 自定义模型:
FROM qwen2.5:7b
# 设置系统提示
SYSTEM You are a helpful AI assistant specialized in Python programming.
# 设置参数
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
构建自定义模型:
ollama create my-python-assistant -f Modelfile
ollama run my-python-assistant
10.2 并发设置
调整并发请求数:
export OLLAMA_NUM_PARALLEL=4
10.3 日志级别
# 设置日志级别(debug/info/warn/error)
export OLLAMA_DEBUG=1
export OLLAMA_LOG_LEVEL=info
11. 更新与卸载
11.1 更新 Ollama
# macOS / Linux
ollama update
# Windows:重新下载安装包覆盖安装
11.2 卸载 Ollama
macOS:
brew uninstall ollama
rm -rf ~/.ollama
Linux:
sudo systemctl stop ollama
sudo systemctl disable ollama
rm -rf /usr/local/bin/ollama ~/.ollama
Windows:
- 控制面板 → 程序和功能 → 卸载 Ollama
- 删除用户目录下的
.ollama文件夹
mach_msg_header_t详解
objc_msgSend(obj, @selector(foo)); 到底发生了什么?
Flutter 最新xyz
App Groups in iOS
CSS魔法:对话生成器与奔驰骏马的创意实现
最近逛GitHub时,发现一个很有意思的项目——一个纯前端实现的对话生成器,效果非常精致。推荐给感兴趣的朋友,如果想深入钻研CSS,这个项目也很值得研究。另外,马上就要到马年了,顺便也分享一个之前收藏的用CSS实现的动态奔跑骏马效果。这两个项目都展现了CSS的巧妙运用,既适合学习借鉴,也很有趣味性。
![]()
👩聊天生成器
对话生成器:一个简单好玩的在线聊天制作工具
github地址:github.com/zixiwangluo…
在线地址:zixiwangluo.github.io/wxdh/
![]()
🌠功能简介
这是一个可以在线生成微信风格聊天截图的工具,支持以下功能:
- 自定义苹果或安卓手机状态栏(时间、电量、信号等)
- 设置对话双方的头像和昵称
- 发送文字、语音、红包、转账等聊天元素
- 自由编辑对话内容,生成高度仿真的微信聊天效果
- 无论是制作搞笑对话、剧情截图,还是用于演示与分享等轻松场景,这个工具都能带来不少乐趣。
该项目完全基于HTML、CSS和JavaScript实现,非常适合前端学习者参考。如果想直接使用,可将源码下载到本地,打开index.html即可运行;如果有服务器,也可以直接部署到Nginx等环境中,使用非常简单,这里就不多做介绍了。
平时写文章或做教程时如果需要聊天素材,也可以用它来快速生成。效果示例如下:
![]()
![]()
🐎纯css实现的奔驰的骏马
随着马年临近,这个奔跑的骏马效果格外应景。最初在某博客中发现这个创意实现,视觉效果流畅自然,于是特别部署了在线演示方便体验。
演示地址1:h5.xiuji.mynatapp.cc/horse/
演示地址2:aa51f2d3.pinit.eth.limo/
效果如下:
![]()
如果你想获取源码,可以通过浏览器开发者工具(F12)查看并复制相关代码。代码就两文件,一个html,一个css。
![]()
👽总结
这两个项目虽然功能不同,但都体现了前端开发的创意与技巧:
- 微信对话生成器展示了如何通过前端技术模拟复杂UI,实现高度可定制的交互工具,对学习CSS布局和JavaScript DOM操作很有帮助。
- CSS奔驰骏马则纯粹依靠样式表创造流畅动画,是学习CSS动画、关键帧和性能优化的优秀案例。
无论是想要寻找实用工具,还是希望深入学习前端技术,这两个项目都值得收藏研究。它们证明了,即使不使用复杂框架和库,纯前端技术也能创造出既美观又实用的效果。
🐟今日摸鱼小贴士:从入门到“入厕”新境界
领导眼皮底下吨吨灌水,洗手间里频繁“打卡”
主打一个尿喝白,电充绿,事干黄。
业绩虽暂时躺平,但新陈代谢已实现遥遥领先✨
![]()
❗❗❗特别声明
此项目来自互联网公开资源,仅供学习交流使用,切勿用于非法途径,由此产生任何纠纷由使用者本人自己承担,如有侵权,请及时联系删除❗❗❗
《实时渲染》第2章-图形渲染管线-2.4光栅化
实时渲染
2. 图形渲染管线
2.4 光栅化
顶点及其关联的着色数据(全部来自几何处理阶段)在进行变换和投影后,下一阶段的目标是找到所有像素(图片元素的缩写),这些像素位于要渲染的图元内部,例如三角形。我们将此过程称为光栅化,它分为两个功能子阶段:三角形设置(也称为图元组装)和三角形遍历。它们显示在图2.8的左侧。请注意,这些也可以处理点和线,但由于三角形最常见,因此子阶段的名称中带有“三角形”。因此,光栅化也称为扫描转换,是将屏幕空间中的二维顶点(每个顶点具有z值(深度值)和与每个顶点关联的各种着色信息)转换为屏幕上的像素。光栅化也可以被认为是几何处理和像素处理之间的同步点,因为在这里三角形由三个顶点形成并最终发送到像素处理。
![]()
图2.8. 左:光栅化分为两个功能阶段,称为三角形设置和三角形遍历。右:像素处理分为两个功能阶段,即像素着色和合并。
是否认为三角形与像素重叠取决于您如何设置GPU的管线。例如,您可以使用点抽样来确定“内部性”。最简单的情况是在每个像素的中心使用单点样本,因此如果该中心点在三角形内部,那么相应的像素也被视为三角形内部。您还可以使用超级采样或多重采样抗锯齿技术(第5.4.2节)为每个像素使用多个样本。另一种方法是使用保守光栅化,其中的定义是,如果像素的至少一部分与三角形重叠,则像素位于三角形“内部”(第23.1.2节)。
2.4.1 三角形设置
在这个阶段,计算三角形的微分、边方程和其他数据。这些数据可用于三角形遍历(第2.4.2节),以及用于几何阶段产生的各种着色数据的插值。这个任务通常是硬件的固定功能。
2.4.2 三角形遍历
在这个阶段,会检查每个像素中心(或样本)被三角形覆盖的位置,并为与三角形重叠的像素部分生成片元。更详细的抽样方法可以在第5.4节中找到。查找三角形内的样本或像素通常称为三角形遍历。每个三角形片元的属性是使用在三个三角形顶点之间插入的数据生成的(第5章)。这些属性包括片段的深度,以及来自几何阶段的任何着色数据。McCormack等人在文献[1162]中提到了有关三角形遍历的更多信息。也是在这个阶段,对三角形执行透视校正插值[694](第23.1.1节)。然后将图元内的所有像素或样本发送到像素处理阶段,这个下述章节会进行论述。