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

[虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)

原英文教程地址深入理解实时渲染(An In-Depth Look at Real-Time Rendering)

文章目录

  • 1.Intro to An In-Depth Look at Real-Time Rendering
    • CPU VS GPU
    • Deferred VS Forward
  • 2. Before Rendering and Occlusion
    • Culling计算的步骤
      • 使用console command:freezerendering锁定当前渲染(实际上是当前Occlusion)
    • Occlusion Performance Implications
  • 3. Geometry Rendering Part 1
    • Prepass / Early Z Pass
      • Drawcalls
      • 使用console command:**stat RHI** 查看Drawcall即DrawPrimitive Calls
  • 4. Geometry Rendering Part 2
    • 在构建场景时,使用整体大模型还是使用模块化小模型
    • Instanced Rendering
    • Level Of Detail(LOD)
      • HLOD( Hierarchical LOD )
  • 5. Geometry Rendering Part 3
    • Vertex Shaders
      • Vertex Shader优化
  • 6. Rasterization(栅格化), Overshading, and the GBuffer
    • Quad Overdraw
    • GBuffer
      • Custom Depth
    • 小结
  • 7. Rendering and Textures
    • Mipmap
    • Texture Streaming
  • 8. Shaders and Materials
    • PBR Materials
      • 使用Console Command: r.Streaming.PoolSize改变Streaming缓存池大小
  • 9. An In-Depth look at Real-Time Rendering - Reflections
    • Reflection Captures
      • Sphere Reflection Capture
    • Planar Reflection
    • Screen Space Reflections(SSR)
      • 使用Console Command: r.SSR.Quality 4提高SSR的质量
  • 10. Static Lighting
    • Static Light的优缺点
    • Light Maps
    • Lightmass
      • Lightmass Importance Volume
      • Indirect Lighting Cache
    • 性能小结
  • 11. Dynamic Lighting
    • Dynamic Light的优缺点
    • 性能小结
  • 12. Fog and Transparency
    • Fog
      • Distance Fog
      • Local Volumetric Fog
    • Transparency
  • 13. Post Processing

1.Intro to An In-Depth Look at Real-Time Rendering

RTR(Real-Time Rendering) is at its most efficient when there is nothing.RTR is about managing losses

当渲染一开始性能的消耗就已经无法避免,因此RTR的关键就在于如何管理消耗。

在这里插入图片描述

  • 优化良好的项目应该始终运行在Target Frame rate以上,并且随着一切功能的开启性能的下降成一个较为缓慢的曲线;
  • 而优化较差的项目其性能会陡然下降,最终低于Target Frame Rate。

You can not do RTR perfect.
在这里插入图片描述

RTR永远无法达到完美,因此优化的实质就是再性能-画质-功能之间进行妥协和平衡。

CPU VS GPU

CPU和GPU同步工作,它们可能互为对方的瓶颈(Bottleneck)

Deferred VS Forward

在这里插入图片描述

在这里插入图片描述

2. Before Rendering and Occlusion

在这里插入图片描述

  • 简单地说在Game Thread中我们会知道"All transforms of all models"
  • 在Rendering Thread(Draw Thread)计算遮挡剔除Occlusion Culling

Culling计算的步骤

四个步骤的计算量逐渐增大

Step 1 Distance Culling(距离剔除): Distance culling removes any objects further than X from the camera

在这里插入图片描述

可以使用Cull Distance Volume对其内部对象进行统一(分类设置)

Step 2 Frustum Culling(视锥体剔除):

Step 3 Precomputed Visibility:

要使用PrexomputedVisibilityVolume
在这里插入图片描述

Step 4 Occlusion Culling(遮挡剔除):
该步骤在Rendering Thread(Draw Thread)中计算

使用console command:freezerendering锁定当前渲染(实际上是当前Occlusion)

Occlusion Performance Implications

  • Set up distance culling
  • More the 10-15k objects can have an impact
  • Mostly CPU bound,but some GPU impact
  • Large open environments don’t occlude well
  • Even things like particles occlude
  • Large models will rarely occlude and thus increase GPU
  • But combing models to large models will lower the CPU

