当前位置: 首页 > article >正文

第五部分-后期特效与着色器——24. 后期特效基础

24. 后期特效基础1. 概述后期特效Post-Processing是在场景渲染完成后对渲染结果进行额外处理的技术。通过 EffectComposer 合成器可以叠加多种特效如泛光、景深、颜色校正等。┌─────────────────────────────────────────────────────────────┐ │ 后期特效工作流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 原始场景 ──► 渲染 ──► 渲染目标 ──► 特效处理 ──► 屏幕显示 │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ RenderPass EffectComposer ShaderPass │ │ │ └─────────────────────────────────────────────────────────────┘2. EffectComposerEffectComposer 是后期特效的核心类负责管理渲染通道和特效链。2.1 创建 EffectComposerimport*asTHREEfromthree;import{EffectComposer}fromthree/examples/jsm/postprocessing/EffectComposer.js;import{RenderPass}fromthree/examples/jsm/postprocessing/RenderPass.js;// 创建渲染器constrenderernewTHREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth,window.innerHeight);// 创建 EffectComposerconstcomposernewEffectComposer(renderer);// 添加渲染通道必须constrenderPassnewRenderPass(scene,camera);composer.addPass(renderPass);// 渲染替代 renderer.rendercomposer.render();2.2 EffectComposer 属性constcomposernewEffectComposer(renderer);// 像素比composer.setPixelRatio(window.devicePixelRatio);// 渲染目标大小composer.setSize(window.innerWidth,window.innerHeight);// 渲染器composer.rendererrenderer;// 输出目标composer.outputTargetnull;3. RenderPassRenderPass 是基础的渲染通道将场景渲染到纹理。import{RenderPass}fromthree/examples/jsm/postprocessing/RenderPass.js;// 创建渲染通道constrenderPassnewRenderPass(scene,camera);// 配置renderPass.cleartrue;// 是否清除缓冲区renderPass.clearDepthtrue;// 是否清除深度renderPass.clearColortrue;// 是否清除颜色// 添加到合成器composer.addPass(renderPass);4. ShaderPassShaderPass 是自定义着色器通道用于应用特效。import{ShaderPass}fromthree/examples/jsm/postprocessing/ShaderPass.js;import{CopyShader}fromthree/examples/jsm/shaders/CopyShader.js;// 创建复制通道用于输出constcopyPassnewShaderPass(CopyShader);copyPass.renderToScreentrue;// 最后一个通道需要设置为 truecomposer.addPass(copyPass);5. 完整示例import*asTHREEfromthree;import{OrbitControls}fromthree/examples/jsm/controls/OrbitControls.js;import{EffectComposer}fromthree/examples/jsm/postprocessing/EffectComposer.js;import{RenderPass}fromthree/examples/jsm/postprocessing/RenderPass.js;import{ShaderPass}fromthree/examples/jsm/postprocessing/ShaderPass.js;import{RGBShiftShader}fromthree/examples/jsm/shaders/RGBShiftShader.js;import{CopyShader}fromthree/examples/jsm/shaders/CopyShader.js;constscenenewTHREE.Scene();scene.backgroundnewTHREE.Color(0x111122);constcameranewTHREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);camera.position.set(5,5,8);camera.lookAt(0,0,0);constrenderernewTHREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth,window.innerHeight);document.body.appendChild(renderer.domElement);constcontrolsnewOrbitControls(camera,renderer.domElement);controls.enableDampingtrue;// 光源constambientLightnewTHREE.AmbientLight(0x404040,0.5);scene.add(ambientLight);constdirectionalLightnewTHREE.DirectionalLight(0xffffff,1);directionalLight.position.set(5,10,7);scene.add(directionalLight);// 创建场景物体constgeometrynewTHREE.SphereGeometry(1,64,64);constmaterialnewTHREE.MeshStandardMaterial({color:0x44aa88,metalness:0.5,roughness:0.3});constspherenewTHREE.Mesh(geometry,material);sphere.castShadowtrue;scene.add(sphere);constboxGeometrynewTHREE.BoxGeometry(1,1,1);constboxMaterialnewTHREE.MeshStandardMaterial({color:0xff6633});constboxnewTHREE.Mesh(boxGeometry,boxMaterial);box.position.set(1.5,0,1.5);box.castShadowtrue;scene.add(box);constplaneGeometrynewTHREE.PlaneGeometry(8,8);constplaneMaterialnewTHREE.MeshStandardMaterial({color:0x336699,side:THREE.DoubleSide});constplanenewTHREE.Mesh(planeGeometry,planeMaterial);plane.rotation.x-Math.PI/2;plane.position.y-1;plane.receiveShadowtrue;scene.add(plane);// 创建 EffectComposerconstcomposernewEffectComposer(renderer);// 渲染通道constrenderPassnewRenderPass(scene,camera);composer.addPass(renderPass);// RGB 偏移特效constrgbShiftPassnewShaderPass(RGBShiftShader);rgbShiftPass.uniforms[amount].value0.005;composer.addPass(rgbShiftPass);// 输出通道constcopyPassnewShaderPass(CopyShader);copyPass.renderToScreentrue;composer.addPass(copyPass);// GUI 控制importGUIfromlil-gui;constguinewGUI();consteffectFoldergui.addFolder(特效控制);effectFolder.add(rgbShiftPass.uniforms[amount],value,0,0.02).name(RGB 偏移量);effectFolder.open();// 动画functionanimate(){requestAnimationFrame(animate);sphere.rotation.y0.005;box.rotation.x0.01;box.rotation.y0.01;controls.update();composer.render();}animate();window.addEventListener(resize,onWindowResize,false);functiononWindowResize(){camera.aspectwindow.innerWidth/window.innerHeight;camera.updateProjectionMatrix();composer.setSize(window.innerWidth,window.innerHeight);}6. 总结类用途EffectComposer特效合成器RenderPass渲染通道ShaderPass着色器通道CopyShader复制着色器方法说明addPass(pass)添加通道removePass(pass)移除通道render()渲染setSize(width, height)设置大小

