Datanörderier

Har jag aldrig kodat i… :slight_smile:

1 gillning

UI (kontrollen längst ner) börjar bli klar. Plats för optiering finnes.

Och nu har jag optimerat rendering lite :slight_smile:

nu fungerar aset…

1 gillning

Vad kodar du för nåt?

Nästa projekt @AlbertS? :smiley:

Vill jag lira C64 tar jag väl fram en av dom jag har? :smiley:

Databaser mm.

Ok. Lät som att debug skulle vara ett verktyg för att hitta produktionsbuggar. Tänkte vad det var för spännande.

Tog AI till hjälp att koda en TCBSliderFloat som jobbar mot vanlig SliderFloat men snappar till default, har positiv/negativ nolla (don’t ask, bara UI-grej) och har en grace zone för nollor eftersom dom annars blir svåra att välja. Jag har bara givit AI direktiv. Tog en stund visserligen att få helt rätt (inkl en crashbug) men ändå- noll handpåläggning på koden av mig, enbart direktiv.

Koden som genererades:

static float applyDefaultZeroZones(float u, float defZone, float zeroZone)
{
    // u in [-1,1]
    defZone  = glm::clamp(defZone,  0.0f, 0.999f);
    zeroZone = glm::clamp(zeroZone, 0.0f, 0.999f);

    // ensure ordering: defZone <= zeroZone
    if (zeroZone < defZone) zeroZone = defZone;

    float a = fabsf(u);

    // Inner "default" zone
    if (a <= defZone) return 0.0f;

    // Outer "zero snap buffer"
    if (a <= zeroZone) return 0.0f;

    // Remap (zeroZone..1) -> (0..1)
    float t = (a - zeroZone) / (1.0f - zeroZone);
    return (u < 0.0f) ? -t : t;
}

static float inverseDefaultZeroZones(float v,
                                     float defZone,
                                     float zeroZone,
                                     bool usingDefault,
                                     bool zeroNegative)
{
    defZone  = glm::clamp(defZone,  0.0f, 0.999f);
    zeroZone = glm::clamp(zeroZone, defZone, 0.999f);

    if (v == 0.0f) {
        if (usingDefault)
            return 0.0f; // centered default
        else
            return zeroNegative ? -zeroZone : +zeroZone;
    }

    float a = fabsf(v);
    float u = zeroZone + a * (1.0f - zeroZone);
    return (v < 0.0f) ? -u : u;
}

static bool VSliderTCB(const char* label, const ImVec2& size,
                       float* v,
                       bool& usingDefault,
                       bool& zeroNegative,
                       float default_zone = 0.1f,
                       float zero_zone    = 0.1f,
                       const char* name = "",
                       const char* default_name = "Using default")
{
    float u = inverseDefaultZeroZones(*v, default_zone, zero_zone, usingDefault, zeroNegative);

    // Only treat as interaction that can toggle default if the slider *actually* moved
    const float u_before = u;
    bool rawChanged = ImGui::VSliderFloat(label, size, &u, -1.0f, 1.0f, "");

    if (ImGui::IsItemActive()) {
        if (u < 0.0f) zeroNegative = true;
        else if (u > 0.0f) zeroNegative = false;
    }
 
    // Decide default state ONLY when the user moved the handle
    if (rawChanged && u != u_before) {
        usingDefault = (fabsf(u) <= default_zone);
        if (!usingDefault && fabsf(u) <= zero_zone) {
            // snap-to-zero region, but NOT default
            // (usingDefault already false)
        }
    }

    ImDrawList* dl = ImGui::GetWindowDrawList();
    ImVec2 rmin = ImGui::GetItemRectMin();
    ImVec2 rmax = ImGui::GetItemRectMax();

    if (usingDefault) {
        float h = rmax.y - rmin.y;
        float mid = (rmin.y + rmax.y) * 0.5f;
        float dz = default_zone * 0.5f * h;

        ImVec2 zmin(rmin.x, mid - dz);
        ImVec2 zmax(rmax.x, mid + dz);

        dl->AddRectFilled(zmin, zmax, IM_COL32(80, 140, 255, 60), 2.0f);
    }

    float out = applyDefaultZeroZones(u, default_zone, zero_zone);
    if (usingDefault) out = 0.0f;

    bool changed = rawChanged;
    if (out != *v) { *v = out; changed = true; }

    if (ImGui::IsItemHovered() || ImGui::IsItemActive()) {
        if (usingDefault) ImGui::SetTooltip("%s%s", name, default_name);
        else              ImGui::SetTooltip("%s%.3f", name, *v);
    }

    return changed;
}

Fedefett.

1 gillning

… och här inte alls vad den skall användas till. Men imorgon kanske. Denna redigerar lite defaultvärden (som är bruna för “om man blandar alla färger blir det brunt” som min polare sa).

Men första gången jag kunnat redigera TCB vettigt i en spline så det kan nog bli användbart, speciellt då “C”, continuity dvs hur mjuk kurvan är. (Dom andra två tension och bias, typ hur snabbt dom går in i varje punkt och om dom kommer in tidigt eller sent).


… och nu är nya kurveditorn integrerat med demots kamerasystem.

1 gillning

Tagit upp lite html kodning, inte sysslat med det på säkert 20 år. Det är bara att konstatera att med moderna AI baserade verktyg blir vissa saker barnsligt enkla.

Jag har 93 html-sidor, numrerade helt oväntat 1-93. Huller om buller i texten på dessa 93 sidor är det referenser till någon av de andra sidorna. Nu skall alla dessa referenser bli länkar. Efter man skapat den första länken och således lärt AI:n hur den skall tänka så räcker det att markera referensen i texten och skriva <a så skapas länkar till rätt sidor (av rätt klass dessutom), med 3-10 referenser per sida sparar man oerhört mycket tid.

2 gillningar


Truth!

2 gillningar

Inte klokt vad man kan göra idag. Testade sätta upp OBS (Open Broadcaster Software) som används för streaming online men man kan också bara spara ner till fil och då kan man visa lite mer vad man håller på med på skrivbord och växla mellan olika scener etc.. ganska intressant även om jag inte är en streamer :smiley:

Testade också att göra blipp-blopp för första gången på säkert 25 år. Renoise.

Allt i linux såklart.

Det snurrar ju runt mycket AI-genererade bilder nu i bl a sociala medier. Samtidigt har det dykt upp webbsajter som t ex https://wasitai.com/ som påstår sig kunna avslöja om en bild är AI-genererad eller inte och med hur stor säkerhet.
Har ju skapat en hel del bilder med Chatgpt och alla dessa bilder säger wasitai.com är AI-genererade med 100 % säkerhet.
Ok, men om jag tar en AI-genererad bild och öppnar i mobilen och sedan tar en skärmkopia av den och ber wasitai.com testa den ?
Då blir bilden plötsligt 100 % äkta dvs inte AI-genererad :flushed_face:
Så lät var det att lura systemet…

2 gillningar

Skall vi gissa att det än så länge är mänskligt öga som funkar bäst för AI-identifering?

Det är nog mycket som passerar som man inte reagerar på när det är AI. Det är när det dras mot det extrema som det är lätt att genomskåda. Senast igår såg jag en video där jag inte kunde avgöra om det var AI eller ej. Det var osannolikt att det skulle hända men jag kunde inte se något fel på videon. Nu var det inget viktigt så det fick passera, men gränsen för att kunna lura folk är definitivt passerad. För ett år sen minst.

2 gillningar

Jadå. Så är det. Det blir dessutom bättre och bättre AI hela tiden.