Articles of 扑杀

使某些GameObjects可见的相机

我在2D游戏中有2个摄像头。 一个正常显示游戏对象,另一个摄像机绘制一些reflection的这些游戏对象(scale.y * = -1)。 reflection的摄像机只能绘制“水”图层中的对象,我会改变GameObjects的层,我想反思precull和postrenderfunction。 这样,我可以决定哪些GameObjects会被反映,在运行时即时更改图层,这是一个要求。 -Precull: Change the desired GameObjects layer to "water", and apply scale.y*= -1 -OnPostRender: Change the Gameobjects layer to their original value, and apply scale*= -1 当我的对象很简单时,这是正确的工作,但现在我的对象是更复杂的,我不能依靠改变飞行gameobjects层,因为我不能告诉他们原来的层是什么的每个部分对象,以便恢复precull中应用的更改。 反正有人告诉摄像机除了使用剔除掩模之外还应该渲染哪些对象?

在Unity中移动遮挡物?

我已经在Unity中为赛车游戏制作了一个着色器,在广告牌上有一个大灯发光效果(灯光实际上不是光源,所以我不能使用镜头光晕)。 具有发光纹理的四边形旋转至始终朝向相机,但是由于原始法线与观看方向之间的角度而衰减,因此只有在面向相机时才会出现。 我注意到,当从一个角度观看广告牌的部分被汽车遮挡,所以我把它设置为“ZTest Always”来防止这种情况发生。 这一切都可以正常工作,除了有一部分是用卡车运送新车的,并且在车门打开之前灯光通过卡车门发光:-( 我尝试在MVPmatrix乘法之后重新启用Ztesting并手动调整顶点着色器中的深度,但无法find在某个点上不会导致任何一个问题或另一个问题的最佳点。 所以我想知道是否有一些方法可以在Unity中进行遮挡select。 这样,我就可以让广告牌被门挡住,直到它打开。 文档提到了dynamic对象的“遮挡区域”,但是这似乎是指静态几何体遮挡的移动对象,我不确定它是否相反。 否则,我想它将不得不是某种animation脚本,在门打开的那一刻激活灯光。 编辑 – 这种事情

统一,手动剔除

有没有办法在例如顶点着色器剔除当前顶点? 我有我自己的草地系统,我想剔除距离比一些距离更远的秸秆,但是我不能使用摄像机剔除,因为草块被划分成大块,并且隐藏了整个块。

如何统一管理负载和内存使用和处理

我想知道是否由Unity处理内存和进程管理的级别和场景管理,或者开发人员是否需要处理这些问题。 例如,想象一下你想开发一个开放的世界游戏,并且开始添加人,汽车和建筑物的预制件,直到确定的目标设备不能同时处理所有这些。 我如何管理游戏中处理的内容? 这个管理是由Unity自动处理的,还是我需要为这种工作实施一些技巧?

如果3d表面被另一个3d表面遮挡,这是否会影响性能和渲染速度?

我们有一个3D角色,他的前臂上戴着一副手套,可以打开和closures的可见性。 创建两个版本的arm,一个没有额外的三角形隐藏在手镯下方会更好吗? 或者我们可以只有一个模型作为单独的对象,可以打开和closures? 隐藏的三角形对渲染有什么影响,还是完全被引擎忽略? 更新: PS我们正在使用Unity 3D。

聚光灯剔除。 平面与锥形

我建立了部分转发+引擎部分http://www.humus.name/Articles/PracticalClusteredShading.pdf 如果你去pdf第36页和“spot light culling section”,他们会提到“Do plane-cone test and shrink”。 然而,与伪代码不同,它们提供了球形剔除,它没有更多的信息。 因此,我坚持漂stream互联网试图find实现这一目标的方法。 请指导我正确的方向。

Opengl咬合剔除巨大的性能下降

你好,我尝试使用java&lwjgl在opengl中实现occlusiong剔除我的引擎。 阻挡的作品,但…性能下降是巨大的我的意思是从60-70帧/秒到3-6帧/秒。 这是我的问题我做错了什么? 这是我的代码: //this code is after frustrum culling if object passed glColorMask(false, false, false, false); glDepthMask(false); glBeginQuery(GL_SAMPLES_PASSED, query_id); //renderable is cube not normal object renderable.render(); glEndQuery(GL_SAMPLES_PASSED); int iSamplesPassed = GL15.glGetQueryObjecti(query_id, GL15.GL_QUERY_RESULT); if(iSamplesPassed == 0) { //object is not visible don't render it renderable.setVisible(false); } glColorMask(true, true, true, true); glDepthMask(true); query_id是简单的: query_id = glGenQueries(); […]

添加VFACE语义会导致重叠的输出语义错误

我的像素着色器input如下 struct VertexShaderOut { float4 Position : POSITION0; float2 TextureCoordinates : TEXCOORD0; float4 PositionClone : TEXCOORD1; // Final position values must be cloned to be used in PS calculations float3 Normal : TEXCOORD2; //float3x3 TBN : TEXCOORD3; float CullFace : VFACE; // A negative value faces backwards (-1), while a positive value (+1) faces the […]

统一 – 检查精灵是否在玩家范围内

我需要知道玩家周围的精灵是否在范围内(圆形或方形无关紧要)。 如果这个精灵是,比方说,距离玩家100个街区,我会禁用它。 这不是一个太大的问题,只是比较职位,你就完成了。 然而,我的游戏是基于瓦片的游戏,我希望世界尽可能大,这将导致数以百万计的精灵。 我也可以添加一个overlapcicle2D,但问题是这些对象不能有一个对撞机,因为他们可以步行。 那么我怎样才能检查数以百万计的精灵是否在玩家范围内,而不降低性能? 另外,我可以添加遮挡剔除。 但是,你如何做到这一点与精灵?

使用现有matrix计算相机平截面

我正在尝试对AABB进行基本的平截头体剔除工作,而且我在计算如何从相机的变换matrix中提取平截体时遇到了一些麻烦。 我发现的所有示例代码都需要位置,外观和向量,就像传递给gluLookAt一样。 我的相机matrix可以通过父代码和其他代码进行转换,所以这些向量不会存在于我可以使用的任何地方。 我已经看过gluLookAt的代码,并尝试移植在Lighthouse3D示例的顶部创建Frustum飞机的相反部分。 这是非常接近正确的,但我有物体仍然存在闪烁,所以有些事情是不正确的。 所有相关的代码在这里,所以我希望这将是一个容易find某人。 struct Frustum { enum { TOP, BOTTOM, LEFT, RIGHT, NEAR, FAR }; Frustum(hsMatrix44 cam, float znear, float zfar, float angle, float aspect) { float nw, nh, fw, fh, tang; tang = (float)tan(angle * 0.5); nh = znear * tang; nw = nh * aspect; fh = zfar * tang; […]