草庐IT

Lighting

全部标签

java - 没有 box2d 的 Libgdx 光

我刚开始使用libgdx创建游戏。这是一个使用scene2dui的自上而下的2d射击游戏。现在我想,我可以在某些层面上添加黑暗和光明,但我不想使用box2d重写所有内容。我不需要逼真的阴影,只需要某种环境光和我角色周围的光环,它不受墙壁和他周围其他障碍物的影响。所以我想知道libgdx中是否有任何类型的光系统?或者我可以在不使用box2dbodies/world的情况下使用box2dlights吗?谢谢 最佳答案 在我看来,标记的答案是错误的。如果您不想要任何阴影,那么在不使用box2d的情况下使用box2dLights实际上非常简

c++ - SDL2 - 在纹理上绘制完全透明的圆圈

我正在使用SDL2.0开发一款2D游戏,但我的光照系统出现了问题。我想用雾填充屏幕并在播放器周围创建一个透明圆圈(左下角)。我知道如何使用SDL_BLENDMODE_MOD(右下角)用有色光制作暗室,但我无法制作雾。我已经尝试使用我能想到的SDL_SetRenderDrawBlendMode()和SDL_SetTextureBlendMode()的每种组合在屏幕上分层多个纹理。我在StackOverflow上搜索并找到了解决方案,例如this,但他们使用SDL表面和预制光图像。我将动态更改输入图像(右上角)的形状和大小,因此我需要更灵活的东西。解决方案1:我没有使用白色圆圈和黑色背景,

c++ - OpenGL光照问题

当我在OpenGL中启用光照时,我无法看到我创建的对象。我有一个从3DMax导入的对象,它的照明工作正常,但我的场景的其余部分没有。我知道我需要指定法线,但这似乎没有帮助。虽然如果我在我的display()函数中创建一个简单的多边形可以正常工作,但是在类的方法中创建并在display()函数中调用的其他多边形不会显示这是我的照明代码glewInit();glClearColor(0.0,0.0,0.0,0.0);glClear(GL_COLOR_BUFFER_BIT)glShadeModel(GL_SMOOTH);//lightpositionandcolourGLfloatlight

c++ - 具有光体积的延迟渲染器产生奇怪的 strip

我有一个延迟渲染器,它只在当前片段在光源范围内时才计算光照方程。我通过计算我的应用程序中光体积的大小并将其与其他光信息一起发送到着色器来执行此操作。然后我检查片段和lightPos之间的距离(每个灯)并将灯的体积用作阈值。为了简单起见,我使用线性方程(二次方程产生太大的光量)来衰减光。所有的光照方程都工作正常,但是当我使用多个光照时,我有时会看到奇怪的圆圈边界,就好像距离检查导致光照计算过早停止导致光照突然变化一样。您可以在下图中看到这种效果:片段着色器代码如下:vec3position=texture(worldPos,fs_in.TexCoords).rgb;vec3normal=

c++ - D3D11 : variable number of lights in HLSL

我正在使用C++和Direct3D11开发游戏引擎,现在我想向场景中添加可变数量的灯光。到目前为止,我设法添加和渲染了一些已知的并在着色器程序中编码的简单灯光。在shader.fx中:staticconstintLightsCount=4;structNF3D_LIGHT{//Members...};cbufferLight:register(b5){NF3D_LIGHTlight[LightsCount];};...//Andthepixelshaderfunction:float4PS(PS_INPUTinput):SV_Target{for(inti=0;i这很好用。但如果我尝试

c++ - 平坦水面上的法线贴图会产生不正确的镜面高光

我有一个平坦的水面,上面附有dudv和法线贴图。dudv贴图工作正常,法线贴图也正确附加(可视化法线贴图看起来应该如此)。尽管光线方向不正确,但镜面高光总是显示在错误的位置。照明在没有法线贴图的情况下也能正常工作,所以我不相信这是光的方向,但可能与切线空间有关。由于我是根据一组静态vector计算切线空间的,所以我很困惑哪里可能出错。我在顶点着色器中创建了TBN矩阵,用于创建发送到片段着色器的切线空间vector:constvec3TANGENT=vec3(1.0,0.0,0.0);constvec3NORMAL=vec3(0.0,1.0,0.0);constvec3BITANGENT

c++ - 基本的 OpenGL 光照问题

我认为这是一个非常愚蠢的新手问题,但我是图形和openGL方面的新手。绘制了一个球体并在附近放置了一个光源,同时指定了环境光,我开始试验光和Material值并得出了一个令人惊讶的结论:我们使用glColor*指定的颜色无关紧要在启用照明时完全没有。相反,等效物是Material的环境成分。这个结论正确吗?谢谢 最佳答案 如果启用光照,则Material颜色(好吧,颜色-有几种颜色用于对光的不同类型的响应)被使用。Material颜色由glMaterial*函数指定。如果你想重用你的代码,你可以使用glEnable(GL_COLOR

c++ - OpenGL:如何使光与旋转无关?

我有一个漫射照明着色器,它似乎在对象不旋转时起作用。然而,当我应用旋转变换时,光线似乎也随着物体旋转。这就像物体和光线保持静止,但相机是围绕物体移动的相机。这是我的顶点着色器代码:#version110uniformmat4projectionMatrix;uniformmat4modelviewMatrix;uniformvec3lightSource;attributevec3vertex;attributevec3normal;varyingvec2texcoord;voidmain(){gl_Position=projectionMatrix*modelviewMatrix*v

c++ - 镜面反射分量不正确的法线贴图和 phong 着色

我正在世界空间坐标中实现法线/凹凸贴图(我发现它们更容易使用)并且我的照明在没有法线贴图的情况下也能正常工作,但是当引入法线贴图(以及使用TBN矩阵计算的新vector)时我的照明的镜面反射组件已关闭。镜面反射分量不在相机和灯光之间,所以有些地方是错误的。但是,查看我的代码我找不到任何问题。切线和双切线来自ASSIMP对象加载器,eyePos和lightPos也在世界坐标中。由于光照在镜面反射部分看起来是正确的(显示了凹凸贴图),我认为它与切线空间变换有关?这是一张展示问题的图片:顶点着色器:#version330layout(location=0)invec4vertex;layou

java - 如何在 openGL 中制作光球?

我正在尝试制作一个光球(如太阳),但我似乎根本无法使其可见。我会给你一些我拥有的代码片段。它使用JavaLWJGL,因此看起来可能有点不同。privatefloatlightAmbient[]={0.0f,1.0f,1.0f,1.0f};//AmbientLightValues(NEW)privatefloatlightDiffuse[]={1.0f,1.0f,1.0f,1.0f};//DiffuseLightValues(NEW)privatefloatlightPosition[]={0.0f,0.0f,-5.0f,1.0f};//LightPosition(NEW)floatli