相关文章:

第五部分-后期特效与着色器——24. 后期特效基础

24. 后期特效基础 1. 概述 后期特效(Post-Processing)是在场景渲染完成后,对渲染结果进行额外处理的技术。通过 EffectComposer 合成器,可以叠加多种特效,如泛光、景深、颜色校正等。 ┌───────────────…...

云原生部署技能包:为智能体与自动化工作流提供多云一键部署能力

1. 项目概述:一个云原生部署的智能“副驾驶”最近在折腾一个挺有意思的开源项目,叫cloud-deploy-skill。简单来说,它不是一个独立的部署工具,而是一个可以被集成到智能体(Agent)或自动化工作流中的“技能包…...

Bonsai:为Cursor AI瘦身的本地化规则集,节省65% Token

1. 项目概述:Bonsai - 为 Cursor AI 瘦身的本地化规则集如果你和我一样,日常重度依赖 Cursor 这类 AI 编程助手,那你肯定也经历过那种“话痨式”的回复。每次问一个简单的技术问题,它总会先来一段“当然可以!”&#x…...

5个实战技巧:用VinXiangQi深度AI分析突破象棋对弈瓶颈

5个实战技巧:用VinXiangQi深度AI分析突破象棋对弈瓶颈 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 你是否经常在象棋对弈中陷入开局被动、中…...

创业团队如何利用Taotoken管理多个项目的API Key与访问权限

创业团队如何利用Taotoken管理多个项目的API Key与访问权限 1. 多项目环境下的API Key管理挑战 小型创业团队在同时推进多个AI应用原型开发时,通常会面临模型API调用的管理难题。不同项目可能使用不同的模型供应商,团队成员权限需要差异化控制&#xf…...

PORTool:基于奖励树的LLM工具调用优化方案

