Q140:PBRT-V3,各种渲染算法(Integrator,积分器)汇总

PBRT-V3中各种渲染算法(Integrator)汇总截图如下:

这里写图片描述

各种渲染算法(Integrator)之前的博文链接:

WhittedIntegrator:
Q111:PBRT-V3系统概述中的5.1分段

DirectLightingIntegrator:
Q120:PBRT-V3,“直接光照”积分器(14.3章节)

PathIntegrator:
Q124:PBRT-V3,“路径追踪”积分器(14.5章节)

VolPathIntegrator:
Q127:PBRT-V3,理解“体渲染”积分器的关键竟然是这张图

SPPMIntegrator:
Q135:PBRT-V3,随机渐进光子映射(Stochastic P

function SystemStatus({}) { // 创建左侧互联网、中间路由器、右侧设备的网络拓扑图 SVG const networkTopologySVG = ` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 300" class="w-full h-full"> <!-- 左侧:互联网图标 --> <g transform="translate(50, 100)"> <path d="M0,30 Q20,10 40,30 Q60,10 80,30 Q100,10 120,30 Q140,10 160,30" stroke="#3B82F6" stroke-width="2" fill="none"/> <path d="M0,30 Q20,50 40,30 Q60,50 80,30 Q100,50 120,30 Q140,50 160,30" stroke="#3B82F6" stroke-width="2" fill="none"/> <text x="80" y="20" text-anchor="middle" font-size="12" fill="#1E40AF">互联网</text> </g> <!-- 互联网到路由器的连接线 --> <line x1="160" y1="130" x2="240" y2="130" stroke="#9CA3AF" stroke-width="2" stroke-dasharray="5,5"/> <!-- 中间:路由器图标 --> <g transform="translate(240, 100)"> <rect x="0" y="0" width="120" height="60" rx="5" fill="#3B82F6" stroke="#1E40AF" stroke-width="2"/> <circle cx="20" y="15" r="4" fill="#10B981"/> <circle cx="40" y="15" r="4" fill="#10B981"/> <circle cx="60" y="15" r="4" fill="#10B981"/> <circle cx="80" y="15" r="4" fill="#10B981"/> <circle cx="100" y="15" r="4" fill="#10B981"/> <rect x="15" y="30" width="90" height="20" rx="3" fill="#1E40AF"/> <text x="60" y="45" text-anchor="middle" font-size="10" fill="white">路由器</text> </g> <!-- 路由器到设备的连接线 --> <line x1="360" y1="130" x2="400" y2="130" stroke="#6EE7B7" stroke-width="2"/> <line x1="360" y1="130" x2="400" y2="80" stroke="#60A5FA" stroke-width="2"/> <line x1="360" y1="130" x2="400" y2="180" stroke="#F87171" stroke-width="2"/> <!-- 右侧:路由器下挂设备 --> <!-- 笔记本电脑 --> <g transform="translate(400, 50)"> <rect x="0" y="0" width="80" height="50" rx="5" fill="#E5E7EB"/> <rect x="15" y="5" width="50" height="30" rx="3" fill="#D1D5DB"/> <rect x="20" y="10" width="40" height="20" fill="#F9FAFB"/> <rect x="30" y="35" width="20" height="10" fill="#9CA3AF"/> <text x="40" y="70" text-anchor="middle" font-size="10" fill="#4B5563">笔记本电脑</text> </g> <!-- 智能手机 --> <g transform="translate(400, 120)"> <rect x="0" y="0" width="40" height="60" rx="5" fill="#F9FAFB" stroke="#9CA3AF" stroke-width="2"/> <rect x="5" y="5" width="30" height="40" fill="#D1D5DB"/> <circle cx="20" y="55" r="3" fill="#9CA3AF"/> <text x="20" y="80" text-anchor="middle" font-size="10" fill="#4B5563">智能手机</text> </g> <!-- 台式电脑 --> <g transform="translate(400, 190)"> <rect x="0" y="0" width="50" height="40" rx="3" fill="#E5E7EB"/> <rect x="5" y="5" width="40" height="25" fill="#F9FAFB"/> <rect x="15" y="40" width="20" height="25" fill="#9CA3AF"/> <rect x="55" y="10" width="5" height="20" fill="#9CA3AF"/> <rect x="50" y="0" width="25" height="30" rx="2" fill="#D1D5DB"/> <text x="40" y="70" text-anchor="middle" font-size="10" fill="#4B5563">台式电脑</text> </g> </svg> `; // 模拟初始系统状态数据 const initialStatusData = { uploadRate: "1.2 Mbps", downloadRate: "15.8 Mbps", wanStatus: { status: "已联网", ipv4: "122.77.241.10", subnetMask: "255.255.255.0", gateway: "122.77.241.1", dns1: "8.8.8.8", dns2: "8.8.4.4" }, systemStatus: { model: "FAST FW300R", hostname: "Home-Router", cpuUsage: "24%", memoryUsage: "512MB / 1GB (51%)", uptime: "3天12小时45分钟", version: "V1.2.0" }, connectionStatus: { onlineDevices: 8, networkConnections: 24 } }; const [status, setStatus] = useState(null); const [refreshTime, setRefreshTime] = useState(new Date()); // 模拟获取系统状态 const refresh = () => { return new Promise(resolve => { setTimeout(() => { setStatus({ ...initialStatusData, connectionStatus: { onlineDevices: Math.floor(Math.random() * 5) + 6, networkConnections: Math.floor(Math.random() * 20) + 20 } }); setRefreshTime(new Date()); resolve(); }, 300); }); }; useEffect(() => { refresh(); const interval = setInterval(refresh, 60000); return () => clearInterval(interval); }, []); if (!status) return html`<div class="flex justify-center items-center h-32">加载中...</div>`; return html` <div class="m-4 grid grid-cols-1 gap-4"> <div class="py-1 divide-y border rounded bg-white flex flex-col"> <div class="flex items-center justify-between px-4 py-2"> <div class="font-light uppercase text-gray-600">网络拓扑状态</div> <div class="text-xs text-gray-500"> 最后更新: ${refreshTime.toLocaleTimeString()} <button class="ml-2 text-blue-600 hover:text-blue-800" onClick=${refresh} > 刷新 </button> </div> </div> <div class="py-2 px-5 flex-1 flex flex-col"> <div class="grid grid-cols-1 md:grid-cols-3 gap-4"> <!-- 网络拓扑视图 --> <div class="border rounded p-3 flex flex-col items-center col-span-1 md:col-span-3"> <h3 class="text-sm font-medium text-gray-700 mb-2">网络拓扑视图</h3> <div class="w-full h-64 object-contain" dangerouslySetInnerHTML=${{ __html: networkTopologySVG }} ></div> </div> <!-- WAN口状态 --> <div class="border rounded p-3"> <h3 class="text-sm font-medium text-gray-700 mb-2">WAN口状态</h3> <div class="space-y-2"> <div class="flex justify-between"> <span class="text-sm text-gray-600">状态</span> <span class="text-sm font-medium text-green-600">${status.wanStatus.status}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">IPv4地址</span> <span class="text-sm font-medium">${status.wanStatus.ipv4}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">子网掩码</span> <span class="text-sm font-medium">${status.wanStatus.subnetMask}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">网关</span> <span class="text-sm font-medium">${status.wanStatus.gateway}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">DNS1</span> <span class="text-sm font-medium">${status.wanStatus.dns1}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">DNS2</span> <span class="text-sm font-medium">${status.wanStatus.dns2}</span> </div> </div> </div> <!-- 系统状态 --> <div class="border rounded p-3"> <h3 class="text-sm font-medium text-gray-700 mb-2">系统状态</h3> <div class="space-y-2"> <div class="flex justify-between"> <span class="text-sm text-gray-600">型号</span> <span class="text-sm font-medium">${status.systemStatus.model}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">主机名</span> <span class="text-sm font-medium">${status.systemStatus.hostname}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">固件版本</span> <span class="text-sm font-medium">${status.systemStatus.version}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">CPU使用率</span> <span class="text-sm font-medium">${status.systemStatus.cpuUsage}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">内存占用</span> <span class="text-sm font-medium">${status.systemStatus.memoryUsage}</span> </div> <div class="flex justify-between"> <span class="text-sm text-gray-600">运行时间</span> <span class="text-sm font-medium">${status.systemStatus.uptime}</span> </div> </div> </div> <!-- 连接状态 --> <div class="border rounded p-3"> <h3 class="text-sm font-medium text-gray-700 mb-2">连接状态</h3> <div class="space-y-3"> <div class="flex justify-between items-center"> <span class="text-sm text-gray-600">上传速率</span> <span class="text-sm font-medium">${status.uploadRate}</span> </div> <div class="w-full bg-gray-200 rounded-full h-2"> <div class="bg-blue-500 h-2 rounded-full" style="width: 30%"></div> </div> <div class="flex justify-between items-center mt-2"> <span class="text-sm text-gray-600">下载速率</span> <span class="text-sm font-medium">${status.downloadRate}</span> </div> <div class="w-full bg-gray-200 rounded-full h-2"> <div class="bg-green-500 h-2 rounded-full" style="width: 70%"></div> </div> <div class="grid grid-cols-2 gap-4 mt-4"> <div class="bg-blue-50 rounded p-3 text-center"> <div class="text-2xl font-bold">${status.connectionStatus.onlineDevices}</div> <div class="text-sm text-gray-600">在线终端</div> </div> <div class="bg-green-50 rounded p-3 text-center"> <div class="text-2xl font-bold">${status.connectionStatus.networkConnections}</div> <div class="text-sm text-gray-600">网络连接数</div> </div> </div> </div> </div> </div> </div> </div> </div>`; } 互联网那里图片是个地球转动,然后中间是我们路由器,但是不要写路由器这三个字,右边是路由器接入设备,这三者直接间隔距离大一点
07-20
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>线条风格人物插画</title> <style> body { background-color: #1a1a1a; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; font-family: &#39;Segoe UI&#39;, Tahoma, Geneva, Verdana, sans-serif; } .container { text-align: center; padding: 20px; } h1 { color: #f0f0f0; margin-bottom: 30px; font-weight: 300; letter-spacing: 2px; } svg { max-width: 100%; height: auto; filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.1)); } .caption { color: #aaa; margin-top: 20px; font-size: 14px; font-style: italic; } </style> </head> <body> <div class="container"> <h1>线条风格人物插画</h1> <svg width="800" height="500" viewBox="0 0 800 500" xmlns="http://www.w3.org/2000/svg"> <!-- 背景装饰元素 --> <circle cx="150" cy="100" r="5" fill="#333" opacity="0.5"/> <circle cx="650" cy="150" r="8" fill="#333" opacity="0.5"/> <circle cx="400" cy="80" r="6" fill="#333" opacity="0.5"/> <circle cx="700" cy="350" r="4" fill="#333" opacity="0.5"/> <circle cx="100" cy="400" r="7" fill="#333" opacity="0.5"/> <!-- 左侧女性人物 --> <g id="female"> <!-- 身体轮廓 --> <path d="M120,150 Q140,120 160,150 Q180,180 160,210 Q140,240 160,270 Q180,300 160,330 Q140,360 120,330 Q100,300 120,270 Q140,240 120,210 Q100,180 120,150" stroke="#f0f0f0" stroke-width="2" fill="none"/> <!-- 头发 --> <path d="M120,150 Q100,120 130,120 Q160,110 170,130 Q180,150 160,150" stroke="#f0f0f0" stroke-width="2" fill="none"/> <!-- 面部特征 --> <circle cx="140" cy="170" r="2" fill="#f0f0f0"/> <circle cx="150" cy="170" r="2" fill="#f0f0f0"/> <path d="M145,180 Q148,185 150,180" stroke="#f0f0f0" stroke-width="1" fill="none"/> <!-- 裙子细节 --> <path d="M140,240 Q145,250 150,240" stroke="#f0f0f0" stroke-width="1" fill="none"/> <path d="M130,260 Q145,270 160,260" stroke="#f0f0f0" stroke-width="1" fill="none"/> <!-- 手臂 --> <path d="M120,200 Q100,210 110,230" stroke="#f0f0f0" stroke-width="2" fill="none"/> <path d="M160,200 Q180,210 170,230" stroke="#f0f0f0" stroke-width="2" fill="none"/> </g> <!-- 右侧男性人物 --> <g id="male"> <!-- 身体轮廓 --> <path d="M580,150 Q600,120 620,150 Q640,180 620,210 Q600,240 620,270 Q640,300 620,330 Q600,360 580,330 Q560,300 580,270 Q600,240 580,210 Q560,180 580,150" stroke="#f0f0f0" stroke-width="2" fill="none"/> <!-- 头发 --> <path d="M580,150 Q560,120 590,120 Q620,110 630,130 Q640,150 620,150" stroke="#f0f0f0" stroke-width="2" fill="none"/> <!-- 面部特征 --> <circle cx="600" cy="170" r="2" fill="#f0f0f0"/> <circle cx="610" cy="170" r="2" fill="#f0f0f0"/> <path d="M605,180 Q608,185 610,180" stroke="#f0f0f0" stroke-width="1" fill="none"/> <!-- 服装细节 --> <path d="M590,220 Q600,230 610,220" stroke="#f0f0f0" stroke-width="1" fill="none"/> <path d="M580,240 Q600,250 620,240" stroke="#f0f0f0" stroke-width="1" fill="none"/> <!-- 手臂 --> <path d="M580,200 Q560,210 570,230" stroke="#f0f0f0" stroke-width="2" fill="none"/> <path d="M620,200 Q640,210 630,230" stroke="#f0f0f0" stroke-width="2" fill="none"/> <!-- 耳机 --> <path d="M570,160 Q550,150 540,160 Q530,170 540,180 Q550,190 570,180" stroke="#f0f0f0" stroke-width="2" fill="none"/> <circle cx="640" cy="170" r="8" stroke="#f0f0f0" stroke-width="2" fill="none"/> </g> <!-- 玫瑰花 --> <g id="rose"> <!-- 花茎 --> <path d="M400,380 L400,450" stroke="#4CAF50" stroke-width="3" fill="none"/> <!-- 叶子 --> <path d="M400,400 Q370,390 380,420" stroke="#4CAF50" stroke-width="2" fill="none"/> <path d="M400,420 Q430,410 420,440" stroke="#4CAF50" stroke-width="2" fill="none"/> <!-- 花朵 --> <path d="M400,350 Q380,320 370,340 Q360,360 380,370 Q390,375 400,370 Q410,375 420,370 Q440,360 430,340 Q420,320 400,350" stroke="#e91e63" stroke-width="2" fill="none"/> <!-- 花瓣细节 --> <path d="M390,340 Q385,330 375,335 Q370,345 380,350" stroke="#e91e63" stroke-width="1.5" fill="none"/> <path d="M410,340 Q415,330 425,335 Q430,345 420,350" stroke="#e91e63" stroke-width="1.5" fill="none"/> <path d="M400,330 Q395,315 385,320 Q380,330 390,335" stroke="#e91e63" stroke-width="1.5" fill="none"/> </g> <!-- 连接线 --> <path d="M200,250 Q300,240 400,250" stroke="#666" stroke-width="1" stroke-dasharray="5,5" fill="none"/> <path d="M400,250 Q500,240 600,250" stroke="#666" stroke-width="1" stroke-dasharray="5,5" fill="none"/> <!-- 标题装饰 --> <text x="400" y="50" text-anchor="middle" fill="#f0f0f0" font-size="24" font-weight="300">线条艺术</text> </svg> <p class="caption">简约线条勾勒的人物与玫瑰</p> </div> </body> </html>
最新发布
10-19
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值