Questions tagged «pixel»

图像中的物理点或显示设备中最小的可寻址元素。

3
如何避免像素艺术运动中的“楼梯效应”?
我在精确的像素坐标处渲染精灵,以避免因抗锯齿而引起的模糊效果(精灵是像素艺术的,如果进行过滤,效果会很糟)。但是,由于对象的移动涉及可变的速度,重力和物理相互作用,因此轨迹以亚像素精度计算。 在足够大的屏幕空间速度(vΔt大于2或3像素)下,此效果很好。但是,当速度较小时,会出现明显的阶梯效应,尤其是沿对角线时。在非常慢的屏幕空间速度(v << 1像素/秒)下,这不再是问题,因此我只在寻找中等速度值的解决方案。 左图是通过简单舍入对象坐标获得的大速度绘制的轨迹。在中间,您可以看到当速度变小时会发生什么,以及我正在谈论的阶梯效应。在右边,我想获得的轨迹轨迹。 我对算法思想感兴趣,以便对轨迹进行滤波,以最大程度地减少混叠,同时保留大小速度下的原始行为。我可以访问Δt,即时位置和速度以及任意数量的先前值,但是由于它是实时模拟,所以我不知道将来的值(尽管如有必要,可以在某些假设下推断出估算值) 。请注意,由于物理模拟的缘故,方向突然改变也会发生。

1
GLSL光线(衰减,颜色和强度)公式
我正在Voxel引擎中实现点光源,我真的在努力获得良好的光流,从光源附近的100%到光半径的0%。 我对该函数有5个参数: 浅色(Vec3) 光强度(距光的距离,直到衰减为100%的距离) 光线到碎片的距离 从片段法线到光的角度 灯的位置 谁能按正确的方向推动我创建用于计算片段颜色的函数? 我的其中一项实验的图片: 编辑(字节请求当前代码)请注意,这只是我这边的一些实验代码。我从一个网站上获得了一个float att,它虽然可以正常工作,但远非完美。: void main() { // Light color vec3 torchColor = vec3(1.0f, 1.0f, 1.0f); float lightAdd = 0.0f; for (int i=0; i<5; i++) { vec3 pos = lights[i]; if (pos.x == 0.0f) continue; float dist = distance(vertex_pos, pos); if (dist < …
17 opengl  glsl  lwjgl  lighting  pixel 

1
可以使用Unity 2D制作像素艺术游戏吗?
我正在查看Unity 4.3中引入的新2D功能,我想我可能会遗漏一些东西。 在我看来,它们似乎是为高分辨率2D游戏而设计的,在这些2D游戏中可以缩放精灵,但不适用于像素艺术游戏。 像素级精灵设计为在屏幕上精确显示1:1像素:缩放会破坏它(线性缩放是一个例外,即可以将其缩放2倍,3倍,4倍等)。 但是我找不到“按原样显示”的方法,显然Unity坚持将其缩放到它认为合适的任何分辨率:我可以控制Sprite的Camera.size参数和“ pixels to units”参数,但我未能获得此结果。
16 2d  unity  sprites  pixel  pixel-art 

3
如何缩小像素画?
有很多算法可以放大像素画。(我喜欢HQX,个人)。但是否有任何显着的算法,它的规模下来?我的游戏的设计分辨率为1280x720,但如果以较低的分辨率播放,我仍然希望它看起来不错。 大多数像素艺术讨论都围绕320x200或640x480升级到控制台模拟器中使用,但我想知道像Monkey Island Remake这样的现代2D游戏在较低分辨率下会看起来不错吗? 当然,可以忽略拥有多种资产版本的选择(即mipmapping)。

3
如何以全像素间隔移动相机?
基本上,我想阻止相机移动到亚像素,因为我认为这会导致精灵明显地更改其尺寸,即使只是稍微改变一下。(是否有更好的用语?)请注意,这是一款像素艺术游戏,我想拥有清晰的像素化图形。这是显示问题的gif: 现在我尝试的是:移动相机,投影当前位置(因此是屏幕坐标),然后将其舍入或投射为int。之后,将其转换回世界坐标,并将其用作新的相机位置。据我所知,这应该将相机锁定在实际的屏幕坐标上,而不是分数。 但是由于某种原因,y新头寸的价值才爆炸式增长。在短短的几秒钟内,它增加到了类似的程度334756315000。 这是一个基于LibGDX Wiki中的代码的SSCCE(或MCVE): import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; public class PixelMoveCameraTest implements ApplicationListener { static final int WORLD_WIDTH = 100; static final int WORLD_HEIGHT = …
13 libgdx  pixel 

3
如何使用HLSL像素着色器复制NES的颜色限制?
因此,由于256色模式已被弃用,并且在Direct3D模式下不再受支持,因此我有了一个想法,改为使用像素着色器来模拟所有可能颜色的NES调色板,以便淡出的对象以及不具有alpha通道的平滑淡出效果。(我知道对象在NES上并不能真正淡出,但是我的所有对象都会在纯黑色背景上淡入和淡出,这可以通过调换调色板来实现。此外,当您暂停时,屏幕也可以淡入和淡出。我知道通过调色板交换也可以实现,就像在《洛克人》游戏中所做的那样。)问题是,我几乎不了解HLSL着色器。 我该怎么做?
13 shaders  pixel 


6
如何以子像素为单位移动精灵?
像素打开或关闭。您可以移动精灵的最小数量是一个像素。那么如何使子画面每帧移动速度慢于1像素? 我这样做的方法是将速度添加到变量中,然后测试速度是否达到1(或-1)。如果确实如此,那么我将移动精灵并将变量重置为0,如下所示: update(dt): temp_dx += speed * dt temp_dy += speed * dt if (temp_dx > 1) move sprite reset temp_dx to 0 if (tempy_dy > 1) move sprite reset temp_dy to 0 我不喜欢这种方法,因为它感觉很傻,而且精灵的动作看起来非常生涩。那么,您将以哪种方式实现亚像素移动?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.