1. 项目背景与核心价值在大型语言模型(LLM)应用落地的过程中,工具调用(Tool Calling)能力正成为区分模型实用性的关键指标。传统方法通常采用监督微调(SFT)或人类反馈强化学习(RLHF&…...

Stable Diffusion风格优化器:LoRA与参数调优实战指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫vibeforge1111/vibeship-optimizer。乍一看这个标题,可能会有点摸不着头脑,但如果你对AI生成内容,特别是Stable Diffusion这类文生图模型的应用和优化感兴趣&#xff0c…...

YOLOv5实战:手把手教你用BiFPN替换PANet,实测疵点检测mAP提升7个点

YOLOv5工业质检实战:BiFPN特征融合在疵点检测中的性能突破 在工业质检领域,毫米级的表面缺陷往往决定着产品的最终品质。传统人工检测不仅效率低下,且漏检率常高达15%-20%。我们团队在最近三个月的产线测试中发现,基于YOLOv5的深度…...

生成式AI性能评估:核心指标与GenAI-Perf实战

1. 生成式AI性能评估的挑战与机遇在生成式AI模型的实际部署中,性能评估远比传统机器学习模型复杂得多。作为一名长期从事AI基础设施优化的工程师,我深刻体会到:当面对动辄数十亿参数的大语言模型(LLM)时,简…...

C++实现Windows防休眠工具:模拟鼠标移动与系统API调用详解

1. 项目概述:一个让鼠标指针“动起来”的Windows小工具 如果你和我一样,在Windows系统上工作或学习时,偶尔会离开电脑前,但又不想让屏幕进入休眠或锁屏状态(比如正在下载大文件,或者需要保持某个远程会话在…...

大模型动态记忆管理:MemAct框架原理与实践

1. 项目概述:当大模型学会"记笔记"在自然语言处理领域,大型语言模型(LLM)的上下文窗口就像人类的工作记忆——容量有限却至关重要。传统方法中,模型被动接收全部对话历史,导致重要信息淹没在文本…...

Java字节流详解FileInputStream和FileOutputStream

Java 字节流详解:FileInputStream 和 FileOutputStream 从入门到实践 一、前言 在 Java 中,文件的读写操作是最基础也是最高频的 I/O 场景之一。字节流(Byte Stream)作为 Java I/O 体系的两大分支之一,负责处理所有二进…...

AI智能体开发实战:从开源Cookbook到生产级应用构建指南

1. 项目概述:一份面向开发者的AI实战手册最近在整理自己的技术工具箱时,我重新审视了Dave Ebbelaar维护的“AI Cookbook”项目。这并非一个需要你从零开始部署的复杂系统,而是一个开源的、由代码片段和教程组成的集合库。它的核心价值在于&am…...

Kapitan配置管理:基于Jsonnet与Jinja2的多环境云原生配置实践

1. 项目概述:为什么我们需要Kapitan这样的配置管理工具?在云原生和基础设施即代码(IaC)的时代,我们手里的配置文件正以前所未有的速度膨胀。Kubernetes的YAML清单、Terraform的HCL文件、Helm的Chart、Ansible的Playboo…...

沉淀仓核心配件(H 管)安装与作用

以下技术要点是南京比德园艺服务有限公司创作,内容如下:H 管是沉淀仓的核心配件,南京比德园艺所有鱼池项目的沉淀仓均强制标配 H 管。H 管的核心作用是分散水流,避免进水直冲底部翻起已沉淀的杂质;稳定水流速度&#x…...

编程入门:if和switch分支结构

一、if分支1.基本结构:(1)if(布尔表达式){执行语句} 执行原理:如果布尔表达式的结果为true,则执行{}中内容,如果为false,则不执行{}中的内容。不论花括号中的语句是否执…...

《AI大模型应用开发实战从入门到精通共60篇》041、异步编程:用asyncio提升LLM应用的并发性能

041 异步编程:用asyncio提升LLM应用的并发性能 从一次线上事故说起 凌晨两点,告警电话把我从床上拽起来。监控显示我们的LLM对话服务响应时间从200ms飙到了8秒,CPU负载却只有30%。查日志发现,每次用户请求都在等上游的OpenAI接口返…...

避开“毒王”分子:药物化学家如何利用警示子结构(SA)库提前规避研发雷区

药物化学家的结构排雷指南:如何利用警示子结构规避研发风险 在药物研发的漫长征程中,化学家们常常面临一个残酷的现实:约90%的候选药物最终未能通过临床试验,其中近半数折戟于安全性问题。那些看似微小的分子片段——一个苯环上的…...

小龙虾算法COA实战:调参指南与在CEC2005测试函数上的表现分析

小龙虾优化算法COA实战:参数调优与性能评估全解析 在智能优化算法的研究领域,生物启发式算法因其独特的搜索机制和解决复杂问题的能力而备受关注。小龙虾优化算法(Crayfish Optimization Algorithm, COA)作为2023年提出的新型智能…...

Monica 部署指南:自建个人 CRM,记录人际关系的私人助手

Monica 部署指南:自建个人 CRM,记录人际关系的私人助手 Monica 是一个开源的个人 CRM(客户关系管理)工具,但它的目标不是商业客户,而是你生活里真正重要的人——朋友、家人、同事。它帮你记录每个人的生日、联系方式、共同话题、上次见面说了什么,让你成为一个更有心的…...

BetterGI:基于计算机视觉的原神智能辅助工具深度解析

BetterGI:基于计算机视觉的原神智能辅助工具深度解析 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自…...

南派三叔《盗墓笔记》小说1-9卷全txt电子版

《盗墓笔记》是一部由南派三叔创作的长篇探险悬疑小说,讲述了一个普通青年吴邪在偶然得到一本古老笔记后,与经验丰富的盗墓者胖子、神秘莫测的张起灵等人一起踏上探索古墓、追寻秘密的旅程。今天特别为大家整理分享《盗墓笔记》全套9卷,txt电…...

DDrawCompat解决方案:让Windows 11完美运行DirectX 1-7经典游戏

DDrawCompat解决方案:让Windows 11完美运行DirectX 1-7经典游戏 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/…...

百度网盘秒传脚本完整指南:永久文件分享的终极解决方案

百度网盘秒传脚本完整指南:永久文件分享的终极解决方案 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 你是否曾因百度网盘分享链接失效而烦恼&…...

避开这些坑!OpenMV4颜色阈值调试保姆级指南(附Lab颜色空间工具)

OpenMV4颜色阈值调试实战:从Lab空间原理到多环境适配技巧 调试颜色阈值是OpenMV开发中最令人头疼的环节之一。你可能遇到过这种情况:明明在实验室调试完美的色块识别代码,拿到室外就完全失效;或者同一套阈值参数,早上能…...

RTMP视频流的帧格式分析

RTMP(Real-Time Messaging Protocol)是基于 TCP 的协议,其底层传输的数据实际上封装了 FLV(Flash Video)格式的 Tag。在 RTMP 流中,数据被切分成一个个 Chunk(块)进行发送。为了让你…...

ok-ww终极指南:基于图像识别的鸣潮自动化战斗完整解决方案

ok-ww终极指南:基于图像识别的鸣潮自动化战斗完整解决方案 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 在《鸣潮》这…...

如何永久保存微信聊天记录:终极数据备份与年度报告生成指南

如何永久保存微信聊天记录:终极数据备份与年度报告生成指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/…...

杀戮尖塔2mod二次元猎宝

关于《杀戮尖塔2》(Slay the Spire 2)的 “二次元猎宝”(Anime Treasure Hunter)Mod,该作品目前是社区中关注度较高的综合性扩展 Mod。 镜像从夸克下载 1. 作者 该 Mod 通常由 国内 Mod 开发团队/个人“五月&#x…...

5个AI象棋实战技巧:从新手到高手的Vin象棋完全指南

5个AI象棋实战技巧:从新手到高手的Vin象棋完全指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 你是否在象棋对弈中屡战屡败,面…...