Jump to content

Forumul a fost actualizat. Informații probleme moderatori aici

Cdorsu

Member
  • Content Count

    218
  • Joined

  • Last visited

Community Reputation

47 Excellent

5 Followers

About Cdorsu

  • Rank
    I'm addicted

Profile Information

  • Gender
    Male
  • Hobbies
    Pissing everyone off

Previous Fields

  • Real name
    Stefan

Recent Profile Visitors

966 profile views
  1. Cdorsu

    Consider ca pot inchide topicul.
  2. Cdorsu

    Uite ce scrie aici. A random number ranging from 0 to max-1. Tu te-ai ocupat de cazurile 1, 2 si 3. Lasand un caz lipsa (0) si ocupandu-te de un caz gol (3). Super basic tutorial. Ma mira ca am avut rabdare sa ma uit la tot.
  3. Procesarea de imagini este un proces foarte costisitor, deoarece trebuie procesat fiecare pixel din imagine. Acest lucru este inaceptabil in ziua de azi, cand asteptam ca totul sa fie facut in timp real. M-am gandit ca o serie de tutoriale de procesare de imagini s-ar putea sa prinda bine comunitatii. O sa incep cu ceva foarte simplu si s-ar putea sa continui cu chestii din ce in ce mai avansate (blur, bloom, dithering, poate chiar sa facem propria aplicatie asemanatoare pentru procesare de imagini - slabe sanse sa fac tutoriale despre asa ceva, pentru ca ar interveni mult mai multe lucruri decat procesare de imagini). In aceasta serie voi folosi prorpiul framework(care initial a fost gandit pentru a fi engine pentru un posibil joc) si HLSL pentru 'GPU Work', voi puteti folosi propriul framework, CUDA, OpenCL sau orice doriti voi, eu voi incerca sa explic doar principiile generale. Grayscale V-ati gandit vreodata cum se face un simplu GrayScale? Nu este foarte complicat. Trebuie doar sa adunam toate culorile si sa le impartim la numarul lor ( (R + G + B) / 3 ). Aceasta ar fi una dintre cele mai simple metode, existand insa si metode mai complicate. Texture2D ObjTexture : register( t0 ); // Textura din care vom citi RWTexture2D<float4> ObjResult : register( u0 ); // Textura in care vom scrie (RW = Read Write) SamplerState ObjWrapSampler : register( s0 ); // Obiectul care ne va ajuta sa luam 'mostre' din textura [numthreads(32, 32, 1)] // Cate threaduri va avea un grup (X = 32, Y = 32, Z = 1), X * Y * Z = 1024; Este recomandat ca acest numar sa fie divizibil cu 64 pe placile video AMD si divizibil cu 32 pe placile video nVidia (64 va merge si pentru nVidia si pentru AMD) void main( uint3 DTid : SV_DispatchThreadID ) // DTid = Coordonatele (x,y,z) ale threadului // Ca sa fie mai usor de inteles DTid.x = [0,width], DTid.y = [0,height] si DTId.z = 0 // Aceste valori au de-aface cu numarul de grupuri alocate de CPU { float width, height; ObjTexture.GetDimensions( width, height ); float2 uv = float2( float( DTid.x ) / width, float( DTid.y ) / height ); // Convertim coordonatele [0,width], respectiv [0,height] in coordonate [0,1] float4 color = ObjTexture.SampleLevel( ObjWrapSampler, uv, 0 ); // O sa 'mostre' din cea mai detaliata textura (MipMapLevel = 0) float finalColor = ( color.r + color.g + color.b ) / 3.0f; // calculul efectiv al culorii ObjResult[ DTid.xy ] = float4( finalColor, finalColor, finalColor, 1.0f ); // scriera pe textura finala } Rezultatul final ar trebui sa arate cam asa: In cazul in care aveti probleme cu intelegerea coordonatelor UV, asta si asta ar trebui sa va ajute. Toate tutorialele din aceasta serie vor fi postate aici. Acesta fiind locul din care puteti incarca framerwork-ul si rula exemplele folosind framework-ul facut de mine. Daca intampinati probleme clonand repository-ul In aceasta serie ma voi ocupa in special de partea de procesare de imagini, n-o sa intru in detaliile framework-ului. Singurul lucru pe care trebuie sa-l stiti despre framework este faptul ca face ce trebuie sa faca.
  4. Cdorsu

    Cosider ca pot inchide topicul.
  5. Consider ca pot inchide topicul.
  6. Am o solutie, dar iar nu sunt sigur daca merge. public class Clasa { private Form mForm; private int mNumber; public Clasa(int Number) { mNumber = Number; mForm = new Form(); mForm.Show(); } } private void reopenButton_Click(Object sender, EventArgs e) { Clasa newObject = new Clasa(PrimulNumar); this.Close(); } Eu am facut pentru un singur intreg, dar cred ca-ti dai seama care e ideea.
  7. N-am lucrat cu C#, dar nu cred ca poate fi chiar atat de greu. 1. Nu prea inteleg ce vrei sa spui cu "asemenea unui joc", dar cred ca asta e ceea ce ai vrut: private void reopenButton_Click(Object sender, EventArgs e) { // Create a new instance of the Form2 class Form2 secondForm = new Form2(); // Show the second form secondForm.Show(); this.Close(); } Daca vrei ca in acelasi form sa fie facuta intreaga schimbare e putin mai complicat. Trebuie sa stergi tot din form si dupa sa afisezi ce ai nevoie. (Sau cel putin asa as face eu) 2. Cred ca ai pus un cursor mult prea mare. De obicei un cursor 16x16 sau 8x8 e suficient de mare. Daca esti sigur ca nu ai un cusor foarte mare, poti folosi asta. // Exemplul de pe MSDN public Form1() { this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "Cursor Example"; // The following generates a cursor from an embedded resource. // To add a custom cursor, create or use an existing 16x16 bitmap // 1. Add a new cursor file to your project: // File->Add New Item->Local Project Items->Cursor File // 2. Select 16x16 image type: // Image->Current Icon Image Types->16x16 // --- To make the custom cursor an embedded resource --- // In Visual Studio: // 1. Select the cursor file in the Solution Explorer // 2. Choose View->Properties. // 3. In the properties window switch "Build Action" to "Embedded" // On the command line: // Add the following flag: // /res:CursorFileName.Cur,Namespace.CursorFileName.Cur // // Where "Namespace" is the namespace in which you want to use the cursor // and "CursorFileName.Cur" is the cursor filename. // The following line uses the namespace from the passed-in type // and looks for CustomCursor.MyCursor.Cur in the assemblies manifest. // NOTE: The cursor name is acase sensitive. this.Cursor = new Cursor(GetType(), "MyCursor.Cur"); }
  8. Cdorsu

    Daca nu te-a intrebat nimeni nimic, de ce ai raspuns? Nu inteleg de ce v-ati bagat aici daca nu aveti nicio legatura cu subiectul... Nu aici ceri moduri...
  9. Cdorsu

    Very foarte simplu. Consider ca pot inchide topicul. Daca aveti intrebari sau nelamuriri, PM lui @GF Andrei26, mie sau altui programator.
  10. Cdorsu

    Au trecut mai mult de 3 zile de cand topicul a fost deschis.
  11. Cdorsu

    Au trecut mai mult de 3 zile de cand acest topic a fost deschis.
  12. Cdorsu

    Au trecut mai mult de 3 zile de cand acest topic a fost deschis.
  13. Cdorsu

    Doar ai postat niste cod. Asta nu e un tutorial, nici cerere de ajutor si nici macar o creatie pentru ca nu e complet.
  14. Cdorsu

    Nici macar n-ai verificat inainte sa postezi ... Nu merge link-ul asta.
  15. Cdorsu

    Nu ai citat sursa.
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.