Jump to content
Unity Insider Forum

Kojote

Members
  • Gesamte Inhalte

    1.475
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    10

Beiträge erstellt von Kojote

  1. Hi!

    Ich hoffe ihr könnt mir bei meinem kleinen Collider-Problem weiterhelfen. Ich habe zwei GameObjects die eine PhysicsShape Komponente haben.

    Im Authoring wandle ich die GameObjects in Entities um und speichere sie in einer IComponentData.

    Danach erzeuge ich einige Entities die auch anwesend sind und von anderer Stelle ihr Material und ihren Mesh bekommen.

    Danach möchte ich bei diesen Entities noch die Collider anfügen, was ich damit mache:

        [UpdateAfter(typeof(TileViewSystem))]
        public partial class TileCollisionSystem : SystemBase {
    
            private EndSimulationEntityCommandBufferSystem _commandBufferSystem;
    
            private PhysicsCollider _floorColliderPrefab;
            private PhysicsCollider _solidColliderPrefab;
    
    
            [BurstCompile]
            public void StarTileCollisionSystem() {
                Entity mapLoaderEntity = SystemAPI.GetSingletonEntity<MapLoaderTag>();
                GameMapAspect gameMapAspect = SystemAPI.GetAspect<GameMapAspect>(mapLoaderEntity);
    
                _floorColliderPrefab = EntityManager.GetComponentData<PhysicsCollider>(gameMapAspect.floorColliderPrefab);
                _solidColliderPrefab = EntityManager.GetComponentData<PhysicsCollider>(gameMapAspect.solidColliderPrefab);
            }
    
            [BurstCompile]
            protected override void OnCreate() {
                _commandBufferSystem = World.GetOrCreateSystemManaged<EndSimulationEntityCommandBufferSystem>();
            }
    
            [BurstCompile]
            protected override void OnUpdate() {
                Entity mapLoaderEntity = SystemAPI.GetSingletonEntity<MapLoaderTag>();
                GameMapAspect gameMapAspect = SystemAPI.GetAspect<GameMapAspect>(mapLoaderEntity);
    
                EntityCommandBuffer.ParallelWriter commandBuffer = _commandBufferSystem.CreateCommandBuffer().AsParallelWriter();
                PhysicsCollider floorPrefab = _floorColliderPrefab;
                PhysicsCollider solidPrefab = _solidColliderPrefab;
    
                // Alle MapTiles durchlaufen, die eine Aktualisierung erfordern und noch keinen Collider haben
                Entities.WithAll<UpdateTileViewTag>().WithNone<PhysicsCollider>().ForEach((int entityInQueryIndex, Entity entity, in MapTileComponent mapTile) => {
                    Debug.Log("Hinzufuegen der Collider!");
                    PhysicsCollider data = mapTile.type.IsSolid() ? solidPrefab : floorPrefab;
                    commandBuffer.AddComponent(entityInQueryIndex, entity, data);
                }).ScheduleParallel();
    
                // Alle MapTiles durchlaufen, damit der derzeitige Collider aktualisiert wird
                Entities.WithAll<UpdateTileViewTag>().ForEach((int entityInQueryIndex, Entity entity, in MapTileComponent mapTile, in PhysicsCollider collider) => {
                    Debug.Log("Aktualisieren der Collider!");
                    ColliderType colliderType = collider.Value.Value.Type;
                    ColliderType expected = mapTile.type.IsSolid() ? ColliderType.Box : ColliderType.Quad;
                    // Wenn der Collider nicht den Erwartungen entspricht, wird er geaendert
                    if(colliderType != expected) {
                        PhysicsCollider data = mapTile.type.IsSolid() ? solidPrefab : floorPrefab;
                        commandBuffer.SetComponent(entityInQueryIndex, entity, data);
                    }
                }).ScheduleParallel();
    
                _commandBufferSystem.AddJobHandleForProducer(this.Dependency);
            }
        }

    Laut Inspector istdie Componente PhysicsCollider da und auch befüllt. Jedoch wird sie weder im Debug, noch mit RayCast erkannt. Den Debug und den RayCast kann ich als Fehler ausschließen, diese funktionieren. Es scheint so zu sein, als ob die PhysicsCollider zugewiesen werden und auch auf der Entitie vorhanden sind, jedoch nicht aktiv sind oder etwas der gleichen.

    So richtig nachvollziehen kann ich es nicht. Habt ihr eine Idee woran es liegen kann?

     

     

  2. Hi!

    Ich habe ein Problem mit der initialisierung eines EntityArchetype.

    Ich habe folgendes Enum:

    public enum MapTileType : byte {
        Empty,
        Water,
        Earth,
        Stone,
        Gold,
        Gems,
        Tile,
        Wall
    }

    Dieses gehört zu einer IComponent:

    public class MapTileComponent : IComponentData {
        public MapTileType type;
        public int2 position;
        public int owner;
    }

    In Meiner Klasse starte ich wie folgt:

    public class MapLoaderAuthoring : MonoBehaviour {
        public GameMapConfiguration gameMap;
    
    	public void Start() {
            int mapWidth = gameMap.terrain.width;
            int mapHeight = gameMap.terrain.height;
    
            EntityManager entityManager = new EntityManager();
    
            EntityArchetype mapTileArchetype = entityManager.CreateArchetype(
                typeof(LocalTransform),
                typeof(LocalToWorld),
                typeof(MapTileType)
            );
    
            // .....
        }
    }

    Problem ist, dass ich beim Start jedes mal die Fehlermeldung bekomme:

    ArgumentException: Unknown Type:`MapTileType` All ComponentType must be known at compile time. For generic components, each concrete type must be registered with [RegisterGenericComponentType].

    Ich hab alles in einem Namespace und über dem Enum folgendes eingefügt:

    [assembly: RegisterGenericComponentType(typeof(MapTileType))]

    Soll laut Internet die Lösung sein, funktioniert aber nicht.

    Hat jemand eine Idee wie ich den Fehler lösen kann? Danke!

  3. Grüße!

    Ich hätte mal wieder eine Frage zur Umsetzung eines Projektes.

    Es geht darum, dass ich ein Spiel plane bei dem man im Untergrund ist und sich Blockweise durch den Untergrund gräbt. Das ganze würde aus der Beobachterperspektive stattfinden.

    Man könnte jetzt hunderte Blöcke im Editor platzieren. Wäre Level jedoch Level für Level umständlich und viel wichtiger, man hätte bei einer 50x50 Map 2.500 Objekte in der Szene. Selbst wenn mir einfallen könnte wie die Blöcke mit einander kommunizieren und man nicht sichbare Flächen nicht anzeigt sind es extrem viele Objekte, Collider, ect.

    Hat jemand eine Idee wie man das umsetzen könnte?

  4. Hi!

    Ich hätte mal eine Frage zu Screen.SetResolution.

    Ich habe ein Settings Script in dem alle Quality Einstellungen zum ersten Spielstart hinterlegt sind.

    Für die Monitorauflösung nutze ich folgendes:

    if(settings.videoSettings.screenResolution == 0) {
    	// No resolution is specified, the standard monitor resolution is used.
        Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen);
        //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
    } else {
    	// Load saved resolution
        Resolution[] resolutionsAll = Screen.resolutions;
    
        Screen.SetResolution(resolutionsAll[settings.videoSettings.screenResolution].width, resolutionsAll[settings.videoSettings.screenResolution].height, settings.videoSettings.fullscreen);
        //Debug.LogError("Load saved resolution. Use: " + resolutionsAll[settings.videoSettings.screenResolution].width + " " + resolutionsAll[settings.videoSettings.screenResolution].height);
    }

    settings.videoSettings.screenResolution gehört zu deinem DropDown Feld mit den möglichen Monitorauflösungen. Der ausgewählte Wert ist screenResolution.

    Alle Einstellungen speichere ich in einer Datei.

    Wenn ich also das Spiel das erste mal starte ist screenResolution immer 0, was auch funktioniert. Er holt sich Screen.with und Screen.height. Auf meinem Monitor wäre das dann 1920 x 1080.

    Mit der Zeile ändere ich die Monitorauflösung:

    Screen.SetResolution(resolutions[resolutionSelect.value].width, resolutions[resolutionSelect.value].height, fullscreenToggle.isOn);

    Jedes mal wenn ich den Settings etwas ändere wird die Datei überschrieben, funktioniert ebenfalls.

    Wenn ich nun die Datei lösche sollten eigentlich alle Werte gelöscht sein und das Script die Default Werte nutzen. Funktioniert aber nicht!

    Er löst zwar in den Settings diese Bedingung aus:

    if(settings.videoSettings.screenResolution == 0) {
    	// No resolution is specified, the standard monitor resolution is used.
        Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen);
        //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
    }

    Problem daran ist, dass die Klasse Screen den letzten Wert speichert. Habe ich also zuletzt mit Screen.SetResolution 800 x 600 angegeben, lösche die Datei und starte das Spiel wieder zum ersten mal, wird nun nicht meine wirkliche Monitorauflösung von 1920 x 1080 genutzt sondern weiterhin 800 x 600. Irgendwie speichert sich Screen.Setresolution den letzten Wert.

    Ändere ich den Code so ab:

    if(settings.videoSettings.screenResolution == 0) {
    	// No resolution is specified, the standard monitor resolution is used.
        Screen.SetResolution(1920, 1080, settings.videoSettings.fullscreen);
        //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height);
    }

    Habe ich das Problem nicht, da ich ja mit den festen Werten von 1920 x 1080 arbeite. 

    Ich müsste also irgendwie verhindern, dass Screen sich Werte speichert.

  5. Hi!

    Ich habe einen Fehler der mir gerade alles zuspamt: "Game object with animator is inactive"

    Ich habe ein Parent welches Kindobjekte deaktiviert. Die Kinder an sich sind Vögel und haben ein Steuerscript und eine Animator Komponente. Das Parent legt fest wie viele Kinder per Zufall gespawnt werden. Alle anderen werden deaktiviert.

    Problem ist nun bei den Kindern diese Fehlermeldung. Egal ob ich nur das Kind deaktiviere oder Kind samt Animator. Fehlermeldung bleibt.

    Hat einer eine Idee wo das Problem ist?

    Grüße von Kojote

     

  6. Hi!

    Mit der letzten und vorletzten neuen Version von Unity 2020 habe ich wunderbare zufällige Fehler bekommen:

    (0,0): error System.IO.IOException: Sharing violation on path C:\Users\User\Documents\Project\Temp\Assembly-CSharp.dll

    Es kommen einige Fehler aus dem Temp Ordner, immer mit Sytsem.IO.IOException. Ich muss Unity neustarten, denn sind die Fehler weg. Leider kann ich auch nicht sagen wodurch sie ausgelöst werden, da sie zufällig erscheinen.

    Hat jemand die selben Probleme oder eine Lösung dafür?

    Grüße von Kojote

  7. Hallo!

    Ich habe ein Problem, das ich mir nicht erklären kann. Nennen wir es einfach "Bewegliche Schattenkante im Terrain".

    Wenn ich mich dem Terrain nähere, gibt es einen kreisförmigen Farbunterschied im Terrain. Je näher ich komme, desto größer wird er.

    Wenn ich auf dem Terrain stehe, ist es etwa 300 m entfernt.

    Denselben Effekt habe ich auch im Editor, wenn ich hinein- und herauszoome.

    Kann mir jemand sagen, woran das liegt? Bei Bild 4 sieht man es am besten.

    aomnbhja.jpg

    cpob4ljf.jpg

    2x62ax87.jpg

    yhe849t9.jpg

     

  8. Hi!

    Ich habe mein Projekt von BuildIn zu URP 10.8 gewechselt. Die Umstellung der normalen Materlianien funktionierte gut. Nur die Partikel machen eine Menge Probleme.

    Wie hier am Bild zu sehen:

    74enahxq.jpg

    Rechts Original, Links Nachbau. Selbe EInstellungen, nur wird links nichts angezeigt.

    Hat jemand eine Idee?

  9. Hi!

    Ich hab mich mal wieder mitd em Frame Debugger beschäftigt, da ich an einer Stelle einen plötzlichen Performanceeinbruch in der Map habe, den ich mir nicht erklären kann.

    zauiq6ac.jpg

    Im Debugger habe ich eine rießige Liste mit "Draw Mesh". Keine Infos und nichts dazu. Was ist das? Liegt dies an Vegetation Studio oder ist das ein Fehler?

  10. Hi Leute!

    Ich habe eine Nvidia GForce GTX 970. Keine neue Grafikkarte, schon etwas älter. Aber man kann damit spielen.

    Meine Scene:

    516 Batches
    72.500 Tris
    66 FPS (16 ms)

    Von den 16 ms heb ich allein schon 8 ms Gfx.WaitForPresentOnGfxThread und noch einmal fast 2 ms ParticleSystem.WaitForPreMapping. Sprich knapp über 10 ms wartet die CPU auf die GPU. Wäre die GPU schneller wären wir bei 6 ms was auch bei dem Terrain ein guter Wert wäre.

    Dabei habe ich nur mein Terrain und ein paar Büsche und Steine verteilt. Ich habe noch keinen Fog an und keine Bäume. Wenn ich diese einfüge komme ich wieder einmal unter 40-50 FPS und das ist für die wenigen Polys und wenigen Landschaftsobjekte echt wenig.

    Ist meine Grafikkarte einfach dermaßen schlecht oder habt ihr eine Idee was hier falsch läuft? Mir fällt echt nicht mehr ein wo ich noch sparen soll. Ich nutze Static, Instant Indirect, sparsame Shader und so weiter.

    Die paar Polys sind ein Witz und das was in der Landschaft zu sehen ist. Ich könnte noch etwas Performance heraus holen indem ich die Schatten deaktiviere, aber das nimmt der Landschaft alles. Gfx.WaitForPresentOnGfxThread sagt ja aus das die CPU auf die GPU wartet. Aber mal ehrlich, die Grafikkarte schafft moderne Spiele in einer guten Auflösung zu verarbeiten. Und bei den paar Steinen und Büschen in der Landschaft soll es meine Grafikkarte nicht mehr schaffe?

    Ich hoffe ihr könnt mir weiter helfen. So kann keiner das Spiel spielen. :(

    Grafikkartenliste: https://www.pc-erfahrung.de/grafikkarte/vga-grafikrangliste.html

    Nach der Liste liegt mein Karte auf Rang 49.

    Das Spiel soll für Gelegenheitsspieler sein, die keinen starken Rechner haben. Deswegen bin ich auch extrem Sparsam mit Polys und der gleichen. Die fertige Scene hat weniger als 90.000 Polys. Da nützt mir aber mein Polygespare nichts, wenn die Leistung wo anders fehlt. 😕

    Oder liegt es an 3 Monitoren und die Grafikkarte kommt an ihre Grenzen?

  11. Hi!

    Mal zur Abwechslung eine Frage zu Partikeln. Ich habe einen Steppenläufer:

    wcez72zr.jpg

    Dieser soll über das Terrain herum kugeln. Problem ist, er kugelt nur gerade aus und passt sich dem Terrain nicht an. Ich habe deswegen eine Collision eingestellt, hier kommt er dank des Bounce einen kleinen Schub nach oben.

    olsh6kxe.jpg

    Problem ist, ein wenig zu viel:

    4olv6dk4.jpg

    Habt ihr eine Idee wie man den Partikel an das Terrain anpassen kann?

    dor238l9.jpg

    xws5rm4g.jpg

    Ansich ist der Partikel ein Mesh. Man könnte auch ohne Partikelsystem arbeiten. Die Frage ist halt, wie er dann vom Wind beinflusst werden könnte.

     

  12. Hi!

    Für eine Unterwasserlandschaft wollte ich gerne einen Caustic Shader nutzen und mit einem Projector Unterwasser nutzen. "Problem" ist, im Shader ist angegeben ab welcher Höhe der Shader funktionieren soll. Da ich aber mehrere Seen habe, die auf unterschiedlicher Höhe sind, habe ich nun ein Problem. Ich könnte nun acht mal den selben Shader nutzen und in jedem Shader eine unterschiedliche Höhe ansetzen. Irgendwie unschön. Gibt es da noch eine andere Möglichkeit über den Projektporter?

    Grüße v. Kojote

  13. Hi!

    Noch ne Frage. Ich versuche gerade einen Mouse Orbiter zu erstellen. Zoom In, Zoom Out und die Rotation funktionieren eigentlich. Problem ist, dass ich nur die X- und Y- Achse drehen will, nicht aber die Z-Achse.

    Die Update-Methode sieht so aus:

     

    private void Update() {
                if(Time.timeScale == 0)
                    return;
    
                // ------------------------------------------------------------------------------------
                // STEUERUNG DES ZOOMS, ABHAENGIG VOM MAUSRAD 
                // ------------------------------------------------------------------------------------
                if(Input.GetAxis("Mouse ScrollWheel") != 0f) {
                    float scroll = Input.GetAxis("Mouse ScrollWheel");
                    float step = scrollSenstivity * Time.deltaTime;
                    cameraDistance = Vector3.Distance(transform.position, cameraTargetTransform.position);
    
                    if(scroll > 0f && cameraDistance > cameraDistanceMin) {
                        transform.position = Vector3.MoveTowards(transform.position, cameraTargetTransform.position, step);
                    } else if(scroll <= 0f && cameraDistance < cameraDistanceMax) {
                        transform.position = Vector3.MoveTowards(transform.position, cameraTargetTransform.position, step * -1);
                    }
                    transform.LookAt(cameraTargetTransform);
                }
    
                // ------------------------------------------------------------------------------------
                // STEUERUNG DER KAMERADREHUNG
                // ------------------------------------------------------------------------------------ 
                if(Input.GetMouseButton(0)) {
                    rotation.x -= Input.GetAxis("Mouse X") * mouseSensitivity;
                    rotation.y += Input.GetAxis("Mouse Y") * mouseSensitivity;
    
                    if(cameraRolloverDeactivate) {
                        if(rotation.y < cameraDistanceHorizonMin)
                            rotation.y = cameraDistanceHorizonMin;
                        else if(rotation.y > cameraDistanceHorizonMax)
                            rotation.y = cameraDistanceHorizonMax;
                    }
    
    
                    transform.RotateAround(cameraTargetTransform.position, Vector3.up, -Input.GetAxis("Mouse X") * mouseSensitivity);
                    transform.RotateAround(cameraTargetTransform.position, Vector3.right, -Input.GetAxis("Mouse Y") * mouseSensitivity);
                    transform.RotateAround(cameraTargetTransform.position, Vector3.forward, 0);
                }
            }

     

    Habt ihr eine Idee wie ich die Z-Achse auf 0 halten kann?

  14. Hi!

    Ich habe mal wieder eine String Frage. Dieses mal zu einem XML String Array. Dieses hat den folgenden Aufbau:

    <?xml version="1.0" encoding="utf-8"?>
    <nameDatabase>
      <firstName>
        <string-array name="first_name_part_1">
          <namePart>A</namePart>
          <namePart>A</namePart>
          <namePart>A</namePart>
        </string-array>
        <string-array name="first_name_part_2">
          <namePart>B</namePart>
          <namePart>B</namePart>
          <namePart>B</namePart>
        </string-array>
        <string-array name="first_name_part_3">
          <namePart>C</namePart>
          <namePart>C</namePart>
          <namePart>C</namePart>
        </string-array>
      </firstName>
      <secoundName>
        <string-array name="first_name_part_1">
          <namePart>1</namePart>
          <namePart>1</namePart>
          <namePart>1</namePart>
        </string-array>
        <string-array name="first_name_part_2">
          <namePart>2</namePart>
          <namePart>2</namePart>
          <namePart>2</namePart>
        </string-array>
      </secoundName>
    </nameDatabase>

    Dies wollte ich als Methode nutzen, aber irgendwie hab ich einen Fehler drin:

    private void LoadXML() {
                TextAsset textAsset = Resources.Load<TextAsset>("XML/LD_MP_Name_List");
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.LoadXml(textAsset.text);
    
                // Load first name part 1
                for(int i = 0; i < xmldoc.ChildNodes[0].ChildNodes[0].ChildNodes.Count; i++) {
                    firstNamePart1.Add(xmldoc.ChildNodes[i].Value);
                }
    
                // Load first name part 2
                for(int i = 0; i < xmldoc.ChildNodes[0].ChildNodes[1].ChildNodes.Count; i++) {
    
                }
    
                // Load first name part 3
                for(int i = 0; i < xmldoc.ChildNodes[0].ChildNodes[2].ChildNodes.Count; i++) {
    
                }
    
                // Load secound name part 1
                for(int i = 0; i < xmldoc.ChildNodes[1].ChildNodes[0].ChildNodes.Count; i++) {
    
                }
    
                // Load secound name part 2
                for(int i = 0; i < xmldoc.ChildNodes[1].ChildNodes[1].ChildNodes.Count; i++) {
    
                }
            }

    Hat einer ne Idee wo mein Fehler ist?

    EDIT:

    Also mittlerweile komm ich voran, ich weiß nur noch nicht wie ich die Arrays auslese:

    foreach(XmlElement node in xmldoc.SelectNodes("nameDatabase/firstName")) {
                    Debug.Log(node.ChildNodes.Count);
                    firstNamePart1.Add(????);
    }

    Kojote

  15. Hi!

    Zur Abwechslung brauche ich mal Hilfe beim Standard-Shader. Diesen nutze ich bei dem Großteil meiner Objekte in der Landschaft. Um nun Vegetation Studio Pro Instant Indirect zu nutzen, braucht der Standard-Shader ein kleines Update in jedem Pass:

    #pragma instancing_options procedural:setup
    #pragma multi_compile GPU_FRUSTUM_ON __
    #include "VS_indirect.cginc"

    Ich habe mir nun von Unity das Shader Build geladen und den Namen des Shaders geändert, zudem überall passend die drei Zeilen inplementiert. Shader wurde compiliert. Frage nun von mir, funktioniert dies so? Ich habe jetzt zwiespältiges gelesen. Die einen meinen, einfach Copy+Paste+Namensänderung und der Shader funktioniert, sehe ich auch bei mir. Andere meinen, es würde zu internen Fehlern führen.

    Hat da jemand Erfahrung?

    So sieht der Shader nun bei mir aus:

    // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
    // 
    // Modified by Coyote to support Instant Indirect from Vegetation Studio Pro.
    
    Shader "Custom/Standard_Instant_Indirect"
    {
        Properties
        {
            _Color("Color", Color) = (1,1,1,1) 
            _MainTex("Albedo", 2D) = "white" {}
    
            _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
    
            _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
            _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0
            [Enum(Metallic Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0
    
            [Gamma] _Metallic("Metallic", Range(0.0, 1.0)) = 0.0
            _MetallicGlossMap("Metallic", 2D) = "white" {}
    
            [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
            [ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0
    
            _BumpScale("Scale", Float) = 1.0
            [Normal] _BumpMap("Normal Map", 2D) = "bump" {}
    
            _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02
            _ParallaxMap ("Height Map", 2D) = "black" {}
    
            _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
            _OcclusionMap("Occlusion", 2D) = "white" {}
    
            _EmissionColor("Color", Color) = (0,0,0)
            _EmissionMap("Emission", 2D) = "white" {}
    
            _DetailMask("Detail Mask", 2D) = "white" {}
    
            _DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {}
            _DetailNormalMapScale("Scale", Float) = 1.0
            [Normal] _DetailNormalMap("Normal Map", 2D) = "bump" {}
    
            [Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0
    
    
            // Blending state
            [HideInInspector] _Mode ("__mode", Float) = 0.0
            [HideInInspector] _SrcBlend ("__src", Float) = 1.0
            [HideInInspector] _DstBlend ("__dst", Float) = 0.0
            [HideInInspector] _ZWrite ("__zw", Float) = 1.0
        }
    
        CGINCLUDE
            #define UNITY_SETUP_BRDF_INPUT MetallicSetup
        ENDCG
    
        SubShader
        {
            Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
            LOD 300
    
    
            // ------------------------------------------------------------------
            //  Base forward pass (directional light, emission, lightmaps, ...)
            Pass
            {
                Name "FORWARD"
                Tags { "LightMode" = "ForwardBase" }
    
                Blend [_SrcBlend] [_DstBlend]
                ZWrite [_ZWrite]
    
                CGPROGRAM
                #pragma target 3.0
    
                // -------------------------------------
    
                #pragma shader_feature_local _NORMALMAP
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_fragment _EMISSION
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF
                #pragma shader_feature_local_fragment _GLOSSYREFLECTIONS_OFF
                #pragma shader_feature_local _PARALLAXMAP
    
                #pragma multi_compile_fwdbase
                #pragma multi_compile_fog
                #pragma multi_compile_instancing
                // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
                //#pragma multi_compile _ LOD_FADE_CROSSFADE
    
                #pragma vertex vertBase
                #pragma fragment fragBase
                #include "UnityStandardCoreForward.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
            // ------------------------------------------------------------------
            //  Additive forward pass (one light per pass)
            Pass
            {
                Name "FORWARD_DELTA"
                Tags { "LightMode" = "ForwardAdd" }
                Blend [_SrcBlend] One
                Fog { Color (0,0,0,0) } // in additive pass fog should be black
                ZWrite Off
                ZTest LEqual
    
                CGPROGRAM
                #pragma target 3.0
    
                // -------------------------------------
    
    
                #pragma shader_feature_local _NORMALMAP
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                #pragma shader_feature_local _PARALLAXMAP
    
                #pragma multi_compile_fwdadd_fullshadows
                #pragma multi_compile_fog
                // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
                //#pragma multi_compile _ LOD_FADE_CROSSFADE
    
                #pragma vertex vertAdd
                #pragma fragment fragAdd
                #include "UnityStandardCoreForward.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
            // ------------------------------------------------------------------
            //  Shadow rendering pass
            Pass {
                Name "ShadowCaster"
                Tags { "LightMode" = "ShadowCaster" }
    
                ZWrite On ZTest LEqual
    
                CGPROGRAM
                #pragma target 3.0
    
                // -------------------------------------
    
    
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local _PARALLAXMAP
                #pragma multi_compile_shadowcaster
                #pragma multi_compile_instancing
                // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
                //#pragma multi_compile _ LOD_FADE_CROSSFADE
    
                #pragma vertex vertShadowCaster
                #pragma fragment fragShadowCaster
    
                #include "UnityStandardShadow.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
            // ------------------------------------------------------------------
            //  Deferred pass
            Pass
            {
                Name "DEFERRED"
                Tags { "LightMode" = "Deferred" }
    
                CGPROGRAM
                #pragma target 3.0
                #pragma exclude_renderers nomrt
    
    
                // -------------------------------------
    
                #pragma shader_feature_local _NORMALMAP
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_fragment _EMISSION
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                #pragma shader_feature_local _PARALLAXMAP
    
                #pragma multi_compile_prepassfinal
                #pragma multi_compile_instancing
                // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
                //#pragma multi_compile _ LOD_FADE_CROSSFADE
    
                #pragma vertex vertDeferred
                #pragma fragment fragDeferred
    
                #include "UnityStandardCore.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
    
            // ------------------------------------------------------------------
            // Extracts information for lightmapping, GI (emission, albedo, ...)
            // This pass it not used during regular rendering.
            Pass
            {
                Name "META"
                Tags { "LightMode"="Meta" }
    
                Cull Off
    
                CGPROGRAM
                #pragma vertex vert_meta
                #pragma fragment frag_meta
    
                #pragma shader_feature_fragment _EMISSION
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                #pragma shader_feature EDITOR_VISUALIZATION
    
                #include "UnityStandardMeta.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
        }
    
        SubShader
        {
            Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
            LOD 150
    
            // ------------------------------------------------------------------
            //  Base forward pass (directional light, emission, lightmaps, ...)
            Pass
            {
                Name "FORWARD"
                Tags { "LightMode" = "ForwardBase" }
    
                Blend [_SrcBlend] [_DstBlend]
                ZWrite [_ZWrite]
    
                CGPROGRAM
                #pragma target 2.0
    
                #pragma shader_feature_local _NORMALMAP
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_fragment _EMISSION
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF
                #pragma shader_feature_local_fragment _GLOSSYREFLECTIONS_OFF
                // SM2.0: NOT SUPPORTED shader_feature_local _DETAIL_MULX2
                // SM2.0: NOT SUPPORTED shader_feature_local _PARALLAXMAP
    
                #pragma skip_variants SHADOWS_SOFT DIRLIGHTMAP_COMBINED
    
                #pragma multi_compile_fwdbase
                #pragma multi_compile_fog
    
                #pragma vertex vertBase
                #pragma fragment fragBase
                #include "UnityStandardCoreForward.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
            // ------------------------------------------------------------------
            //  Additive forward pass (one light per pass)
            Pass
            {
                Name "FORWARD_DELTA"
                Tags { "LightMode" = "ForwardAdd" }
                Blend [_SrcBlend] One
                Fog { Color (0,0,0,0) } // in additive pass fog should be black
                ZWrite Off
                ZTest LEqual
    
                CGPROGRAM
                #pragma target 2.0
    
                #pragma shader_feature_local _NORMALMAP
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                // SM2.0: NOT SUPPORTED shader_feature_local _PARALLAXMAP
                #pragma skip_variants SHADOWS_SOFT
    
                #pragma multi_compile_fwdadd_fullshadows
                #pragma multi_compile_fog
    
                #pragma vertex vertAdd
                #pragma fragment fragAdd
                #include "UnityStandardCoreForward.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
            // ------------------------------------------------------------------
            //  Shadow rendering pass
            Pass {
                Name "ShadowCaster"
                Tags { "LightMode" = "ShadowCaster" }
    
                ZWrite On ZTest LEqual
    
                CGPROGRAM
                #pragma target 2.0
    
                #pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma skip_variants SHADOWS_SOFT
                #pragma multi_compile_shadowcaster
    
                #pragma vertex vertShadowCaster
                #pragma fragment fragShadowCaster
    
                #include "UnityStandardShadow.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
    
            // ------------------------------------------------------------------
            // Extracts information for lightmapping, GI (emission, albedo, ...)
            // This pass it not used during regular rendering.
            Pass
            {
                Name "META"
                Tags { "LightMode"="Meta" }
    
                Cull Off
    
                CGPROGRAM
                #pragma vertex vert_meta
                #pragma fragment frag_meta
    
                #pragma shader_feature_fragment _EMISSION
                #pragma shader_feature_local _METALLICGLOSSMAP
                #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
                #pragma shader_feature_local_fragment _DETAIL_MULX2
                #pragma shader_feature EDITOR_VISUALIZATION
    
                #include "UnityStandardMeta.cginc"
    
                #pragma instancing_options procedural:setup
                #pragma multi_compile GPU_FRUSTUM_ON __
                #include "VS_indirect.cginc"
    
                ENDCG
            }
        }
    
    
        FallBack "VertexLit"
        CustomEditor "StandardShaderGUI"
    }

    Grüße v. Kojote

     

    EDIT: Scheint nicht zu funktionieren, der Shader ansich funktioniert, jedoch bekomme ich aus anderen Stadern zich Fehlermeldungen. Liegt wahrscheintlich wie ich schon vermutete an den Keywords.

    Hat jemand ne andere Idee, was ich als Standardshader nutzen könnte? Brauche nicht umbedingt mehr Funktionen in diesem.

  16. Hi!

    Ich habe ein Problem mit dem Inputfield von Textmesh Pro. Problem ist, wenn ich einen Text eintippe, ist der Text zentriert im Inputfield, was ich auch möchte. Drücke ich aber nun STRG+A um alles zu markieren, wird plötzlich der Punkt wo der Cursor steht zur neuen Mitte und den gesamten Text rückt es nach rechts. Hat einer eine Idee woran dies liegen könnte?

    Grüße v. Kojote

  17. Also ich hab jetzt noch einmal das gesamte Inputfield neu aufgebaut und bisher kann ich sagen, dass der Fehler mit Layout-Elementen zusammen hängt. Was genau der Fehler ist, kann ich aber nicht sagen. Habs nun anders aufgebaut und funktioniert ohne den Fehler.

  18. Grüße!

    Sagt mal, kann mir wer sagen, wie ich den Bug lösen kann:

    Zitat

    Trying to add Caret (TMPro.TMP_SelectionCaret) for graphic rebuild while we are already inside a graphic rebuild loop. This is not supported.

    Dieser Fehler kommt immer, wenn ich in einem Inputfield den Text mit der Backspace Taste wieder lösche. Angeblich wäre der Bug schon vor X Versionen gefixt worden, kommt aber bei mir immer noch. Caret ist bei mir auch als Childobjekt aktiv.

    EDIT: Ja eigenartig, wenn ich die Scene starte, wird in den Inputfield ein neues Child-Object hinzugefügt "Caret". MIt dem Scrfipt "TMP_Selection Caret". Wenn ich dieses Objekt lösche und dann den Bug wieder provozieren will, tritt er nicht auf.

    Grüße v. Kojote

×
×
  • Neu erstellen...