|
轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮 Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理 如图: 求生之路2
暗黑3
一种思路为: 1、在RTT中绘制单一像素 2、对1绘制后的RTT进行blur处理 3、对2处理后的RTT与原始场景进行叠加 4、绘制原始模型
另一种思路: 1、绘制原始模型到RTT 2、对1绘制的RTT中原始模型进行Sobel描边 3、对2描边后的RenderTexture进行blur处理 4、叠加1和3的RenderTexture 5、4与场景进行叠加
在unity3d中的实现 1、场景图像渲染之前 void OnPreRender { ...... 另外添加一个摄像机A 这里必须将GlowOutlineCamera摄像机关闭 并且清除标识为纯色 制定其渲染目标为RTT 清空其背景 摄像机A在主摄像机渲染之前通过Shader去绘制指定渲染类型的GameObject 也就是需要描边的GameObject (即摄像机A.RenderWithShader(RTT, "XXXX");) ...... } 2、场景图像渲染之后 void OnRenderImage(RenderTexture source, RenderTexture destination) { ...... 将摄像机A所渲染的目标纹理进行blur处理 将blur后的RTT与场景图像渲染后的RTT进行合成叠加 拷贝到目的渲染纹理上 ...... } 效果1 未被遮挡
效果2 被遮挡
效果3 描边相交 未被遮挡
效果4 描边相交 被遮挡
最后附上一张火炬之光2的轮廓描边效果 unity实现起来要简单的多 不属于postprocess 只需要对需要描边的物体写一个Rimlight边缘高光的shader即可 国内好像有个unity制作的网页游戏也是用的这种方式描边
|
相关推荐
Unity描边技术全解析:从法线外扩到屏幕空间边缘检测实战
描边(Outline)是计算机图形学中用于勾勒物体轮廓、增强视觉层次的核心技术。其基本原理是通过识别模型或场景中的边缘信息,在轮廓处叠加一层颜色或特效。从早期的顶点法线外扩,到如今主流的屏幕空间深度/法线边缘检测,描边技术的演进始终围绕着性能、质量和平台兼容性的平衡。在实时渲染领域,高效的描边方案能显著提升交互反馈的清晰度与视觉风格的表现力,广泛应用于游戏角色高亮、卡通渲染(Cel-Shading)、场景视觉引导以及UI特效等场景。本文聚焦于Unity引擎,深入剖析包括法线外扩、屏幕空间后处理在内的多种主流
spine粗略描边shader
Shader "Spine/Skeleton" {Properties {_Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1_MainTex ("Texture to blend", 2D) = "black" {}}// 2 texture stage GPUsSubShader {Tags { "Queue"="Transparent"
Unity物体高亮与轮廓特效:Highlight Plus 4.0核心原理与工程实践指南
在Unity游戏开发与交互式应用构建中,物体高亮与轮廓描边是提升视觉反馈和引导用户注意力的基础技术。其核心原理通常涉及几何体膨胀、Stencil Buffer或后处理等图形学方法,用于在目标物体外围动态生成一个可见的边界。这项技术的工程价值在于,它能以较低的性能开销,清晰标识可交互对象、技能范围或关键目标,从而显著改善用户体验。在实际应用场景中,开发者常需处理不同渲染管线(如Built-in、URP、HDRP)下的兼容性、性能优化(如控制Overdraw)以及与用户输入(如射线检测)的流畅集成。本文聚焦于通
cocos2dx-3.x:骨骼动画描边(spine)
在网上查了很久,一直都没有找到骨骼动画描边的方法,cocos自身带的shader中有个给Sprite描边的方法,看了很久,都没有用上,内心甚是纠结,最后查了好久源码,发现spine中有个方法“setShaderProgram”,我开开心心的带入,发现,是每一块骨骼都给我描边了,厦那间整个人都不好了,最后决定自己写一个, 一,原理 通过shader,给每个像素点重新赋值 二,步骤 1.先把整
【Unity轮廓与高亮插件】Ultimate Outlines & Highlights 一套高度灵活、性能友好、可组合的轮廓与高亮解决方案
《Ultimate Outlines & Highlights:Unity交互视觉强化解决方案》介绍了一款专为游戏开发设计的Unity插件,旨在通过轮廓描边、发光、叠加等可组合的视觉特效,提升游戏对象的交互提示效果。该插件支持2D/3D对象,提供子网格级精细控制、编辑器实时预览和移动端优化,适用于RPG、SLG、解谜等多种游戏类型。相比传统Shader方案,它更注重玩法逻辑整合与开发效率,帮助开发者快速实现专业级交互反馈,而无需深入底层技术细节。
超牛逼~外发光shader
UnityShader 外发光,自定义3d模型发效果,譬如模型被攻击时变色等
Unity之Spine动画有锯齿和白色描边
在unity中使用spine动画的时候有时候会发现导入的动画有锯齿或关节之间有白色描边。如图: 解决方案: 1.查看该spine动画的图集,看是否勾起了 Alpha Is Transparency这个选项,去掉该选项的勾选就可以了。 2.如果去掉还不能解决,可以尝试一下把Advanced下的Generate Mip Maps这个选项勾掉。 ...
编程小白的自学笔记四(正则表达式模块search函数)
本文仅仅简单介绍了search的使用,供小白学习探讨。
glow生成模型
【代码】glow生成模型。
学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)
在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。
Win10+pycharm+conda 配置Siammask 过程记录(新手向)
我们跑动demo 需要配置两个相关的文件这两个文件需要用 git 进行下载,对于不熟悉git的小伙伴 我这里给出连接,大家可以直接下载即可,并将其配置在 experiments文件夹下然后大家再需要在设置参数参数这里给出了。
Unity3d Glow + Outline 轮廓描边
轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮,Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理 在unity3d中的实现 1、场景图像渲染之前 void OnPreRender { ...... 另外添加一个摄像机A 这里必须将GlowOutlineCamera
Unity+Hybridclr发布WebGL记录
问题不多,比预想中的顺利,如果遇到问题建议先看Hybridclr的常见问题里面有没有解决方案,没遇到Hybridclr的报错,所以记录的问题里面没有Hybridclr相关的。导出设置里的压缩格式选择了Brotli,而服务器或浏览器不支持,据说是可以拓展服务器配置使支持Brotli,但是由于我本人是IIS小白,所以换了种压缩格式,在publishing Settings修改Compression Fromat为Gzip。3.在浏览器运行之后视图一直闪烁。,修改配置,这个网上很常见。
(转)【Unity3d】Glow + Outline 轮廓描边
转:http://www.cnblogs.com/dosomething/archive/2012/08/04/2622488.html 【Unity3d】Glow + Outline 轮廓描边 轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮 Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理 如图: 求生之路...
在Ubuntu上安装Node.js编程
在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。
如何在 SAP Server Side JavaScript 里消费 destination
在SAP云平台里打开SAP HANA Web-Based Development Workbench进行服务器端JavaScript的开发。 创建一个新的package: 创建一个新的application: 创建一个新的文件google-distance-api.xshttpdest用于维护destination相关信息: host = "maps.googlea...
【Unity3d】Glow + Outline 轮廓描边
轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮 Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理 如图: 求生之路2 暗黑3 一种思路为: 1、在RTT中绘制单一像素 2、对1绘制后的RTT进行blur处理 3、对2处理后的RTT与原始场景进行叠加 4、绘制原始模型 另一种思路:...
CATIA二次开发一一一装配体与零件之间的坐标转换
输入参数:Product(产品实例对象)、iPointToTransfor(待转换坐标点CATMathPoint)核心逻辑:通过产品对象的绝对位置变换矩阵,计算逆向变换实现坐标系转换。输出参数:Point(转换后的局部坐标点CATMathPoint)
Glow + Outline 轮廓描边,并做Blur处理
原连接:http://www.cnblogs.com/dosomething/archive/2012/08/04/2622488.html 根据上面链接,写出的代码。 轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮 Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理 如图: 求生之路2 暗黑3 ...
CVPR 2026 即插即用 | 注意力篇 | PFG:多尺度大核+像素级频率门控,特征显著增强,精准适配边缘纹理场景
本文提出了一种基于频率引导的轻量级外围门控模块PFG,用于高效时空预测学习。该模块通过多尺度大核分解卷积(1×K + K×1)捕捉外围空间依赖,同时利用固定频率滤波器提取高频线索,动态融合不同尺度的外围特征。核心创新包括:外围聚焦的多尺度空间增强、频率引导的动态融合机制、双阶段归一化协同等。实验表明,PFGNet在多个基准数据集上达到SOTA性能,同时保持较低计算复杂度。该模块可直接嵌入各类视觉模型,适用于需要强化空间-通道协同表达的轻量级任务。
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
Cocos2d-x 3.0beta New Label新特性—描边,阴影,发光
Cocos2d-x 3.0beta New Label新特性,描边,阴影,发光
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
Cocos2d-x 3.0 New Label新特性—描边,阴影,发光
今天我们来学习一下3.0 beta版本中 Label的几个新特性。首先对比如下两张效果图: 无特效: 添加特效 可以看到 第一个HelloWorld外侧有金黄色的发光效果 第二个HelloWorld有蓝色边缘 第三个Hello...
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包







284



被折叠的 条评论
为什么被折叠?



