public void UpdateRL(Camera camera, Viewport viewport) { foreach (var primitive in primitives) { primitive.Value.Update(); } RL.BindFramebuffer(FramebufferTarget.Framebuffer, mainFramebuffer); RL.Clear(ClearBufferMask.ColorBufferBit); RL.BindPrimitive(PrimitiveTarget.Primitive, 0); frameProgram.Use(0); camera.Frame.UpdateHierarchicalNoCache(); camera.UpdateFrame(); camera.UpdateViewport(texture.Size); camera.UniformBufferRL.Sync(); camera.UniformBufferRL.UseRL(frameProgram); RL.RenderFrame(); RL.Clear(ClearBufferMask.ColorBufferBit); RL.RenderFrame(); RL.BindBuffer(BufferTarget.PixelPackBuffer, pixelBuffer); RL.BindTexture(TextureTarget.Texture2D, mainFramebufferTexture); RL.GetTexImage(TextureTarget.Texture2D, 0, PixelFormat.Rgba, PixelType.Float, System.IntPtr.Zero); { IntPtr ptr = RL.MapBuffer(BufferTarget.PixelPackBuffer, BufferAccess.ReadOnly); if (ptr != IntPtr.Zero) { UpdateGL(ptr); } RL.UnmapBuffer(BufferTarget.PixelPackBuffer); } RL.BindBuffer(BufferTarget.PixelPackBuffer, System.IntPtr.Zero); }
static RLprogram linkProgram(RLshader shader0, RLshader shader1, string programDescription) { int status; RLprogram programName; programName = RL.CreateProgram(); RL.ProgramString(programName, ProgramStringParameter.ProgramName, programDescription); if (shader0 != System.IntPtr.Zero) { RL.AttachShader(programName, shader0); } if (shader1 != System.IntPtr.Zero) { RL.AttachShader(programName, shader1); } RL.LinkProgram(programName); RL.GetProgram(programName, ProgramParameter.LinkStatus, out status); if (status == 0) { string log; RL.GetProgramString(programName, ProgramStringParameter.LinkLog, out log); throw new System.Exception(programDescription + " linking failed:\n" + log); } return(programName); }
public static void Exec(this FrameworkElement aUIElement, Action aAction, bool aShowWaiting = true) { if (aAction == null) { return; } try { if (aShowWaiting) { aUIElement.Cursor = Cursors.Wait; } aAction(); if (aShowWaiting) { aUIElement.Cursor = Cursors.Arrow; } } catch (Exception ex) { if (aShowWaiting) { aUIElement.Cursor = Cursors.Arrow; } RL.WriteExceptionLog(ex, true, true); } }
public List <UidlItem> GetUidl() { lock (this) { NetworkStream siso = sock.GetStream(); SL.WriteLine(siso, "UIDL"); if ((resp = Resp.ReadFrom(siso)).Ok != true) { throw new CommandFailedException(); } List <UidlItem> al = new List <UidlItem>(); while (true) { string s = RL.ReadLine(siso); if (s.StartsWith(".")) { break; } string[] cols = s.Split(' '); UidlItem o = new UidlItem(); o.i = int.Parse(cols[0]); o.uidl = cols[1]; al.Add(o); } return(al); } }
public void Setup(RL.Map _map, int[] _dir) { map = _map; directions = _dir; lineRenderers = new GameObject[directions.Length]; for (int i = 0; i < directions.Length; i++) { lineRenderers [i] = new GameObject (); lineRenderers [i].transform.parent = transform; lineRenderers [i].transform.position = transform.position; LineRenderer lr = lineRenderers [i].AddComponent<LineRenderer> (); lr.renderer.sortingOrder = 2; lr.renderer.sortingLayerName = "Default"; lr.SetColors(new Color(74/255f,63/255f,148/255f, 0.5f), new Color(113/255f,138/255f,145/255f, 0.5f)); lr.SetWidth (0.05f, 0.05f); lr.material = (Material)Resources.Load ("trapParticle"); lr.useWorldSpace = false; // move out on the direction until we hit a wall, this is our endpoint Vector2i ndir = new Vector2i (RL.Map.nDir[directions[i],0], RL.Map.nDir[directions[i],1]); Vector2i np = GetComponent<RLCharacter>().positionI; int distanceCount = 1; np += ndir; while (map.IsOpenTile (np.x, np.y)) { np += ndir; } // np -= ndir*0.5f; lr.SetPosition (0, Vector3.zero); lr.SetPosition (1, new Vector3(np.x-ndir.x*0.5f, np.y-ndir.y*0.5f, 0)-transform.position); } }
public FramebufferRL(int width, int height) { viewport = new RenderStack.Math.Viewport(width, height); RL.GenFramebuffers(1, out framebufferObject); GhostManager.Gen(); RL.BindFramebuffer(FramebufferTarget.Framebuffer, framebufferObject); }
private void CreateFramebuffer() { // Create the buffer to copy the rendered image into RL.BindBuffer(BufferTarget.PixelPackBuffer, pixelBuffer); RL.BufferData(BufferTarget.PixelPackBuffer, texture.Size.Width * texture.Size.Height * 4 * sizeof(float), System.IntPtr.Zero, BufferUsageHint.DynamicDraw); // Create the framebuffer texture RL.BindTexture(TextureTarget.Texture2D, mainFramebufferTexture); // We have no texture data to specify so we pass NULL for texture data. RL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, texture.Size.Width, texture.Size.Height, 0, PixelFormat.Rgba, PixelType.Float, System.IntPtr.Zero); // Create the framebuffer object to render to // and attach the texture that will store the rendered image. RL.GenFramebuffers(1, out mainFramebuffer); RL.BindFramebuffer(FramebufferTarget.Framebuffer, mainFramebuffer); RL.FramebufferTexture2D( FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0, TextureTarget.Texture2D, mainFramebufferTexture, 0 ); FramebufferErrorCode ok = RL.CheckFramebufferStatus(FramebufferTarget.Framebuffer); }
public IEnumerable <List <RL> > CharsAssembler(sbyte ActiveS) { KarmaDBEntities db = new KarmaDBEntities(); var DBRosterList = db.chartable.Join(db.playerdata, c => c.idplayer, p => p.idPlayer, (c, p) => new { c, p }).Where(t => t.p.IsActive == ActiveS).OrderBy(s => s.p.idPlayer).ToList(); string ID = ""; sbyte isActive = 0; List <RL> ResultList = new List <RL>(); RL Row = new RL(); foreach (var Character in DBRosterList) { ID = Character.p.idPlayer; isActive = Character.p.IsActive ?? 1; if (ID != "" && ID != null) { Row = new RL(); Row.ID = ID; Row.CHARS = CharAssembler(ID); Row.ACTIV = isActive; Row.KARMA = KarmaAsemble(ID); Row.NADEZ = NadezAsemble(ID); } ResultList.Add(Row); } IEnumerable <List <RL> > RGList = ResultList.Where(t => t.ACTIV == ActiveS).GroupBy(x => x.ID) .Select(group => group.ToList()) .ToList(); return(RGList); }
private void Link() { int linkStatus; LinkTime.Start(); RL.LinkProgram(ProgramObject); RL.GetProgram(ProgramObject, ProgramParameter.LinkStatus, out linkStatus); LinkTime.Stop(); if (linkStatus == 0) { string infoLog; RL.GetProgramString(ProgramObject, ProgramStringParameter.LinkLog, out infoLog); RL.DeleteProgram(ProgramObject); System.Diagnostics.Trace.TraceError("Program linking failed:"); System.Diagnostics.Trace.TraceError(infoLog); valid = false; throw new System.InvalidOperationException(); } else { valid = true; } GetAttributes(); GetUniforms(); Prepare(); }
/// <summary> /// <see cref="PsbResCollector.CollectResources"/> for packed-texture specs, like <see cref="PsbSpec.win"/> /// </summary> /// <param name="psb"></param> /// <returns></returns> public static List <ResourceMetadata> CollectSplitResources(this PSB psb) { List <ResourceMetadata> resList = new List <ResourceMetadata>(); var source = (PsbDictionary)psb.Objects["source"]; foreach (var tex in source) { if (tex.Value is PsbDictionary texDic) { var typeStr = (PsbString)texDic["texture"].Children("type"); var bmps = SplitTexture(texDic, psb.Platform); var icons = (PsbDictionary)texDic["icon"]; foreach (var iconPair in icons) { var res = new PsbResource() { Data = RL.GetPixelBytesFromImage(bmps[iconPair.Key], typeStr.Value.ToPsbPixelFormat(psb.Platform)) }; var icon = (PsbDictionary)iconPair.Value; var md = PsbResCollector.GenerateMotionResMetadata(icon, res); md.Spec = psb.Platform; md.TypeString = typeStr; resList.Add(md); } } } return(resList); }
public void TestRGBA8SW() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var imgPath = Path.Combine(resPath, "pm_ev001b.psb", "0.bin"); RL.ConvertToImageFile(File.ReadAllBytes(imgPath), imgPath + "output.png", 32, 1024, PsbImageFormat.png, PsbPixelFormat.RGBA8_SW); }
static RLshader compileShader(string source, ShaderType shaderType, string shaderDescription) { int status; RLshader shader; //source = source.Replace("\r\n","\n"); string[] aStrings = { source }; shader = RL.CreateShader(shaderType); RL.ShaderString(shader, ShaderStringParameter.ShaderName, shaderDescription); RL.ShaderSource(shader, aStrings); RL.CompileShader(shader); RL.GetShader(shader, ShaderParameter.CompileStatus, out status); if (status == 0) { string log = RL.GetShaderString(shader, ShaderStringParameter.CompileLog); string msg = shaderDescription + " compilation failed:\n" + log; System.Console.WriteLine(msg); throw new System.Exception(shaderDescription + " compilation failed:\n" + log); } else { string log = RL.GetShaderString(shader, ShaderStringParameter.CompileLog); string msg = shaderDescription + " compilation ok:\n" + log; System.Console.WriteLine(msg); } return(shader); }
static void DrawOneTriangleFrame() { RL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f); RL.Clear(ClearBufferMask.ColorBufferBit); //RL.RenderFrame(); Glut.SwapBuffers(); }
void set_mid_wheels() { Vector3 pos_1, pos_2; Quaternion rot; FR.GetWorldPose(out pos_1, out rot); RR.GetWorldPose(out pos_2, out rot); FR_wheel.transform.position = Vector3.Lerp(pos_1, pos_2, .5f); FL.GetWorldPose(out pos_1, out rot); RL.GetWorldPose(out pos_2, out rot); FL_wheel.transform.position = Vector3.Lerp(pos_1, pos_2, .5f); }
public void TestDxt5Uncompress() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var rawDxt = Path.Combine(resPath, "D愛子a_春服-pure", "0.raw"); var rawBytes = File.ReadAllBytes(rawDxt); RL.ConvertToImageFile(rawBytes, rawDxt + "-convert.png", 4096, 4096, PsbImageFormat.Png, PsbPixelFormat.DXT5); }
private void Initialize() { RL.GenTextures(1, out textureObject); Debug.WriteLine("GenTextures: " + textureObject.ToString()); GhostManager.Gen(); SetSize(); }
public void Apply(int textureUnit, OpenTK.Graphics.OpenGL.TextureTarget bindTarget) { RL.TexParameter((TextureTarget)bindTarget, TexParameter.TextureMagFilter, (int)(MagFilter)); RL.TexParameter((TextureTarget)bindTarget, TexParameter.TextureMinFilter, (int)(MinFilter)); RL.TexParameter((TextureTarget)bindTarget, TexParameter.TextureWrapS, (int)(Wrap)); RL.TexParameter((TextureTarget)bindTarget, TexParameter.TextureWrapT, (int)(Wrap)); RL.TexParameter((TextureTarget)bindTarget, TexParameter.TextureWrapR, (int)(Wrap)); }
public void TestRlDirectCompress() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var path = Path.Combine(resPath, "emote_test2-pure", "tex-texture.png"); var bytes = RL.CompressImageFile(path, PsbPixelFormat.CommonRGBA8); File.WriteAllBytes(path + ".rl", bytes); }
private void DeleteFramebuffer() { if (mainFramebuffer != System.IntPtr.Zero) { RL.DeleteFramebuffers(ref mainFramebuffer); mainFramebuffer = System.IntPtr.Zero; } }
public void TestA8() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var imgPath = Path.Combine(resPath, "textfont24", "[0]-[0].png"); var bts = RL.GetPixelBytesFromImageFile(imgPath, PsbPixelFormat.A8); RL.ConvertToImageFile(bts, imgPath + "output.png", 2048, 2048, PsbImageFormat.png, PsbPixelFormat.A8); }
public override void InitializeSystems() { base.InitializeSystems(); RL.Load(typeof(App), "LocalizationDemo.", ".trans.json"); RL.SetLanguageKeys(Enum.GetNames(typeof(Languages))); RL.SetLanguage(RL.GetLanguageKeys().FirstOrDefault()); RL.OnLanguageChange += (o, e) => ShowFirstPage(); }
public void TestDxt5Compress() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var rawPng = Path.Combine(resPath, "D愛子a_春服-pure", "0.png"); Bitmap bitmap = new Bitmap(rawPng); var bc3Bytes = DxtUtil.Dxt5Encode(bitmap); RL.ConvertToImageFile(bc3Bytes, rawPng + "-convert.png", 4096, 4096, PsbImageFormat.Png, PsbPixelFormat.DXT5); }
public void TestRlDecompress() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var path = Path.Combine(resPath, "澄怜a_裸.psb-pure", "84.bin"); //輪郭00 RL.DecompressToImageFile(File.ReadAllBytes(path), path + ".png", 570, 426); path = Path.Combine(resPath, "澄怜a_裸.psb-pure", "89.bin"); //胸00 RL.DecompressToImageFile(File.ReadAllBytes(path), path + ".png", 395, 411); }
public void Dispose() { if (framebufferObject != IntPtr.Zero) { RL.DeleteFramebuffers(ref framebufferObject); GhostManager.Delete(); framebufferObject = IntPtr.Zero; } }
public void Dispose() { if (bufferObject != IntPtr.Zero) { RL.DeleteBuffers(ref bufferObject); GhostManager.Delete(); bufferObject = IntPtr.Zero; } }
public MainViewModel() { Languages = RL.GetLanguageKeys().Select(x => new LanguageViewModel(x)).ToList(); Translations = RL.GetEffectiveKeys()[RL.CurrentLanguage].Select(x => new TranslationViewModel { Key = x.Key, Value = x.Value }).ToList(); }
public void wheelsAnimation() { if (frontWheelsMesh != null && rearWheelsMesh != null) { float rotation_angle = 0; Transform FR, FL, RL, RR; //Meshes WheelCollider WFR, WFL, WRL, WRR; //Wheelcolliders //Gets the mesh wheels FL = frontWheelsMesh[LEFT].GetComponent <Transform>(); FR = frontWheelsMesh[RIGHT].GetComponent <Transform>(); RL = rearWheelsMesh[LEFT].GetComponent <Transform>(); RR = rearWheelsMesh[RIGHT].GetComponent <Transform>(); //Gets the WheelColliders WFL = frontWheels[LEFT].GetComponent <WheelCollider>(); WFR = frontWheels[RIGHT].GetComponent <WheelCollider>(); WRL = rearWheels[LEFT].GetComponent <WheelCollider>(); WRR = rearWheels[RIGHT].GetComponent <WheelCollider>(); /*Wheels rotation*/ //Sets the new steering float aux_oldsteer, aux_steer, angle; aux_oldsteer = oldSteering + maxSteeringAngle; aux_steer = currentSteering + maxSteeringAngle; angle = aux_steer - aux_oldsteer; FL.Rotate(Vector3.up, angle); //rotates for the steering FR.Rotate(Vector3.up, angle); oldSteering = currentSteering; //Updates the old steering for the next reajust //Calculates the angle for rotate the rear wheels float rpm = (rearWheels[LEFT].rpm + rearWheels[RIGHT].rpm) / 2; rotation_angle = (-rpm * 360) / 60 * Time.deltaTime; //Rotates the rear wheels RL.Rotate(Vector3.right, rotation_angle, Space.Self); RR.Rotate(Vector3.right, rotation_angle, Space.Self); FLL.transform.Rotate(Vector3.right, rotation_angle, Space.Self); //rotates for the speed FRR.transform.Rotate(Vector3.right, rotation_angle, Space.Self); /*Suspension effects*/ suspensionEffect(WFL, FL); suspensionEffect(WFR, FR); suspensionEffect(WRL, RL); suspensionEffect(WRR, RR); } }
public void Dispose() { if (PrimitiveHandle != 0) { RL.BindPrimitive(PrimitiveTarget.Primitive, 0); RL.DeletePrimitives(ref PrimitiveHandle); PrimitiveHandle = 0; } }
public void Dispose() { if (shaderObject != System.IntPtr.Zero) { RL.DeleteShader(shaderObject); GhostManager.Delete(); shaderObject = System.IntPtr.Zero; } }
// \brief Copies all buffer ranges to buffer public void UpdateAll() { lock (this) { int newSize = 0; bool sizeChanged = false; foreach (var bufferRange in bufferRanges) { newSize += (int)bufferRange.Size; } Use(); #if DEBUG_BUFFER_OBJECTS System.Diagnostics.Debug.WriteLine("Buffer.UpdateAll() " + bufferObject + " with " + bufferRanges.Count.ToString() + " BufferRanges, BufferObject = " + BufferObject + ", new size = " + newSize + ", old size = " + size); #endif if (newSize != size) { #if DEBUG_BUFFER_OBJECTS //Debug.WriteLine("Buffer.UpdateAll() " + bufferObject + " with " + bufferRanges.Count.ToString() + " BufferRanges, BufferObject = " + BufferObject + " new size = " + newSize + " old size + " + size); System.Console.WriteLine("BufferRL.UpdateAll() " + bufferObject.ToString("X") + " with " + bufferRanges.Count.ToString() + " BufferRanges, new size = " + newSize + " old size " + size); #endif size = newSize; sizeChanged = true; RL.BufferData( bufferTarget, size, IntPtr.Zero, bufferUsageHint ); } //long align = 0xf; int offset = 0; #if DEBUG_BUFFER_OBJECTS Debug.WriteLine("Buffer.UpdateAll() with " + bufferRanges.Count.ToString() + " BufferRanges, BufferObject = " + BufferObject + " " + bufferTarget.ToString()); #endif // Collect all buffer range data to a single MemoryStream foreach (var bufferRange in bufferRanges) { // Write buffer range to memory stream bufferRange.WriteTo(offset, sizeChanged); // EXtra alignment just in case offset += (int)bufferRange.Size; //long padding = (-size) & (align - 1); // = align - (size & (align - 1)) //size = (size + align - 1) & ~(align - 1); //memoryStream.Seek(size, SeekOrigin.Begin); //Debug.WriteLine("Padding " + padding.ToString()); } } #if DEBUG_BUFFER_OBJECTS System.Diagnostics.Debug.WriteLine("Buffer.UpdateAll() " + bufferObject + " total size " + size); #endif }
public void TestL8() { var resPath = Path.Combine(Environment.CurrentDirectory, @"..\..\Res"); var imgPath = Path.Combine(resPath, "map00.psb.m", "0.raw"); var img = RL.ConvertToImage(File.ReadAllBytes(imgPath), 1024, 1024, PsbPixelFormat.L8); img.Save("l8.png", ImageFormat.Png); //RL.ConvertToImageFile(bts, imgPath + "output.png", 544, 960, PsbImageFormat.png, PsbPixelFormat.L8_SW); }
/// <summary> /// Convert the given instruction into 1 or more dex instructions. /// </summary> internal static IEnumerable<Instruction> Convert(RL.Instruction source, RegisterMapper regMapper) { var dexIns = new Instruction(source.Code.ToDex(), source.Operand) { SequencePoint = source.SequencePoint }; var dexRegisters = dexIns.Registers; dexRegisters.AddRange(source.Registers.Select(x => regMapper[x])); if (!AllRegistersFit(dexIns) || dexIns.RequiresInvokeRange()) { // At least 1 register does not fit. // Insert a NOP first so we do not have to re-route when we insert spilling code. yield return new Instruction(OpCodes.Nop); } yield return dexIns; }
/// <summary> /// Default ctor /// </summary> public DexCompiler(RL.MethodBody rlBody, MethodBody dexBody, InvocationFrame frame) { this.rlBody = rlBody; this.dexBody = dexBody; this.frame = frame; }