3. Geometry Rendering Part 1

Prepass / Early Z Pass

在这里插入图片描述

Drawcalls

在这里插入图片描述

使用console command:stat RHI 查看Drawcall即DrawPrimitive Calls

在这里插入图片描述

在这里插入图片描述

左图: 5 Drawcalls: Sky + Ground + 3 x Cylinders = 5
右图: 6 Drawcalls: Sky + Ground + 2 x Cylinders + Half Cylinder with Gray Material + Half Cylinder with Red Material= 6

右图的渲染顺序
在这里插入图片描述

4. Geometry Rendering Part 2

RenderDoc插件:可以逐Drawcall查看一个画面的渲染过程

在这里插入图片描述
在这里插入图片描述

在构建场景时,使用整体大模型还是使用模块化小模型

讨论:使用少量大模型 VS 使用大量小模型 对于Drawcall 的影响

对于Drawcall来讲,使用少量大模型自然可以减少Drawcall,但是会带来一些其它的性能问题。

在这里插入图片描述

讨论:使用模块化网格体模型的优势和弊端“

在这里插入图片描述
总结: 模型的大小要适当

可以使用Editor>Tools>Merge Actors将多个网格体合并成一个网格体(但独立材质)

在这里插入图片描述
在这里插入图片描述

关于模型合并的几个建议
在这里插入图片描述
合并模型并不是必须的,而且很花时间。

Instanced Rendering

在这里插入图片描述

Level Of Detail(LOD)

在这里插入图片描述

HLOD( Hierarchical LOD )

对一个Mesh组(多个Mesh)进行LOD,这样可以减少面数的同时,甚至可以减少Drawcall

Windows> Hierarchical LOD Outliner
在这里插入图片描述

5. Geometry Rendering Part 3

Vertex Shaders

在这里插入图片描述

在这里插入图片描述

Vertex Shader优化

在这里插入图片描述

6. Rasterization(栅格化), Overshading, and the GBuffer

Quad Overdraw

在这里插入图片描述

一般情况下Quad Overdraw虽然增加性能损耗,但并不是致命的,但如果开发VR等应用时使用Forward Render时,要关注Quad Overdraw。

  1. Very thin triangles affect overshading because they pass through many 2x2 pixel quads

下图的圆柱中心部分,严重overshading.
在这里插入图片描述

GBuffer

The frame rendered out in multiple different images
These images are the used for compositing in anything ranging from materials to lighting to fog and so forth.

从此步骤开始渲染将不再利用集合体,而是全部依赖于GBuffer提供的图片。

可以在Viewport Mode中选择Buffer Visualization中的各个Buffer的预览图

在这里插入图片描述

Custom Depth

小结

在这里插入图片描述

7. Rendering and Textures

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Mipmap

在这里插入图片描述

在这里插入图片描述

Texture Streaming

在这里插入图片描述

8. Shaders and Materials

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

DirectX使用HLSL即High Level Shader Language

一个Materials不只生成一个Shader,一个Materials会对每一种应用生成一个对应的Shader

在这里插入图片描述

PBR Materials

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用Console Command: r.Streaming.PoolSize改变Streaming缓存池大小

在这里插入图片描述

  • Base Pass shader 的 Instruction在200左右是可以接受的,当达到700就太大了
  • 复杂的Shader对性能的影响还取决于它在屏幕中的占比及它影响像素数,占比约大像素越多,复杂的Shader对性能影响越大
    在这里插入图片描述

在这里插入图片描述

9. An In-Depth look at Real-Time Rendering - Reflections

在这里插入图片描述

Reflection Captures

Reflection Captures在关卡载入时进行捕获

Sphere Reflection Capture

  • 静态
  • 预计算
  • 速度快
  • 不准确
  • 多个Sphere Reflection Capture可以混合,越近权重越大

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Planar Reflection

  • 不常用
  • 计算量大
  • 适合需要高精度的平面对象(如镜子)
  • 其它均不适用
  • 仅限于用于下范围(大的海洋湖泊不要用)

在这里插入图片描述

