Jump to content

ST33LDI9ITAL

Resident
  • Posts

    33
  • Joined

  • Last visited

Everything posted by ST33LDI9ITAL

  1. That isn't true at all. Apple does provide native OpenGL lib that support <= OpenGL 4.1 that runs on a Metal compatibility layer similar to MoltenVK and is accessible to C++. There are plenty of native apps that use OpenGL under the hood. Porting whatever libs that SL viewer uses that don't have an ARM package would be the only real issue. It's far form a "hopeless task" and necessary if they wish to support Mac moving forward. The larger issue is supporting Metal which depends on if they go forward with a Vulkan renderer in the future or decide to do secondary renderer for Mac is up to them. Porting to Vulkan alone isn't going to magically improve the performance of the viewer though, it will just offer them better support and a path to move forward on... For performance, it's going to take some real effort in profiling and refactoring to better take advantage of multi threading/core and non blocking techniques to better structure the viewer as well as some more efficient rendering lod and streaming asset support. Currently it's very congested as can be seen in animations and GUI while under stress.
  2. ----------- 100% This! ^^ Fix. The. Performance. And stop trying to shift the blame to content creators making poorly optimized things. And stop trying to shift the responsibility to the community for the viewer. That's also a byproduct of the issue at hand... LL is supposed to be the enabler of tech that allows content creators to make things easier, more enjoyable, and fun to do! We already have to optimize the ever loving sheet out of mesh to the border breaking point of it to appease the broken LI system and cost associated with it. The viewer, the client. It needs to either be refactored majorly or scrapped and new client to take it's place. There needs to be a movement and joint effort between TPV devs and LL to achieve better performance standards. To which, plennnnty of people have many great suggestions and feedback on how to improve performance. I know I certainly have a list... There is absolutely no reason why the viewer has to be as terrible as it is. The issue is SL is just clunky. Everything about it is clunky af. And that gets old, fast, to people that have better standards of games, apps, etc in this time. There are so many things LL could do to enable us to make better content and make SL more fun which would then draw more people in, more user created and shared content, more community sharing and word of mouth. But most importantly... if you make it more enjoyable then it will RETAIN people and keep their interest! LL needs to catch up to modern times. You're supposed to be a tech research lab.. not archaeology research. Another thing to do with LL enabling tooling is try to keep more things in the client rather than having to export to do minor things in some external app. Expand on LSL api, and better physics interactions. Give builders simple constraints and joints to make contraptions. You shouldn't need to know trig or linear algebra to make basic things interact. Give us the ability, a crude/small editor to make changes to textures ingame.. Better sound manipulation... and how about a simple skeletal animator something like Blackdragon is trying to achieve for animations?? What about expanding gestures to be more of a general macro system and able to do more simple actions like attaching things and what not. 40k pop. Average numbers. Of which... who knows how many are bots. Those numbers don't lie. They are published, and they are sad. This is a huge world! It should not be that empty. What's LL to do when people get tired of buying the same ol clothes? Best believe there isn't much time till a worthy competitor comes along and creators jump ship. It's already been happening for awhile now. (Sorry to derail thread Strawberry, your stream was great and yes SL does need something more to get new users into it because it's not intuitive at all. So I applaud your effort and it's nice to see more videos being made and community effort from LL..thanks. But seriously, there are much more needed efforts and apparently LL is just not hearing the community that's been screaming at them for years.)
  3. Is this going to remain just a personal project? I have interest in rust and in this, I'd really just like to tinker with it some myself and not have to start from scratch. Curious how the metal rendering works out or even using vulkan and testing molten to see differences in performance with wgpu. Also like to see your culling technique. Have you looked into rafx or rg3d?
  4. Well, it's certainly impressive to make a non standard client renderer. Much less in rust given the infancy of support with it currently. Rust will definitely be a much more accepted language for game dev once it matures some over the next year or two and gains support along the way. As with most things nowadays it's coming sooner than later. Wgpu is a really interesting project and people have been exploring it for all sorts of things.
  5. Awesome work Animats! I'd love to poke at this and tinker with it some myself, possibly contribute some if I can find the time lately. But, have been considering doing this very same thing lately, all started getting mac and no native client so it kinda runs like even more of garbage than it already did... considered doing vulkan port with standard client and got to lookin over the sources, then got to thinking about rust as well since I dabble with that too some, and then thought to google it and lo n behold you already the man! Still though, would take a monumental amount of work and effort but it's a really great start tbh. If I can find some spare time after holidays I could def start handling some of the GUI. And I agree, there is absolutely no reason why we shouldn't have a more modern client by now... and definitely in the future for when SL eventually (and will) bite the dust, opensim will be the saving grace for this community.. that time is def sooner than later especially with momentum in the "metaverse" scene. Most will just move on to the next best or hot thing out and others will def migrate to opensim.
  6. Hey there, are there any land groups out there that would buy/rent my premium land usage by applying it to group to use? I recently resubbed premium for a year but have no interest in a linden home or a small plot so would rather just sell it if I can for extra stipend.
  7. Yea, first post and I don't know why it formatted like that with double spaced. =/ Thanks, while I don't know about incorrect.. cause everything is technically kinda working, the wheels turn and spin... When I was banging my head on it last night I was thinking the same that it might would be easier to use axis style rotation, but I'm just not familiar with it or used it so need to play around with it. Will give this a go though and see how it works out! Although I'm not seeing where/how you are applying the wheel spin to the turn in there..
  8. So, working on a wheel script, I'm stumped on one last part of it, and it's killing me... I just want to clamp/limit the max turn angle. Tried many ways and failed. llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, llEuler2Rot(axis) * wRot * rwTurnRate]); It's in a loop..timer. Axis is the wheel axis, basically <0,speed,0> for spinning/rotating it forward/back. wRot is current rot.. and turn rate is a rotation rwTurnRate = llEuler2Rot(<0,0,wTurnRate> * DEG_TO_RAD); //which wTurnRate = 3atm. Currently, the wheels just turn and turn all the way around. I need a way to set say 40deg max angle or so. Every way I've tried so far to get it if I turn the wheel, then move for/back it's invalid/wrong. Expected result is if you turn the wheel 40deg and move forward... it's still turned 40deg..but also need to be able to keep it from incrementally multiplying it.. so I'm guessing I'd need to set the turnrate/deg first and then apply the speed rotation.. I duno. AnimateWheels() { /* instead of trying to find angle/rotation of wheel and clamp a max... and instead of incremental update on animation... lets make it so it animate only applies maxturn, and max turn is set by input increment.. orrr calculate and set turn first... then apply for/rev spin... */ integer i = wheelCount-1; rate = speed / (WheelDiameter*PI); if (abs(rate) < 0.01) rate = 0.0; // close enough to stopped if (rate > MaxRate) rate = MaxRate; // bound if (rate < -MaxRate) rate = -MaxRate; // Update only if significant change or stopping //float err = abs(gLastRate - rate); // error //if((abs(gLastRate - rate) > MinAdjust*rate) || (gLastRate != 0.0 && rate == 0.0)){ for (; i >= 0; --i) //if blocking or causing input lag then convert into timer using increment var... { //llOwnerSay("Loop: " + (string)i); //pass integer wLink = llList2Integer(wheelParams,(wheelParamsStride+1) * i -5); //wheel link integer wAxis = llList2Integer(wheelParams,(wheelParamsStride+1) * i -4); //wheel axis float wTurnRate = llList2Integer(wheelParams,(wheelParamsStride+1) * i -3); //turn rate rotation rwTurnRate = llEuler2Rot(<0,0,wTurnRate> * DEG_TO_RAD); list wList = llGetLinkPrimitiveParams(wLink, [PRIM_ROT_LOCAL]); rotation wRot = llList2Rot(wList, 0); /* vector eulRot = llRot2Euler(wRot1) * RAD_TO_DEG; if(eulRot.z >= 30) eulRot.z = 30; rotation wRot = llEuler2Rot(eulRot*DEG_TO_RAD);*/ //string partName = llToLower(llGetLinkName(wLink)); //llOwnerSay(partName); if(debugInfo == TRUE){ llOwnerSay("////////////////////////"); llOwnerSay("Wheel: " + (string)dinc); vector wheelrot1 = llRot2Euler(wRot)*RAD_TO_DEG; llOwnerSay((string)wheelrot1); vector wheelrot2 = llRot2Euler(wRot); llOwnerSay((string)wheelrot2); vector wheelrot3 = llRot2Up(wRot); llOwnerSay((string)wheelrot3); vector wheelrot4 = llRot2Up(wRot)*RAD_TO_DEG; llOwnerSay((string)wheelrot4); float wheelrot5 = llRot2Angle(wRot); llOwnerSay((string)wheelrot5); llOwnerSay("###############"); dinc++; if(dinc >= 4) debugInfo = FALSE; } if(wAxis == 1) axis = <rate,0,0>; else if(wAxis == 2) axis = <-rate,0,0>; else if(wAxis == 3) axis = <0,rate,0>; else if(wAxis == 4) axis = <0,-rate,0>; else if(wAxis == 5) axis = <0,0,rate>; else if(wAxis == 6) axis = <0,0,-rate>; //llOwnerSay((string)wheelLink); if((rate != gLastRate) && (TurnLeft == FALSE && TurnRight == FALSE))//moving no turning { llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, llEuler2Rot(axis) * wRot]); } else if((gLastRate != rate) && (TurnLeft == TRUE || TurnRight == TRUE))//moving while turning { if(TurnLeft) llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, llEuler2Rot(axis) * wRot * rwTurnRate]); if(TurnRight) llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, llEuler2Rot(axis) * wRot / rwTurnRate]); } else if((gLastRate == rate) && (TurnLeft == TRUE || TurnRight == TRUE))//turning no moving { if(TurnLeft) llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, wRot * rwTurnRate]); if(TurnRight) llSetLinkPrimitiveParamsFast(wLink, [PRIM_ROT_LOCAL, wRot / rwTurnRate]); } } gLastRate = rate; // save for next time }
×
×
  • Create New...