Ender IO Addons

Ender IO Addons

4M Downloads

Problems with render of AgriCraft farming station.

OneEyeMaker opened this issue ยท 33 comments

commented

Hello!
AgriCraft Farming Station doesn't renders in world at all (I see only black borders of block and status - 'No Power'/'No seeds'). And this machine cause huge fps lags (when placed in world, in inventory and in NEI).

Please, fix render of this cool machine!

And Farming Base Module hasn't recipe. Is that normally?

P. S. Sorry for my English, I'm from Russia.

commented

Ok, here is is: http://enderioaddons.loenwind.info/EnderIOAddons-1.7.10-2.3.0.419_beta-0.9.0.019_beta.jar

New recipe is also included. Tell me what you think of it: Normal is iron nugget, hard is only the iron nugget from agricraft. If those are not there: Normal is iron ingot, hard is dark steel ingot.

commented

hard is only the iron nugget

I think it should be something actually harder and not just mod-specific versions of oredicted items.

I also still get lag. I think the lag is less with the block version.
I also get this when I place it in the world: http://b.1339.cf/dqmkldw.png

commented

Lag should be unchanged, I only added profiling.

That picture says "chunk rendering stopped completely when rendering the farm" to me. Is thare anything in the logfile about a rendering crash?

commented

Due to the giant size I can't post all of it but I see http://pastebin.com/nm29DxtG getting repeated (fml-client-latest.log)
This is for latest.log http://pastebin.com/EV7UMupT
Some more interesting screenshots:
http://b.1339.cf/yejnbmp.png (hand disappears)
http://b.1339.cf/bvfkppd.png

And this ofc, but it is above the middle of the file.
[20:17:45] [Client thread/INFO] [enderioaddons/]: farm world: 1945944 ns avg over 2 calls
[20:17:45] [Client thread/INFO] [enderioaddons/]: magcharger item: 38445 ns avg over 103 calls
[20:17:45] [Client thread/INFO] [enderioaddons/]: farm item: 75009 ns avg over 558 calls
[20:17:45] [Client thread/INFO] [enderioaddons/]: farm tesr: 766196 ns avg over 371 calls

edit: Do you use TESR instead of ISBRH to render it?

commented

ok, that GL ERROR is helpful.

The TESR is rendering the text overlay only.

commented

@Rukachan Try --- and check the logfile, please. It will still do the same, but now my code will be reporting that opengl error. Together with some information about where it actually happened.

Oops, I didn't look at the other log. Just a sec

commented
commented

Yeah, seems I didn't press the upload button hard enough ;)

However, that's good because I want you to use http://enderioaddons.loenwind.info/EnderIOAddons-1.7.10-2.3.0.419_beta-0.9.0.021_beta.jar . It will report on the state of the tesselator, but only once. be sure to look for that in the log file; text starts with "Some mod has replaced Minecraft's tesselator".

commented

ok, I might have derped in my diagnosis. Does http://enderioaddons.loenwind.info/EnderIOAddons-1.7.10-2.3.0.419_beta-0.9.0.022_beta.jar fix the problem?

commented

Thanks for crashing my system p:
I get about 500k lines of [21:19:27] [Client thread/WARN] [enderioaddons/]: GL11 1282 at 0

here is the tesselator thing. http://pastebin.com/8ZvLevqn

commented

The problem persists with the new version. And I get thousands of GL11 1282 at 0 with profiling disabled.

commented

At 0 is before my rendering code does anything. So OpenGL already is in an error state when the farm should be rendered.

I need to have a look at that log now.

commented

Actually in the new version it does not lag like hell when having multiple of the item in my inventory, so this part of the problem seems to be fixed.

commented

Just to be sure, is that 8ZvLevqn with build 21 or 22? It should not be possible with 22, that was the change between those builds.

And yes, writing stuff into a logfile at 60 fps is hard on the computer... ;)

commented

8ZvLevqn is with build 21

commented

ok, good. Darn partial deobfuscation, I had grabbed the wrong field names.

With 21 or 22, does the world render at all (no matter how slow) or does Minecraft hang completely with a placed down farm?

commented

