-
Posts
699 -
Joined
-
Last visited
Everything posted by Electrocutor
-
@blackrack State: Clean KSP 1.5.1 with -force-d3d11 Most current scatterer (no config changes) Most current EVE (no configs) Most current TextureReplacer (no config changes) Most current Kopernicus (no configs / config changes) No changes from defaults, nothing else added Errors: I'm also curious if you plan to update scatterer to use Bruneton's newer scattering (from 2017) sometime. https://github.com/Scrawk/Brunetons-Improved-Atmospheric-Scattering
-
@Burning Kan The TU reflections do not work in dx12, but are far more accurate than the ones in the UnofficialPatch. The UnofficialPatch reflections do work in dx12, but are far less accurate than TU. Also, keep in mind that the UnofficialPatch is still a WIP, so I haven't thoroughly tested various interactions between things yet. @horace Any time you add anything to the game, it is no longer stock. TU is an API and does not do anything on its own. If you want recolorable parts that utilize TU, check out ManWith's mod Textures Unlimited Recolour Depot, which is already linked on the front page. He'll be updating it to the new version of TU before long and it will benefit greatly from that. -force-glcore is the command-line argument for OpenGL Core. You can google for instructions on how to set command line arguments on your KSP shortcut: it is in the properties. @Shadowmage You might want to put two sets of explicit directions on how to run the game in glcore and dx11 along with screenshots within a spoiler on the front page. One via steam parameters and one via desktop shortcut.
-
[1.8-1.12] TextureReplacer 4.5.3 (8.2.2022)
Electrocutor replied to shaw's topic in KSP1 Mod Releases
Is there any way to specify a skinPaths = or suitPaths = like you are able to for paths = and ./Default? I'd like to put my suit and skin textures within my own mod, but reference them in TR. -
[1.2.2] Stock Part Revamp, Update 1.9.6. Released Source Files!
Electrocutor replied to Ven's topic in KSP1 Mod Development
@Kerbas_ad_astra said that he is working on converting things to partvariants. In some cases this only takes a few seconds, but in others (especially when the original part has shrouds inside the model), it requires some blender time to make partvariants be able to tell things apart. Also, variant MM patches have to be made in such a way to allow other mods to also add variants without screwing up existing ones. Keep in mind that for a very long time, the only way to download it is via master clone, and not the releases: there has been no new actual release for a very long time. -
[1.5.0] Procedural Fairings 1.5.0.5 (2018/10/18)
Electrocutor replied to rsparkyc's topic in KSP1 Mod Releases
@Gordon Dry The current dev build of TU is changing a ton, just give it some time. If you're using the previously working dll, then the keyword should be TU_RECOLOR_STANDARD instead. If you're using the latest, no variants work unless you define them all inside of TU itself. ---- Also, in the future, unless this author supports TU himself in the mod, please put these kinds of questions into my own thread; thanks. -
[1.5.0] Procedural Fairings 1.5.0.5 (2018/10/18)
Electrocutor replied to rsparkyc's topic in KSP1 Mod Releases
@rsparkyc Here is a TexturesUnlimited patch if you want to include it. It is for the 1.5 release of TU that is currently in dev. [Edit] Do not use this until TU has released for 1.5 unless you like to mess with in-dev builds for testing and such. Recommendations for better appearance: Split the fairing model into an inner and outer mesh so you can recolor the shell while keeping the interior the same. Instead of having the base variant be the default, actually create a VARIANT for it and set baseVariant. This way you can recolor both variants. Recommendations for better use: When you first attach a base, have it auto-detect the bulkheadProfile of the part it is attached to and set itself to the same bulkheadProfile. -
Universal Storage II [1.3.1 and 1.4.5 - 1.7.0]
Electrocutor replied to Paul Kingtiger's topic in KSP1 Mod Releases
Here's a wholly basic TexturesUnlimited patch. No attention to detail or trying to figure out how the switching is working yet, just "Make all the metal!" kind of thing. I may visit this later to make sure things like the Porkjet surfaces are ignored so they stay matching and such, but since it uses its own texture switching, I didn't want to delve into all that yet.- 1,577 replies
-
- 3
-
-
- kis
- universal storage
-
(and 3 more)
Tagged with:
-
totm may 2024 [1.12.x] - Modular Kolonization System (MKS)
Electrocutor replied to RoverDude's topic in KSP1 Mod Releases
Kontainer PartVariants: Aluminum Gold Copper Steel Rubber Carbon Fiber Instructions: Create a new file in GameData named something.cfg Copy and paste the above contents and save the file -
Looking for some rover cockpits
Electrocutor replied to Francois424's topic in KSP1 Mods Discussions
The most complete rover mod is the Feline Utility Rover. RoverDude's aren't bad though and offer quite a bit of variety. -
You might consider using a cfg for these, like you did for identifying the transparency shaders. This way you won't have to actually recompile anything between updates when they continue working on updating parts.
-
Icons Missing in dx11: The external command seat uses KSP/Alpha/Cutoff The fairings use KSP/Diffuse and KSP/Bumped Specular (Cutoff) The mk1 parachute uses KSP/Alpha/Cutoff Bumped
-
If you've tried running a completely stock/fresh install with -force-glcore and it crashes, you should probably find a tool to clean out your video driver install and all its registry garbage, and then re-install it fresh with the option to reset settings checked. Also, make sure that any time you update your video drivers in the future, you first fully uninstall the existing one, as per NVidia's instructions: https://www.nvidia.com/object/IO_13955.html Note that -force-glcore is quite a bit more stable than -force-opengl as well as significantly better performance. Some mods do not like either OpenGL or GLCore though, such as EVE and Scatterer: which are generally more stable with -force-d3d11.
-
I can guarantee that for this you will have to settle for "good enough", because there are just way to many edge cases. Unrelated: Since you were talking about other shaders, you may consider adding lighting from planets i.e. planet reflective/indirect light. I could be wrong, but I think the ambientSkyColor is set for all SOI. This would greatly enhance TU while in orbit.
-
I'd have to implement it to verify, but from random testing, so long as your camera is on the collider line and nearclip is positive, you won't pick up the stuff you are looking through. If you wanted to go the easy route first, you could just use a special syntax for designating window meshes, then place a layer0 one-direction camera on each of them. The problem here is that some vessels get very big with lots and lots of windows, which would turn your potato into a baked potato.
-
Sounds fun. If you're interested, I can explain what I am thinking for the layer0 reflections. My thought is that each vessel only needs one environment probe at the center of the overall vessel bounding box with half the renders semi-static, and the other real-time; and they can be disabled when outside render-range. In the case of multiple vessels (including EVA Kerbal) within a vicinity, you need to create one real-time probe on layer0 on each vessel when they near-enough to each other so they can see each other and you need to move it within the bounding boxes of the vessel to be closest to the approaching other vessel. This way, if a Kerbal were to climb a ladder and stand in front of a large glass window, he could see himself. This layer0 camera would only need 1 direction render because it would always be facing the opposing vessel. The nastiness with this setup is the code to follow the colliders of the vessel to find the nearest place to position the camera. You'd also need to use importance, intensity, and other tricks to make sure that the blending or overlay of the layer0 only showed up on meshes nearest to the camera.
-
Actually, if you look at my code, what you are saying is that the Skybox is rendering on top of the scene view: that was the whole purpose of having a skybox that has only the atmosphere in it.
-
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; namespace UnofficialPatch { public class FixReflections { private EventData<GameEvents.HostedFromToAction<Vessel, Vessel.Situations>>.OnEvent VesselSituationChangedEvent; private Shader _TUSkyboxShader; public void Start() { this.VesselSituationChangedEvent = new EventData<GameEvents.HostedFromToAction<Vessel, Vessel.Situations>>.OnEvent(VesselSituationChangedEventHandler); GameEvents.onVesselSituationChange.Add(this.VesselSituationChangedEvent); Shader[] aryShaders = Resources.FindObjectsOfTypeAll<Shader>(); foreach (Shader oShader in aryShaders) { if (oShader.name == "SSTU/Skybox/Cubemap") { _TUSkyboxShader = oShader; break; } } //SceneManager.activeSceneChanged += SceneManager_activeSceneChanged; } private void SceneManager_activeSceneChanged(Scene arg0, Scene arg1) { Debug.Log("Scene: '" + arg1.name); Debug.Log("AmbientMode: " + RenderSettings.ambientMode.ToString()); Debug.Log("ReflectionMode: " + RenderSettings.defaultReflectionMode.ToString()); Debug.Log("Skybox: " + (RenderSettings.skybox == null ? "null" : RenderSettings.skybox.name)); Debug.Log("CustomReflection: " + (RenderSettings.customReflection == null ? "null" : "cubemap")); } private void VesselSituationChangedEventHandler(GameEvents.HostedFromToAction<Vessel, Vessel.Situations> oSituation) { if (oSituation.host == null || !oSituation.host.isActiveVessel) { return; } UpdateReflections(oSituation.host, oSituation.to); //Debug.Log("[UnofficialPatch] Vessel SituationChanged: " + oSituation.host.name + " - " + oSituation.to.ToString()); } private void UpdateReflections(Vessel oVessel, Vessel.Situations oSituation) { Transform oTransform; GameObject oFarReflect; GameObject oNearReflect; Camera oCamera; ReflectionProbe oProbe; Skybox oSkybox; Cubemap oSkyboxCube; List<KSPLayer> oLayers = new List<KSPLayer>(); oTransform = oVessel.gameObject.transform.Find("FarReflect"); if (oTransform == null) { oFarReflect = new GameObject("FarReflect"); oFarReflect.transform.SetParent(oVessel.gameObject.transform, false); oCamera = oFarReflect.AddComponent<Camera>(); oCamera.enabled = false; oCamera.clearFlags = CameraClearFlags.SolidColor; } else { oFarReflect = oTransform.gameObject; oCamera = oFarReflect.GetComponent<Camera>(); } oTransform = oVessel.gameObject.transform.Find("NearReflect"); if (oTransform == null) { oNearReflect = new GameObject("NearReflect"); oNearReflect.transform.SetParent(oVessel.gameObject.transform, false); oSkybox = oNearReflect.AddComponent<Skybox>(); oSkybox.material = new Material(Shader.Find("Hidden/CubeCopy")); oSkyboxCube = new Cubemap(512, TextureFormat.RGBA32, false); oSkybox.material.mainTexture = oSkyboxCube; oProbe = oNearReflect.AddComponent<ReflectionProbe>(); oProbe.mode = UnityEngine.Rendering.ReflectionProbeMode.Realtime; oProbe.refreshMode = UnityEngine.Rendering.ReflectionProbeRefreshMode.EveryFrame; oProbe.timeSlicingMode = UnityEngine.Rendering.ReflectionProbeTimeSlicingMode.IndividualFaces; oProbe.clearFlags = UnityEngine.Rendering.ReflectionProbeClearFlags.Skybox; oProbe.farClipPlane = 100000f; } else { oNearReflect = oTransform.gameObject; oProbe = oNearReflect.GetComponent<ReflectionProbe>(); oSkybox = oNearReflect.GetComponent<Skybox>(); oSkyboxCube = (Cubemap)oSkybox.material.mainTexture; } if (oSituation == Vessel.Situations.PRELAUNCH || oSituation == Vessel.Situations.LANDED || oSituation == Vessel.Situations.SPLASHED || (oSituation == Vessel.Situations.FLYING && oVessel.altitude < 10000)) { oLayers.Add(KSPLayer.Atmosphere); //oLayers.Add(KSPLayer.ScaledScenery); oCamera.cullingMask = GetCullingMask(oLayers); oCamera.backgroundColor = RenderSettings.ambientSkyColor; oLayers.Clear(); oLayers.Add(KSPLayer.LocalScenery); oLayers.Add(KSPLayer.Water); oProbe.cullingMask = GetCullingMask(oLayers); } else { oLayers.Add(KSPLayer.SkySphere); oCamera.cullingMask = GetCullingMask(oLayers); oCamera.backgroundColor = Color.black; RenderSettings.ambientSkyColor = Color.black; oLayers.Clear(); oLayers.Add(KSPLayer.Atmosphere); oLayers.Add(KSPLayer.ScaledScenery); oProbe.cullingMask = GetCullingMask(oLayers); } oCamera.RenderToCubemap(oSkyboxCube); RenderSettings.skybox = oSkybox.material; } public static int GetCullingMask(List<KSPLayer> oLayers) { int iCullingMask = 0; foreach (KSPLayer oLayer in oLayers) { iCullingMask = (iCullingMask | (1 << (int)oLayer)); } return iCullingMask; } public enum KSPLayer { Default = 0, TransparentFX = 1, IgnoreRaycast = 2, Water = 4, UI = 5, PartsList_Icons = 8, Atmosphere = 9, ScaledScenery = 10, UI_Dialog = 11, UI_Vectors = 12, UI_Mask = 13, Screens = 14, LocalScenery = 15, Unknown = 16, EVA = 17, SkySphere = 18, PhysicalObjects = 19, InternalSpace = 20, PartTriggers = 21, KerbalInstructors = 22, AeroFxIgnore = 23, MapFX = 24, UI_Additional = 25, WheelCollidersIgnore = 26, WheelColliders = 27, TerrainColliders = 28, DragRender = 29, SurfaceFx = 30, Vectors = 31 } } }
-
I am interested, but mostly to find a super efficient way of doing it right. After the near and far scenery is done, I am going to work on layer0 to get Kerbals and Vessels showing up and reflecting each other in windows and such.
-
I was using the TU Skybox shader, but if I had to guess it doesn't work for this because it is fickle about the x,y,z rotation of the cubemap when setting it, whereas the CubeCopy is just a straight WYSIWYG.
-
I got it working: I switched to the Hidden/CubeCopy shader for the skybox and set farClip to 5000f it all works fine now. Unfortunately, I seem to be having some sort of saturation issue or something: You can barely make out the VAB as the skybox is blending with it or has normalized the real-time render or something... if I don't set the skybox, it renders perfectly fine, so I am still missing something. My understanding is that the skybox gets put in the color buffer and then the real-time probe renders into the depth buffer before overwriting, is that not correct?
-
Here is the camera RenderToCube directly put into the ReflectionProbe: Here is the camera RenderToCube put into the TU Skybox, then set the ReflectionProbe to Skybox only: I think my issues may start here. Any idea why the skybox is all messed up like that?
-
[1.2.2] Stock Part Revamp, Update 1.9.6. Released Source Files!
Electrocutor replied to Ven's topic in KSP1 Mod Development
Well crap, I forgot about that. Guess TU is still required for reflective windows. -
[1.2.2] Stock Part Revamp, Update 1.9.6. Released Source Files!
Electrocutor replied to Ven's topic in KSP1 Mod Development
@Kerbas_ad_astra A snippet that may interest you to get reflective windows without any mods: +VARIANT[Basic] { %name = Ven %displayName = Ven %themeName = Ven %GAMEOBJECTS { %Squad/Parts/Command/cupola/model(Clone) = false %VenStockRevamp/Squad/Parts/Command/CommandPods/windowedpod(Clone) = true } TEXTURE { materialName = CoupGlass shader = KSP/Bumped Specular (Mapped) _SpecMap = VenStockRevamp/Squad/Parts/Command/CommandPods/Coup_CLR _Shininess = 0.95 } } [Edit] As blowfish pointed out, this won't work due to not supporting emissive. -
Through my testing, I've gotten everything to work except: oProbe.clearFlags = UnityEngine.Rendering.ReflectionProbeClearFlags.Skybox; ... when skybox is not null. Anytime skybox is not null, it fills the clear with copies of the ReflectionProbe's own internal texture on every face instead of the one that is in the skybox. ---- Adding a custom skybox to a camera works perfectly fine, but I'd prefer to use a reflectionprobe if possible since they are far more optimized.