Articles of 灯光

Box2Dights – 除非Xray打开,精灵的中心总是100%不亮(黑色)

我正在使用一个180度的ConeLight,这个设置: pl = new ConeLight(rayHandler, 256, new Color(0.5f, 0.5f, 0.5f, 1f), 280f, 400 – x, 300 – y, 0, 180); 而我正在投影的对象(与?)是这样设置的: sprite = new Sprite(new Texture(imgP)); BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyType.DynamicBody; bodyDef.position.set(x – 392.5f, y – 292.5f); body = Main.world.createBody(bodyDef); PolygonShape pushBlock = new PolygonShape(); pushBlock.setAsBox(((float) w / 2), ((float) h / […]

无法让Box2d灯投射阴影

我正在尝试使用box2dlight为我的游戏添加灯光,并且除了我无法使用box2d主体投射阴影外,我还有其他一切工作。 我也有碰撞工作使用category / maskBits与我的各种对象,我试图应用相同的策略box2dlightfilter。 你可以看到光线是如何通过身体。 编辑:我想我可能已经发现为什么灯不与我的box2d机构相撞。 当我使用“真实世界”尺度像素坐标定义身体形状时,灯光会正确投射阴影,但由于身体是以像素比例定义的,而不是我定义的box2d比例,所以我失去了碰撞。 有谁知道为什么box2dlights正在使用真实世界的规模? 这是我的RayHandler安装程序 RayHandler.useDiffuseLight(false); rayHandler = new RayHandler(world); rayHandler.setAmbientLight(.5f, .5f, .2f, 1f); rayHandler.setBlurNum(1); rayHandler.setShadows(true); 我有一个位于屏幕中心的PointLight。 PointLight pl = new PointLight(game.rayHandler, 128); pl.setDistance(1000); pl.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2); pl.setColor(Color.WHITE); pl.setSoftnessLength(0); Filter filter = new Filter(); filter.categoryBits = B2DVars.CATEGORY_LIGHT; // Value listed below filter.maskBits = B2DVars.MASK_LIGHT; // Value listed below […]

混合和阴影映射?

我试图实现阴影贴图,目前我有2个点光源和1个全局环境光源,渲染循环看起来大致如下(细节不相关): void OpenGLRenderer::DrawRenderables(const uint32_t windowWidth, const uint32_t windowHeight, const RenderQueue& renderQueue, const RenderableLighting& lighting) { GLCALL(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); for (uint32_t lightIndex = 0; lightIndex < lighting.mUsedLights; lightIndex++) { if (lighting.mLights[lightIndex].mLightType == LightType::LIGHT_TYPE_POINT) { GLCALL(glUseProgram(mShadowMapProgram.mProgramHandle)); GLCALL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBuffer)); GLCALL(glViewport(0, 0, mShadowTextureWidth, mShadowTextureHeight)); for (uint32_t faceNum = 0; faceNum < CUBEMAP_NUM_FACES; faceNum++) { GLCALL(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_CUBE_MAP_POSITIVE_X + faceNum, […]

在xna简单的二维瓷砖照明

我目前正试图在我的游戏中实现简单的照明。 我的世界是用二维数组来表示的,每个数字都是一个特定的瓦片。 我正在改变spritebatch.Draw方法中的颜色参数来调暗瓷砖,这对我来说工作得非常好(我不知道如何使用着色器)。每个瓷砖可以有一个从0到5的亮度级别,取决于它的水平,它会更明亮/更黑暗。 我遇到的问题是我使用这个代码来模拟灯光: public void Update() { foreach (NonCollisionTiles tile in nonCollisionTiles) { foreach (NonCollisionTiles otherTile in nonCollisionTiles) { if (otherTile.Rectangle.X == tile.Rectangle.X && (otherTile.Rectangle.Y / size == tile.Rectangle.Y – 1 || otherTile.Rectangle.Y / size == tile.Rectangle.Y + 1)) { if (tile.Light < otherTile.Light) { tile.Light = otherTile.Light – 1; } } else if […]

如何计算间接扩散的球谐系数?

在阅读“辐照度环境地图的高效表示”一文后,我对如何计算球谐系数感到困惑。 我想生成这些系数给定一个立方体地图,我已经dynamic地在引擎中生成。 我目前正在使用DirectX 11,但我对OpenGl有一些了解。 计算这些系数的一些技巧将不胜感激!

高光照明错误

目前我在漫reflection照明的顶端为DirectX中的引擎实施高光照明。 我正在使用一种基于物理的技术,正如您从下面的图像中可以看到的东西显然是错误的。 有人能帮帮我吗? 我认为可能导致问题的一件事是缓冲区打包错误(我昨天才开始学习这样做),所以有些值可能不会正确地发送到HLSL。 这是我的cbuffer结构+光结构。 struct cbPerFrame { Light light; XMVECTOR cameraPosition; float pad; float pad2; float pad3; float Roughness; float Metalness; }; struct Light { Light() { ZeroMemory(this, sizeof(Light)); } XMFLOAT3 dir; float pad; XMFLOAT4 ambient; XMFLOAT4 diffuse; }; 或者,我是如何将相机位置发送给HLSL的? constbuffPerFrame.light = light; constbuffPerFrame.Roughness = 10.0f; constbuffPerFrame.Metalness = 10.0f; constbuffPerFrame.cameraPosition = camPosition; //camPosition is […]

Phong照明模型 – Rvector

在Phong照明模型中,向量R被用于计算光的光谱分量。 用来获得它的等式是 R = 2(N•L)N – L 我不明白为什么我们使用这个方程。 有人能给我一个如何获得这个方程的示范吗?

我如何在OpenGL中实现“切断”照明?

所以,我正在使用OpenGL(我不太确定版本),我想通过在屏幕上绘制一个黑色的矩形来做一个旧式的照明设置,被点燃。 我已经有矩形和圆形,但是我无法弄清楚如何使白色圆圈适用于黑色区域时是透明的。 有任何想法吗? 我试图使用混合模式,但它仍然逃避我… 编辑:这是我正在使用的代码(Python)。 view_buf = Buffer(GL_INT, 4) glGetIntegerv(GL_VIEWPORT, view_buf) view = view_buf.to_list() if hasattr(view_buf, "to_list") else view_buf.list glDisable(GL_DEPTH_TEST) glDisable(GL_LIGHTING) glEnable(GL_BLEND) if logic.lights['smooth']: glEnable(GL_LINE_SMOOTH) # # Make sure we're using smooth shading instead of flat # glShadeModel(GL_SMOOTH) # Setup the matrices glMatrixMode(GL_PROJECTION) glPushMatrix() glLoadIdentity() gluOrtho2D(0, view[2], 0, view[3]) glMatrixMode(GL_MODELVIEW) glPushMatrix() glLoadIdentity() #glAlphaFunc(GL_GREATER, 0.5) glColor4f(0.0, […]

带有凹多边形的dynamic2D柔和阴影?

我已经在gamedev.net上的这篇文章中实现了dynamic2D软阴影。 它使用penubmra的图像,快速,身体准确,在大多数情况下看起来不错,所以我非常喜欢这种技术。 问题在于,对于凹多边形,两个多边形紧靠在一起,或者与光源相比较小的多边形,它不能正常工作。 我的应用程序中的多边形将被用户生成,所以我不能轻易避免这些情况。 在我列出的情况下,有没有一种技术看起来还不错?

环境中立方体的闭塞,一个特定的情况

经过很多的调整,并认为我已经有了AO的工作在我的游戏引擎上, 除了一个特定的情况。 当一个方块在两边其他人之间相互嵌套,但是角落方块丢失时,该角不会被遮挡。 这不是太令人震惊,因为没有其他的逻辑。 但是,我想不出一个办法来整齐地解决这个问题。 如果我在每一边检测到一个块,然后检查角落的一块,我们将在各种情况下结束大量的破坏AO,这将是很多检查启动。 下面是我今天提出的表格,最终解决了我的AOalgorithm的缺失部分: 点击查看大图 我的代码(C#MonoGame)中的逻辑基本上强制执行此表。 如果没有人提出更好的办法,我会在每边的检查中join一系列的布尔值,然后通过每个组合来调整,就好像一对边块是对应的边界块一样。