With both 21 and 22 minecraft hangs completely after I place the block, I can see for a little bit before it hangs the holes I posted above (http://b.1339.cf/dqmkldw.png).
Sounds still play after it for a bit.
The hanging does not happen with 19.

commented

I'll have a version out in a couple of hours that reacts to rendering errors by falling back to a safer but buggy method. That should fix your problems. Sorry that it will give you skewed textures (on the farm).

commented

Do you have any idea what the issue was? Could it be some kind of driver errors?
And what do you mean by buggy method? What does it do differently?

commented

I'm not quite sure what the problem there really is. It isn't as if I'm calling some funky openGL methods or so. In so far I doubt that there is an error in some driver for this very basic functionality. However, it is possible.

The "buggy" method is letting Minecraft's tesselator do the drawing. It cannot handle anything that's not a rectangle, and the farm has almost none of them. So half of the texture coordinates get lost between me and openGL, which leads to skewed textures---what is lost is the information how to map the texture between the corners. The tesselator basically tells openGL to map all textures with the method for rectangles. That is why I was rendering by hand in the first place.

commented

left: my rendering
right: tesselator

commented

Please provide a list of the mods you have installed. If there's Optifine, try without it.

Farming Base Module should have a recipe. Can you check the oreDict values of items (some mods add it to the tooltip)? Is AgriCraft's iron nugget registered as "nuggetIron"? Or do you have "hard" recipes enabled in Ender IO? Then it uses the "cropFerranium" registration.

commented

I too can reproduce the fps lag with
forge 10.13.4.1558
EnderCore-1.7.10-0.2.0.31_beta
EnderIO-1.7.10-2.3.0.419_beta
EnderIOAddons-1.7.10-2.3.0.419_beta-0.9.0.018_beta
and AgriCraft-1.7.10-1.4.5 (happens also with 1.4.4)

commented
  1. I tested render issue only with:
  • NEI (+ core + addons)
  • CoFHCore + CoFHLib
  • EnderIO (+ core)
  • AgriCraft
  • FastCraft

I confirm that issue: AgriCraft Farming Station doesn't render in world and cause FPS lags when it's rendering in inventory. And I noticed, that model of this machine contains strange green [rotating?] object inside. May be that part of render cause lags. But (as I said) I don't see machine in world; I also noticed, that black frame of blocks near AgriCraft Farming Station become white...

  1. I know, why I haven't recipe for Farming Base Module: I enabled hard recipes in Ender IO and disabled resource crops in AgriCraft. Please, use for crafting items, that are always registered (regardless of configuration of mod).
commented

The green thing is an animated texture, those a "free" in regards to render time. (Minecraft swaps out the whole texture sheet any tick, so it doesn't matter if you have the same texture on all sheets or a different one.)

If things around the farming station render in different color, then tell those mod authors to setBrightness() and setColorOpaque() for their blocks. If they don't, they will render with the same color and brightness as the block that was rendered before them.

For the lag:

  • Please install this version: (link will follow shortly)
  • Enable enable profiling in the mod options (that is: Main Menu->Mod Options-->Select Ender IO Addons from the list->Config->Development (scroll down, it's the last item)->profilingEnabled)
  • Run the game for a while
  • Look into the game's logfile (or console if you are using a launcher that provides one)
  • Copy and paste the last set of "[enderioaddons]: xxx: yyy ns avg over zzz calls"

(Don't be afraid of large numbers, those are nano seconds. One game tick has 5,000,000 of them.)

For the black machine:

I need to think about a way to find out what is happening on your computer.

For the recipe:

Those items not being there comes as a surprise to me. I need to look into alternative recipes and runtime detection of existing items. Oh my, that's what the ore dictionary was invented for, now I have to do it by hand again, just like in times before Forge... ;)

commented

Thank you for your work! Now (with v0.9.1) all works fast.
But I still have one issue. It happens sometimes when Agricraft Farming station is placed and it starts work. Then black border of any selected block (block under cursor) near the machine become white, and brightness of all image on screen (in Minecraft window) changes from dark to bright and back very fast.
http://imgur.com/skq21bp
This behavior lasts for 1-3 seconds and occurs not so often.
I notice that strange behavior when direct draw is enabled. (May be, this behavior doesn't depend on that option, I can't say now).

commented

I also noticed one thing: when DirectDraw is disabled, I have some freezes (FPS lags) not often instead of the behavior (described above).

And so, only one stupid question: why don't you use the same render, that EnderIO uses for regular farming station (I mean ISBRH and IItemRender, not TESR)?

commented

I have an ISBRH for the block, an TESR for the notification text and an item renderer, just as the eio farming station, too. That one, however, uses a techne renderer in the ISBRH, while I use my own that can handle non-cubic non-1/16-block-aligned models. (Feel free to look at the code if you like, it's just a couple of clicks away... ---> )

The fps drop should not be related to the block rendering. I basically pump out pre-calculated vertices to the tesselator with no pause or calculations. However, if you enable the profiling and keep an eye on the log, you should see a rise in avg time just after a drop if it's caused by one of my farm parts.

About the black/white issue: I have no idea what could cause this. However, I just put code in to save and restore the OpenGL state, so my code cannot leak any OpenGL bits. Have you had a look at your logfile? Are there any warnings about openGL errors? Something like this could happen if the block rendering was aborted for errors. Then certainly some states would leak, the block rendering uses different settings than the rest.

commented

Ok, I just released a new version. There is a chance that you will not get render errors. But if you get them, you can disable "direct drawing" in the mod options. My code also checks for openGL errors and will auto-disable if there are too many. --- Actually, I think I messed that functionality up with the last cleanup changes...yes I did. But I left code in that will inform about the error, so you might want to check your logfile and manually disable the rendering if there are errors.

commented

The problem seems to be fixed for me with the last version without falling back to the vanilla renderer (I think? I base that on how the block looks). I will post any kind of related log I find.

Here is the profiling
[20:44:12] [Client thread/INFO] [enderioaddons/]: farm world (direct): 11698 ns avg over 587 calls
[20:44:12] [Client thread/INFO] [enderioaddons/]: farm item (direct): 36047 ns avg over 155271 calls
[20:44:12] [Client thread/INFO] [enderioaddons/]: magcharger item: 22899 ns avg over 24 calls
[20:44:12] [Client thread/INFO] [enderioaddons/]: farm tesr: 287208 ns avg over 36469 calls
[20:44:12] [Client thread/INFO] [enderioaddons/]: farm setup: 11381971 ns avg over 1 calls

Can't seem to find any exception or error about this mod on the logs.

commented

Ok, then I think I know what the error was: Minecraft assuming that any renderer puts something into the tesselator.

BTW: Those notification texts are really slow to draw. That's the Minecraft font renderer for you. :(

commented

Just wondering, why would it need "over 155271 calls" to render the inventory item?

commented

That's because Minecraft renders items every time the screen is redrawn. And that's fps, not tps.

Or if you're unsure about that wording, it's "average over". So that's the number the method rendered the item, and the other number is the average of the time it took it to do once.