当前位置:首页 > CN2资讯 > 正文内容

我的世界java版官方光追包 我的世界java版光追光影

3天前CN2资讯


追光效果是在舞台全场黑暗的情况下用光柱来突出角色或其他特殊物体,还可以通过操控光源来跟随人物移动。追光效果主要用来突出角色主体以及主体和环境的关系,在游戏中可以用来营造沉浸式氛围以及聚焦玩家视线焦点



实现思路

根据实际效果可以提炼出3个功能点:光圈的形状和大小可控,光圈的边缘虚化,光圈可操控移动。光圈是一个圆,假设圆心在纹理的中间,它的坐标是vec2(0.5,0.5),我们只需让到圆心的距离大于半径的像素丢弃或者透明度为0,代码如下:

void main () { vec4 color = vec4(1, 1, 1, 1); color *= texture(texture, v_uv0); color *= v_color; color.a = step(length(v_uv0 - vec2(0.5,0.5)), 0.1); gl_FragColor = color; }



生成椭圆

其中 step(a, x) 是内置的规整函数,返回  x >= a? 1 : 0,length函数是取模。上面的代码段应用在正方形的纹理中可以得出一个正圆,但是如果纹理不是正方形,上面出来的效果会是一个椭圆,因为在shader中无论纹理的真实宽高是多少,它的x,y变化范围都是0~1,是比例的变化。如果需要产生一个正圆,还是得通过纹理的真实宽高,来计算真实的宽高比例,异名选择的方式是在在组件初始化的时候,输入一个wh_ratio比例来获取,圆的真实半径通过勾股定理来计算,异名这里就没有开方了,直接通过半径平方的比较来舍去圆外的点。

void main () { vec4 o = vec4(1, 1, 1, 1); o *= texture(texture, v_uv0); o *= v_color; float circle = radius * radius; float rx = center.x * wh_ratio; float ry = center.y; float dis = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry); o.a = step(dis, 0.1); gl_FragColor = o; }onload() { this.material.setProperty('wh_ratio', this.bg.width / this.bg.height); }

这样子就能在不同宽高比的纹理中都能够画出一个正圆。



生成正圆

但是这样的圆的边缘是有锯齿的,而且追光的效果需要光圈的边缘虚化,所以我们需要借助另外一个内置插值函数smoothstep(min, max, x),它能够返回一个在输入值之间平稳变化的插值,以此来达到边缘羽化的效果。

void main () { vec4 o = vec4(1, 1, 1, 1); o *= texture(texture, v_uv0); o *= v_color; float circle = radius * radius; float rx = center.x * wh_ratio; float ry = center.y; float dis = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry); o.a = smoothstep(circle, circle - blur, dis); gl_FragColor = o; }



羽化

接下来的让光圈随着动作的移动就很简单了,在touch的时候去更改光圈的圆心位置就行,因为我们的shader中是比例的变化,所以我们传进去的时候也要转化成比例,同时别忘了坐标的转化:

touchEvent(evt: cc.Event.EventTouch) { let pos = evt.getLocation(); this.material.setProperty('center', [pos.x / this.bg.width, (this.bg.height - pos.y) / this.bg.height]); }

这样子我们就把追光的功能实现了,剩下的就是根据业务的需要,生成追光的路径,这个就是把圆心的位置传进来即可。除了应用到舞台追光的那种场景中,异名觉得它的应用还可以有更多的想象空间,比如在黑暗的博物馆里,在手电筒的灯光照射下,蒙娜丽莎的微笑就更加神秘了....



神秘的微笑


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22087.html

    分享给朋友:

    “我的世界java版官方光追包 我的世界java版光追光影” 的相关文章

    VAiCDN:提升用户访问体验的专业CDN解决方案

    在当今互联网时代,内容交付网络(CDN)成为了确保网站和应用顺畅运行的重要工具。VAiCDN 作为一家专业的 CDN 运营商,旨在为用户提供卓越的网络体验。同时,VAiCDN 的使命是推动全球内容交付的标准,以高效、安全的方式满足不同客户的需求。 从背景来看,VAiCDN成立初衷是为了应对日益复杂的...

    企业云计算的首选:Oracle Cloud VPS详解及其优势

    在现代企业日益依赖云计算的背景下,Oracle Cloud VPS(虚拟专用服务器)因其强大的功能和灵活的解决方案,成为了很多企业的热门选择。简单来说,Oracle Cloud VPS通过虚拟化技术将物理服务器划分成多个独立的虚拟服务器,为用户提供了一种安全、可靠且高效的云计算体验。在这里,我将为大...

    VPS CN2:提升网络性能的最佳选择

    在了解VPS CN2之前,我觉得有必要先简单说说VPS究竟是什么。VPS即虚拟专用服务器,是一种利用虚拟化技术将物理服务器划分成多个独立的虚拟服务器。每个VPS都能独立运行操作系统和应用软件,用户可以通过远程方式管理和使用。这给了我们极大的灵活性和自由度,让我可以随时根据需求扩大或缩小资源。 说到V...

    搬瓦工Plan v2:高性价比VPS套餐详解与用户指南

    搬瓦工Plan v2作为一个限量版VPS套餐,给很多用户带来了新的选择。与之前的The Plan套餐相比,Plan v2在配置与流量方面都实现了显著的提升。这款套餐不仅是一种实用的解决方案,也为不同需求的用户提供了灵活的选择。接下来,我将分享一些关于这个套餐的背景信息、主要升级点以及它适合哪些用户。...

    VPS硬盘清理:提升服务器性能的全面指南

    当我的VPS(虚拟专用服务器)磁盘满了时,事情往往会变得非常棘手。这不仅会导致应用程序的运行速度变慢,甚至可能引发系统崩溃或数据丢失。这样的状况让我不得不思考,定期进行硬盘清理的重要性。其实,维护良好的磁盘使用状况,对于确保服务器的整体性能至关重要。 首先,当VPS磁盘满了,系统的反应速度会明显下降...

    Digital-VM评测:性价比高的VPS主机服务与全球数据中心优势分析

    Digital-VM是一家在2018年成立于美国的主机商,专注于提供VPS主机服务。自成立以来,Digital-VM致力于为全球用户提供高效、低价的云计算解决方案。随着虚拟主机市场的快速发展,Digital-VM不断扩展其服务和产品线,逐渐成长为一家具备竞争力的主机商。在技术方面,Digital-V...