Screen Space Reflections(SSR)

  • 默认的反射系统
  • 实时影响所有对象
  • 准确
  • 会输出严重的噪点
  • 只会反射当前显示(未被剔除)的对象

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用Console Command: r.SSR.Quality 4提高SSR的质量

10. Static Lighting

在这里插入图片描述
在这里插入图片描述

Static Light的优缺点

在这里插入图片描述

在这里插入图片描述

Light Maps

在这里插入图片描述
在这里插入图片描述

Lightmass

在World Settings中设置
在这里插入图片描述

Lightmass Importance Volume

Indirect Lighting Cache

在这里插入图片描述
在这里插入图片描述

性能小结

在这里插入图片描述

可以使用Viewport的Lightmap Density模式查看每个模型Lightmap的密度(分辨率),并在模型的Lighting>Overridden Light Map Res修改其分辨率
在这里插入图片描述

在这里插入图片描述

11. Dynamic Lighting

Dynamic Light的优缺点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Regular Dynamic Shadows -Used throughout, very common
  • Per Object Shadows -Stationary Light shadows
  • Cascaded Shadow Maps (CSM)-Directional light shadowing
  • Distance Field Shadows -Use DF info instead of tracing geometry

在这里插入图片描述

性能小结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Two more basic rule

  • Use static only if you need the highest possible performance
  • Use dynamic if you need to be freely or able to modify the lighting at any time

12. Fog and Transparency

Fog

Distance Fog

Distance Fog means the fog fades in the distance.They are also Height Fog - meaning fades towards the sky

  • Atmospheric Fog
  • Exponentional Fog

Local Volumetric Fog

Transparency

  • Deferred renderers have difficulties with transparency.
  • Therefore transparent surfaces are usually delayed until a late stage.
  • Or rendered separately in Forward then merged with the Deferred pipeline.

在这里插入图片描述

在这里插入图片描述

透明材质区域:红色Shader Complexity过大的部分
在这里插入图片描述

透明烟雾粒子充满的场景
在这里插入图片描述
如果可能的话

  • 将材质设为Unlit
  • 或者设为Forward Render

在这里插入图片描述

13. Post Processing

常见的用Post Processing实现的效果

  • Light Bloom
  • Depth of Field/Blurring
  • Some types of lens flares
  • Light Shafts
  • Vignette
  • Tone mapping/Color correction
  • Exposure
  • Motion Blur

相关文章:

[虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)

原英文教程地址深入理解实时渲染(An In-Depth Look at Real-Time Rendering) 文章目录 1.Intro to An In-Depth Look at Real-Time RenderingCPU VS GPUDeferred VS Forward 2. Before Rendering and OcclusionCulling计算的步骤使用console command:fre…...

【bibtex4word】在Word中高效转换bib参考文献,Texlive环境安装bibtex4word插件

前言 现已退出科研界,本人水货一个。希望帮到有缘人 本篇关于如何将latex环境中的参考文献bib文件转化为word,和一些踩坑记录。 可以看下面的资料进行配置,后面的文字是这些资料的补充说明。 参考文章:https://blog.csdn.net/g…...

torch.nn 下的常用深度学习函数

1. 层(Layers) 这些函数用于定义神经网络中的各种层,是构建模型的基础模块。 torch.nn.Linear 用途:全连接层(也称为线性层)。用于将输入数据从一个维度映射到另一个维度,常用于神经网络的隐藏…...

(2025)图文解锁RAG从原理到实操

什么是RAG RAG(检索增强生成)是一种将语言模型与可搜索知识库结合的方法,主要包含以下关键步骤: 数据预处理 加载:从不同格式(PDF、Markdown等)中提取文本分块:将长文本分割成短序列(通常100-500个标记),作为检索单元…...

PXE_Kickstart_无人值守自动化安装系统

文章目录 1. PXE2. 配置服务参数2.1 tftp服务配置2.2 dhcp服务配置2.3 http服务配置 3. 配置PXE环境3.1 网络引导文件pxelinux.03.2 挂载镜像文件3.3 创建配置文件default3.4 复制镜像文件和驱动文件3.5 修改default文件3.6 配置ks.cfg文件 4. PXE客户端4.1 创建虚拟机&#xf…...

