Jump to content

Josh

Staff
  • Content Count

    15,990
  • Joined

  • Last visited

Everything posted by Josh

  1. The way I get rid of cracks is by disabling displacement along seams. The new engine uses a per-vertex displacement value but you could use the vertex alpha to control the displacement amount.
  2. I'm at I/ITSEC this week. Learn how Northrop Grumman is using Leadwerks for VR at booth #2548.

    EK3sbITWkAED8F5.thumb.jpg.ffc821b700b850e887d7c2e7d02321c7.jpg

    ย 

  3. It would be possible to write a tessellation shader based on the content of the LE5 shaders.
  4. I want cybertruck ๐Ÿ˜„

    1. ๐Ÿ’ŽYue๐Ÿ’Ž
    2. aiaf

      aiaf

      cybertruck broken window edition :) joke aside coolย car

  5. Happy Thanksgiving!

    1. gamecreator

      gamecreator

      Happy Thanksgiving everyone.

  6. For future reference: https://programmersheaven.com/discussion/362851/using-keyboard-hooks-how-do-i-disable-the-windows-key
  7. The brutal but no-BS design of Vulkan is influencing me.
  8. The code above is the widget script, which you don't have to touch. Usage to create a tabbed panel would be like this: local tabber = CreateWidget(parent,"",0,0,400,300) tabber:SetScript("Scripts/GUI/tabber.lua") tabber:AddItem("Item 1", true) tabber:AddItem("Item 2") tabber:AddItem("Item 3")
  9. Here are some screenshots showing more complex interface items scaled at different resolutions. First, here is the interface at 100% scaling: And here is the same interface at the same screen resolution, with the DPI scaling turned up to 150%: The code to control this is sort of complex, and I don't care. GUI resolution independence is a complicated thing, so the goal should be to create a system that does what it is supposed to do reliably, not to make complicated things simpler at the expense of functionality. function widget:Draw(x,y,width,height) local scale = self.gui:GetScale() self.primitives[1].size = iVec2(self.size.x, self.size.y - self.tabsize.y * scale) self.primitives[2].size = iVec2(self.size.x, self.size.y - self.tabsize.y * scale) --Tabs local n local tabpos = 0 for n = 1, #self.items do local tw = self:TabWidth(n) * scale if n * 3 > #self.primitives - 2 then self:AddRect(iVec2(tabpos,0), iVec2(tw, self.tabsize.y * scale), self.bordercolor, false, self.itemcornerradius * scale) self:AddRect(iVec2(tabpos+1,1), iVec2(tw, self.tabsize.y * scale) - iVec2(2 * scale,-1 * scale), self.backgroundcolor, false, self.itemcornerradius * scale) self:AddTextRect(self.items[n].text, iVec2(tabpos,0), iVec2(tw, self.tabsize.y*scale), self.textcolor, TEXT_CENTER + TEXT_MIDDLE) end if self:SelectedItem() == n then self.primitives[2 + (n - 1) * 3 + 1].position = iVec2(tabpos, 0) self.primitives[2 + (n - 1) * 3 + 1].size = iVec2(tw, self.tabsize.y * scale) + iVec2(0,2) self.primitives[2 + (n - 1) * 3 + 2].position = iVec2(tabpos + 1, 1) self.primitives[2 + (n - 1) * 3 + 2].color = self.selectedtabcolor self.primitives[2 + (n - 1) * 3 + 2].size = iVec2(tw, self.tabsize.y * scale) - iVec2(2,-1) self.primitives[2 + (n - 1) * 3 + 3].color = self.hoveredtextcolor self.primitives[2 + (n - 1) * 3 + 1].position = iVec2(tabpos,0) self.primitives[2 + (n - 1) * 3 + 2].position = iVec2(tabpos + 1, 1) self.primitives[2 + (n - 1) * 3 + 3].position = iVec2(tabpos,0) else self.primitives[2 + (n - 1) * 3 + 1].size = iVec2(tw, self.tabsize.y * scale) self.primitives[2 + (n - 1) * 3 + 2].color = self.tabcolor self.primitives[2 + (n - 1) * 3 + 2].size = iVec2(tw, self.tabsize.y * scale) - iVec2(2,2) if n == self.hovereditem then self.primitives[2 + (n - 1) * 3 + 3].color = self.hoveredtextcolor else self.primitives[2 + (n - 1) * 3 + 3].color = self.textcolor end self.primitives[2 + (n - 1) * 3 + 1].position = iVec2(tabpos,2) self.primitives[2 + (n - 1) * 3 + 2].position = iVec2(tabpos + 1, 3) self.primitives[2 + (n - 1) * 3 + 3].position = iVec2(tabpos,2) end self.primitives[2 + (n - 1) * 3 + 3].text = self.items[n].text tabpos = tabpos + tw - 2 end end
  10. Do I get a big trophy???๐Ÿคช
  11. There's a rotation value in the physics settings you can set to 180 to flip them around the other way. See "character angle": https://www.leadwerks.com/learn?page=Tutorials_Editor_Scene-Panel
  12. I used this to spiffy up the banner image in my profile, which was originally a 1024x768 screenshot: https://www.leadwerks.com/community/profile/1-josh/
  13. A new beta is available with the following changes: Script prefixes are now changed to lowercase entity:Update(), entity:Start(), etc., as well as widget:Draw(), etc. This is because Entity() and Widget() are going to be functions to cast an object to that type. Sprites are now created on a sprite layer object. A sprite layer is created in a world and added to a camera. This allows control over what camera sees what set of sprites. See the examples for details. GUI system is partially working. Resizing the window won't reposition items correctly. Only four widget types are supported, panel, button, hyperlink, and label. Example in the FPSGame demo. The game menu system is packed into an entity script and works really nicely. Widget scripts are a little harder to develop now since they use a system of persistent objects, but performance is very much better than LE4. An interesting detail is that you get free interpolation of position and color at a rate of 60 hz. A lot of work was done to improve the Lua binding system. See details here. Error reporting and handling is much improved. No work was done on sound. No work has been done to the multicam demo, which some people had trouble with. Actors crashing / Lua stack error bug fixed. Changed .bat files to use release version of EXE instead of debug. New commands EmitEvent() and GetEvent(). If the returned event type is EVENT_NONE, there is no event. EVENT_QUIT can be emitted anywhere in the program to signal the main loop to exit. Typical usage is like this: while window:Closed() == false do while true do local event = GetEvent() if event.id == EVENT_QUIT then return end if event.id == EVENT_NONE then break end if event.id == EVENT_WINDOW_CLOSE and Window(event.source) == window then return end--you don't need this when Window:Closed() is being checked for already end world:Update() world:Render(framebuffer) end
  14. Listen:ย 

    1. Slastraf

      Slastraf

      I recently started playing guitar again and there is definitely interest in making something like this myself

    2. tipforeveryone

      tipforeveryone

      is this free to use inย  game ? thรญs music is perfect for run and gun game like quake

  15. It did not do very well with that one. Left to right, low-res, AI upsample, high-res:
  16. This one is really incredible:
  17. Here's an interesting test:
  18. I did a little experiment with FPS Creator Pack #75 by upsampling the images with Gigapixel, which uses deep learning to upsample images and infer details that don't appear in the original pixels. The AI neural network does a pretty impressive job, generating results that are look better than a simple sharpen filter: I doubled the size of the textures to 1024x1024. Then I generated normal maps from the high-res images using AMD's TGA to DOT3 tool, and saved the normal maps with BC5 DDS compression. The diffuse textures were saved with BC7 DDS compression. The images below are using a 4x magnification to demonstrate the difference. As you can see, the image that is upsampled with deep learning looks normal and the resized image looks like there is butter on the lens! It's hard to believe the above images came from a 256x128 section of an image. The workflow was pretty tedious, as I had to convert images to TGA, then to uncompressed or BC5 DDS, and then to BC7 in Visual Studio. Each BC7 texture took maybe 5-10 minutes to compress! So while this set represents the optimum quality for 2019 game tech, and the format for assets we want to use in LE5, the workflow has a lot of room for improvement. You can download the full package here: FPSCPack75TexturesHD.zip
  19. Impressive! You might want to check if a mid-tower case will be okay for your purposes. A full tower is very very tall.
  20. Upsampling an image with Gigapixel gave some pretty impressive results. Original 512x512: 2048x2048: Normal map:
  21. Quadro cards are designed for accuracy and perform poorly compared to GEForce.
  22. I'm trying to make the engine feature-complete ASAP because there are companies that want to use it in VR projects right now. The beta testers really help make this possible!
ร—
ร—
  • Create New...