Redis经典面试题

本篇文章简单介绍一些 Redis 常见的面试题。 Redis 是什么? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&…...

Vite Proxy配置详解:从入门到实战应用

Vite Proxy配置详解:从入门到实战应用 一、什么是Proxy代理? Proxy(代理)是开发中常用的解决跨域问题的方案。Vite内置了基于http-proxy的代理功能,可以轻松配置API请求转发。 二、基础配置 在vite.config.js中配置…...

用AI写简历是否可行?

让AI批量写简历然后投简历是绝对不行的!!! 为什么不行,按照 "招聘经理" 工作经历举例: ai提示词:请帮我写一份招聘经理的工作经历内容: 招聘经理 | XXX科技有限公司 | 2020年…...

投影显示技术全解析:主流方案对比与雷克赛恩 CyberPro1 的核心优势

目录 一、主流投影显示技术深度解析 (一)LCD 投影技术 (二)DP 投影技术 (三)3LCD 技术 (四)FSHD 技术 FSHD 技术优势 二、雷克赛恩 CyberPro1 核心优势对比分析 &#xff08…...

Skyvern:用 AI+视觉驱动浏览器自动化

Skyvern:用 AI视觉驱动浏览器自动化 一、前言二、项目概览2.1 Skyvern 项目简介2.2 代码结构与模块划分 三、环境搭建与快速上手3.1 环境准备3.1.1 系统与依赖3.1.2 克隆项目3.1.3 安装 Python 依赖3.1.4 配置环境变量3.1.5 启动服务 3.2 验证安装 四、核心功能与实…...

101alpha第九

alpha ((rank(ts_arg_max((vwap - close), 3)) * rank(ts_delta(volume, 3))) 今天我们来学下这个 这个是两个rank操作符相加,然后和另外一个操作符相乘,我们来看实现了什么 vwap - close:这部分先计算成交量加权平均价(vwap&am…...

蓝牙身份证阅读器使用Uniapp调用二次开发demo

<template> <view class"content"> <view class"search" :loading"searchingstatus" click"searchbluetooth"> {{searchingstatus?"搜索中":"搜索蓝牙阅读器"}} </view> …...

好用的shell终端工具

FinalShell SSH工具,服务器管理 FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.5.12,更新日期2024.10.30 - FinalShell官网...

OSPF不规则区域划分

1、建立一条虚链路 vlink 可以被视为是⻣⼲区域的⼀段延伸。 这⼀条虚拟的链路&#xff0c;只能够跨域⼀个⾮⻣⼲区域。 [r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 [r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2 在没有建立虚链路之前,r1是不能ping r4的。vlink建⽴的邻居关…...

复习javascript

1.修改元素内的内容 ​ <div>zsgh</div> <script> const box1document.querySelector("div") box1.innerText"ppp" box1.innerHtml<h1>修改</h1> </script>​ 2.随机点名练习 <!DOCTYPE html> <html lang…...

海盗王64位服务端+32位客户端3.0版本

经过多天的尝试&#xff0c;终于把海盗王3.0的服务端改成了64位的&#xff0c;包括AccountServer GroupServer GameServer GateServer。 客户端则保留了32位。 服务端改成64位的好处是GameServer可以只启动一个就开全部地图&#xff0c;大概6G内存左右&#xff0c;直接将跳…...

【从零实现JsonRpc框架#2】Muduo库介绍

1.基本概念 Muduo 由陈硕大佬开发&#xff0c;是一个基于非阻塞IO和事件驱动的C高并发TCP网络编程库。它是一款基于主从Reactor模型的网络库&#xff0c;其使用的线程模型是 one loop per thread。 1.1 主从 Reactor 模型 主 Reactor&#xff08;MainReactor&#xff0c;通常…...

如何创建伪服务器,伪接口

创建伪接口一般是用于模拟真实接口的行为&#xff0c;以便在开发和测试过程中进行使用&#xff0c;以下是一些常见的创建伪接口的方法&#xff1a; 使用 Web 框架搭建&#xff1a; Python 和 Flask&#xff1a;Flask 是一个轻量级的 Python Web 框架。示例代码如下&#xff1a;…...

NX949NX952美光科技闪存NX961NX964

NX949NX952美光科技闪存NX961NX964 在半导体存储领域&#xff0c;美光科技始终扮演着技术引领者的角色。其NX系列闪存产品线凭借卓越的性能与创新设计&#xff0c;成为数据中心、人工智能、高端消费电子等场景的核心组件。本文将围绕NX949、NX952、NX961及NX964四款代表性产品…...

vue配置代理解决前端跨域的问题

文章目录 一、概述二、报错现象三、通过配置代理来解决修改request.js中的baseURL为/api在vite.config.js中增加代理配置 四、参考资料 一、概述 跨域是指由于浏览器的同源策略限制&#xff0c;向不同源(不同协议、不同域名、不同端口)发送ajax请求会失败 二、报错现象 三、…...

深入解析Vue3中ref与reactive的区别及源码实现

深入解析Vue3中ref与reactive的区别及源码实现 前言 Vue3带来了全新的响应式系统&#xff0c;其中ref和reactive是最常用的两个API。本文将从基础使用、核心区别到源码实现&#xff0c;由浅入深地分析这两个API。 一、基础使用 1. ref import { ref } from vueconst count…...

Java Bean容器详解:核心功能与最佳使用实践

在Java企业级开发中&#xff0c;Bean容器是框架的核心组件之一&#xff0c;它通过管理对象&#xff08;Bean&#xff09;的生命周期、依赖关系等&#xff0c;显著提升了代码的可维护性和扩展性。主流的框架如Spring、Jakarta EE&#xff08;原Java EE&#xff09;均提供了成熟的…...

Xilinx Kintex-7 XC7K325T-2FFG676I 赛灵思 FPGA

XC7K325T-2FFG676I 属于 Kintex-7 FPGA &#xff0c;低功耗与合理成本的应用市场&#xff0c;可提供比前代产品两倍的性价比提升和卓越的系统集成能力。该器件于 28 nm 工艺节点制造&#xff0c;速度等级为 -2&#xff0c;适合对时序要求严格但预算有限的系统设计。 产品架构与…...

AI实战笔记(1)AI 的 6 大核心方向 + 学习阶段路径

一、机器学习&#xff08;ML&#xff09; 目标&#xff1a;用数据“训练”模型&#xff0c;完成分类、回归、聚类等任务。 学习阶段&#xff1a; &#xff08;1&#xff09;基础数学&#xff1a;线性代数、概率统计、微积分&#xff08;适度&#xff09; &#xff08;2&#xf…...

Ceph集群故障处理 - PG不一致修复

Ceph集群故障处理 - PG不一致修复 目录故障现象故障分析故障定位修复过程磁盘状态检查OSD存储结构检查修复分析故障总结问题原因修复方法后续建议经验教训最佳实践 参考资料 # ceph -v ceph version 14.2.22目录 故障现象故障分析故障定位修复过程磁盘状态检查OSD存储结构检查…...

【前端】每日一道面试题3:如何实现一个基于CSS Grid的12列自适应布局?

要实现一个基于CSS Grid的12列自适应布局&#xff0c;关键在于利用网格系统的灵活性和响应式设计能力。以下是具体实现步骤及核心代码示例&#xff1a; 一、基础网格容器定义 创建网格容器 使用display: grid将父元素定义为网格容器&#xff1a; .container {display: grid;gr…...

leetcode 349. Intersection of Two Arrays

题目描述 题目限制0 < nums1[i], nums2[i] < 1000&#xff0c;所以可以开辟一个1001个元素的数组来做哈希表。 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> table(1001,0…...

机器学习 day01

文章目录 前言一、机器学习的基本概念二、数据集的加载1.玩具数据集2.联网数据集3.本地数据集 三、数据集的划分四、特征提取1.稀疏矩阵与稠密矩阵2.字典列表特征提取3.文本特征提取 前言 目前我开始学习机器学习部分的相关知识&#xff0c;通过今天的学习&#xff0c;我掌握了…...

C++STL——priority_queue

优先队列 前言优先队列仿函数头文件 前言 本篇主要讲解优先队列及其底层实现。 优先队列 优先队列的本质就是个堆&#xff0c;其与queue一样&#xff0c;都是容器适配器&#xff0c;不过优先队列是默认为vector实现的。priority_queue的接口优先队列默认为大根堆。 仿函数 …...

DS18B20温度传感器

1.基本信息 测温范围为一55&#xff5e; 125℃&#xff1b;3.3/5V的供电电压&#xff1b;-10~85内精度较高&#xff1b; 典型的温度转换时间为 750ms&#xff08;12 位分辨率&#xff09;&#xff1b; 输出最小分辨率&#xff1a;0.0625&#xff1b; 采用单总线数据格式&am…...

《Python星球日记》 第50天:深度学习概述与环境搭建

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是深度学习&#xff1f;它与传统机器学习的区别1. 深度学习的定义2. 深…...

BUUCTF——Cookie is so stable

BUUCTF——Cookie is so stable 进入靶场 页面有点熟悉 跟之前做过的靶场有点像 先简单看一看靶场信息 有几个功能点 flag.php 随便输了个admin 根据题目提示 应该与cookie有关 抓包看看 构造payload Cookie: PHPSESSIDef0623af2c1a6d2012d57f3529427d52; user{{7*7}}有…...

Java 基础面试题

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

bcm5482 phy 场景总结

1,BCM5482是一款双端口10/100/1000BASE-T以太网PHY芯片,支持多种速率和双工模式。其配置主要通过MDIO(Management Data Input/Output)接口进行,MDIO接口用于访问PHY芯片内部的寄存器,从而配置网络速率、双工模式以及其他相关参数。 a,具体以下面两种场景举例 2. 寄存器和…...

小程序多线程实战

在小程序开发中&#xff0c;由于微信小程序的运行环境限制&#xff0c;原生并不支持传统意义上的多线程编程&#xff0c;但可以通过以下两种核心方案实现类似多线程的并发处理效果&#xff0c;尤其在处理复杂计算、避免主线程阻塞时非常关键&#xff1a; 一、官方方案&#xff…...

PPT图表怎么制作?说5款自己使用过的PPT图表制作工具

PPT图表怎么制作&#xff1f;准备一份吸引人的PPT演示文稿时&#xff0c;图表往往能起到画龙点睛的作用。但是&#xff0c;对于很多人来说&#xff0c;制作既美观又专业的图表却不是一件容易的事情。今天&#xff0c;我们就来聊聊如何利用一些优秀的工具制作PPT图表。 1、亿图图…...

渠道销售简历模板范文

模板信息 简历范文名称&#xff1a;渠道销售简历模板范文&#xff0c;所属行业&#xff1a;其他 | 职位&#xff0c;模板编号&#xff1a;KRZ3J3 专业的个人简历模板&#xff0c;逻辑清晰&#xff0c;排版简洁美观&#xff0c;让你的个人简历显得更专业&#xff0c;找到好工作…...

数据库实验10

设计性实验 1&#xff0e;实验要求 1.编写函数FsumXXX&#xff0c;1~n&#xff08;参数&#xff09;求和&#xff1b; GO CREATE FUNCTION Fsum065 (n INT) RETURNS INT AS BEGIN DECLARE sum INT 0 WHILE n > 0 BEGIN SET sum sum n SET n n - 1 END RETURN sum END …...

C#异步Task,await,async和Unity同步协程

标题 TaskawaitasyncUnity协程 Task Task是声明异步任务的必要关键字&#xff0c;也可以使用Task<>泛型来定义Task的返回值。 await await是用于等待一个Task结束&#xff0c;否则让出该线程控制权&#xff0c;让步给其他线程&#xff0c;直到该Task结束才往下运行。 …...

【ML-Agents】ML-Agents示例项目导入unity报错解决

最近在跑ML-Agents的示例代码&#xff0c;无奈往unity中导入项目后&#xff0c;就出现报错。本文简要描述了各个报错的解决方法。 文章目录 一、error CS0234: The type or namespace name InputSystem does not exist in the namespace UnityEngine (are you missing an assem…...

【Web前端开发】HTML基础

Web前端开发是用来直接给用户呈现一个一个的网页&#xff0c;主要包含实现用户的结构&#xff08;HTML&#xff09;、样式&#xff08;CSS&#xff09;、交互&#xff08;JavaScript&#xff09;。然而一个软件通常是由后端和前端完成的。可以查阅文档&#xff1a;HTML 教程 (w…...

spark-哈希join介绍

目录 1. Shuffle Join 和 Hash Join 的复杂度1.1 Shuffle Join1.2 Hash Join 2. 哈希算法的原理2.1 什么是哈希算法&#xff1f;2.2 哈希算法的工作原理2.3 常见哈希函数 3. 哈希算法的弊端3.1 哈希碰撞3.2 哈希分布不均匀3.3 哈希值不可逆 4. 哈希碰撞的处理方法4.1 链地址法4…...

计算机网络与多线程同步机制详解

一、IP地址与子网划分 在互联网世界中&#xff0c;IP地址就像是每个设备的"门牌号"&#xff0c;它使得数据包能够准确送达目的地。IP地址的划分与管理就像城市的规划&#xff0c;通过合理的子网划分&#xff0c;能够高效地管理网络资源。 子网掩码的工作原理 子网…...

栈溢出攻击最基本原理

函数在调用的过程中&#xff0c;函数在调用之前呢&#xff0c;会将调用完这个函数之后的下一条命令的地址保存到LR中。 void func() {int a[4];a[6] 100; } 这个函数在用gcc编译的时候是不会报错的&#xff0c;所以我们可以在尝试之后&#xff0c;修改LR的值&#xff0c;让代…...

ChemDraw、InDraw、KingDraw有什么差别?

在化学相关的科研与教学领域&#xff0c;一款好用的结构式编辑器至关重要&#xff0c;ChemDraw因此闻名&#xff1b;但近年来&#xff0c;ChemDraw代理商频繁发送律师函&#xff0c;给学校和企业带来诸多困扰&#xff0c;促使大家纷纷寻找替代软件。InDraw和KingDraw这两款软件…...

NVMe控制器IP设计之接口模块

这是NVMe控制器IP设计系列博客之一&#xff0c;其他的见本博客或csdn搜用户名&#xff1a;tiantianuser。相关视频见B站用户名&#xff1a;专注与守望。 接口转换模块负责完成AXI4接口与控制器内部的自定义接口之间的转换工作。接口转换模块的框图如图1所示。 图1 接口转换示…...

从0开始学linux韦东山教程第三章问题小结(2)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。 摘要关键词&#xff1a;PC远程访问ubuntu配置&#xff0c;ubuntu配置uboot环境&#xff0c;串口控制开发板 本文详细介绍以下问题&…...

JS正则表达式介绍(JavaScript正则表达式)

文章目录 JavaScript正则表达式完全指南正则表达式基础元字符与特殊字符基本元字符. - 点号\d - 数字\D - 非数字\w - 单词字符\W - 非单词字符\s - 空白字符\S - 非空白字符 正则表达式标志常用标志详解g - 全局匹配i - 忽略大小写m - 多行匹配s - 点号匹配所有字符u - Unicod…...

(51单片机)LCD显示红外遥控相关数字(Delay延时函数)(LCD1602教程)(Int0和Timer0外部中断教程)(IR红外遥控模块教程)

前言&#xff1a; 本次Timer0模块改装了一下&#xff0c;注意&#xff01;&#xff01;&#xff01;今天只是简单的实现一下&#xff0c;明天用次功能显示遥控密码锁 演示视频&#xff1a; 在审核 源代码&#xff1a; 如上图将9个文放在Keli5 中即可&#xff0c;然后烧录在…...

关于单片机的基础知识(一)

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于单片机基础知识的相关内容&#xf…...