crunch | Advanced DXTc texture compression | Compression library

 by   BinomialLLC C++ Version: Current License: Non-SPDX

kandi X-RAY | crunch Summary

kandi X-RAY | crunch Summary

crunch is a C++ library typically used in Utilities, Compression applications. crunch has no bugs, it has no vulnerabilities and it has medium support. However crunch has a Non-SPDX License. You can download it from GitHub.

crnlib is a lossy texture compression library for developers that ship content using the DXT1/5/N or 3DC compressed color/normal map/cubemap mipmapped texture formats. It was written by the same author as the open source LZHAM compression library. It can compress mipmapped 2D textures, normal maps, and cubemaps to approx. 1-1.25 bits/texel, and normal maps to 1.75-2 bits/texel. The actual bitrate depends on the complexity of the texture itself, the specified quality factor/target bitrate, and ultimately on the desired quality needed for a particular texture. crnlib's differs significantly from other approaches because its compressed texture data format was carefully designed to be quickly transcodable directly to DXTn with no intermediate recompression step. The typical (single threaded) transcode to DXTn rate is generally between 100-250 megatexels/sec. The current library supports PC (Win32/x64) and Xbox 360. Fast random access to individual mipmap levels is supported. crnlib can also generates standard .DDS files at specified quality setting, which results in files that are much more compressible by LZMA/Deflate/etc. compared to files generated by standard DXTn texture tools (see below). This feature allows easy integration into any engine or graphics library that already supports .DDS files. The .CRN file format supports the following core DXTn texture formats: DXT1 (but not DXT1A), DXT5, DXT5A, and DXN/3DC. It also supports several popular swizzled variants (several are also supported by AMD's Compressonator): DXT5_XGBR, DXT5_xGxR, DXT5_AGBR, and DXT5_CCxY (experimental luma-chroma YCoCg).
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              crunch has a medium active ecosystem.
              It has 774 star(s) with 171 fork(s). There are 49 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 17 open issues and 4 have been closed. On average issues are closed in 530 days. There are 12 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of crunch is current.

            kandi-Quality Quality

              crunch has 0 bugs and 0 code smells.

            kandi-Security Security

              crunch has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              crunch code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              crunch has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              crunch releases are not available. You will need to build from source code and install.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of crunch
            Get all kandi verified functions for this library.

            crunch Key Features

            No Key Features are available at this moment for crunch.

            crunch Examples and Code Snippets

            No Code Snippets are available at this moment for crunch.

            Community Discussions

            QUESTION

            C# transactionally swap two folder
            Asked 2022-Mar-14 at 15:23

            I have two folder, for example "C:\Working" and "C:\Final". I have a slow procedure that will crunch data received in "C:\Working" when needed.

            When the procedure that manipulate data inside "C:\Working" has finished i would like replace the old data (inside "C:\Final") with the latest information into "C:\Working" (the information into "C:\Working" are always complete and up to date).

            So basically i would like to :

            1. rename "C:\Final" in "C:_Final"
            2. rename "C:\Working" in "C:\Final"
            3. delete "C:_Final"
            4. create "C:\Working" (now empty)

            In that way the time in which the application (that use "C:\Final") have to wait is small.

            So the only idea that come to mind was the subsequent :

            ...

            ANSWER

            Answered 2022-Mar-08 at 16:36

            After a bit of research about NTFS atomic operation and support of NET Framework of such kind of operation, i found out topic that sugget using transaction to implement atomicity among when you deal with file system operation.

            Seems also that, even if natively the file system operations do not support transaction; there is a Nuget package (TxFileManager) that is focused on provide transactional support over file system operations. So a combination of transaction and the package mentioned above should allow atomic operation over file system

            Source https://stackoverflow.com/questions/71396789

            QUESTION

            Python Qt - do signals need to be created in the worker thread?
            Asked 2022-Mar-08 at 18:31

            I am using Python Qt (PySide2) which has a GUI in the main thread and a library that does IO, data-crunching, etc in a second thread.

            I use signals & slots to update the GUI. In the examples I have seen on SO, the signal is always created in the worker (non-GUI) thread. Is it necessary to do this?

            Reason: my library can be used with a GUI or could be used in another Python script. So, it might output data to the GUI or maybe to console/log file. To make the code in the library generic, I thought that whatever calls the library can register a callback. That callback can be to emit to Qt or output to file, etc.

            Here's an example where the Signal is created in the GUI thread. It works, but could it cause thread-related issues?

            ...

            ANSWER

            Answered 2022-Mar-08 at 18:31

            By default, signal connections are made using the AutoConnection type. This means the eventual type of connection will be automatically made at runtime, when the signal is actually emitted. If the sender and receiver are in different threads, Qt will use a queued connection, which will post an event to the event-queue of the receiving thread. Thus, when control returns to the receiver, the event will be processed and any connected slots will be called at that time.

            This is an important consideration when updating GUI elements from worker threads, because Qt does not support GUI-related operations of any kind outside the main thread. However, so long as you always use signals to communicate between threads using the default connection-type, you should not have any problems - Qt will automatically guarantee they are done in a thread-safe way.

            Below is a version of your scripts that verifies everything is working as desired. When I run it, I get the following output, which shows the current thread-id within each function call:

            Source https://stackoverflow.com/questions/71398917

            QUESTION

            AKKA: passing local resource to actor
            Asked 2022-Feb-22 at 17:17

            Let's suppose I want to use AKKA actor model to create a program crunching data coming from files. Since the model, as far as I understood, is winning if the actor really are unaware on where they are running, passing the path of the file in the message should be an error -some actors when the app scales will possibly not to have access to that path -. By opposite, passing the entire file as bytes would not be an option due to resource issue ( what if file is big and bigger? ) What is the correct strategy to handle this situation? On the same question: would be the assumption of having a distributed file system a good excuse to accept paths as messages?

            ...

            ANSWER

            Answered 2022-Feb-22 at 17:17

            I don't think there's a single definitive answer, because it depends on the nature of the data and the "crunching". However, in the typical case where you really are doing data processing of the files, you are going to have to read the files into memory at some point. So, yes, the generally answer is to read the entire file as bytes.

            In answer to the question of "what if the file is bigger", that's why we have streaming libraries like Akka Streams. For example, a common case might be to use Alpakka to watch for files in a local directory (or FTP), parse them into records, filter/map the records to do some initial cleansing, and then stream those records to distributed actors to process. Because you are using streaming, Akka is not trying to load the whole file into memory at a time, and you get the benefit of backpressure so that you don't overload the actors doing the processing.

            That's not to say a distributed file system might not have uses. For example, so that you have high availability. If you upload a file to the local filesystem of an Akka node and the Akka node fails, you obviously lose access to your file. But that's really a separate issue to how you do distributed processing.

            Source https://stackoverflow.com/questions/71202877

            QUESTION

            SSRS report from URL taking a huge amount of time
            Asked 2022-Feb-05 at 19:34

            I have a stored procedure retrieving a large amount of data (two hundred thousand records). The SP works fine in SSMS with a run time at around 12 seconds. I am running an SSRS report with the SP, which works fine in SSRS preview, it takes around 30 seconds. When I run the SSRS Report via the SSRS URL access it hangs for about half an hour before crashing with a

            Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500

            Although the SP crunches a lot of data it only returns a small amount to the report (circa 200 rows max).

            I have ensured that my SP has local parameters and all input parameters are passed through these for use (which I believe helps with parameter sniffing?).

            I have checked that the SSRS preview is not retrieving cached data by clearing down the cache.

            I have tried DBCC DROPCLEANBUFFERS; and DBCC FREEPROCCACHE to see if that makes a difference.

            I checked log using Select * From Executionlog2 and found that the TimeDataRetrival = 32550, TimeProcessing = 29 and TimeRendering = 1798778.

            It looks to me like the report is taking ages to render rather than retrieving data, which given the low number of rows passed to the renderer is strange.

            Has anyone got any ideas what my next course of action/investigation should be?

            ...

            ANSWER

            Answered 2022-Feb-05 at 17:30

            After a long and procrastinated investigation I could find no reason for the report rendering taking ages. In the end I created a new report and added items incrementally, continually testing to narrow down what was causing the render issues. In the end I had recreated the report in its entirety and the 'new' report runs fine. The only thing I can take from this is that there is something slightly 'off' on the original that is tripping the renderer and causing some sort of delay.

            Source https://stackoverflow.com/questions/70977148

            QUESTION

            SwiftUI Passing variables in view hierarchy
            Asked 2022-Feb-04 at 21:38

            I have a question regarding the architecture of my Swift / SwiftUI app consisting of a ListView, detail views and the detail views hold 2 input views. Specifically I want to know if this is the right way to do it.

            The architecture is as follows:

            The list view initiates a @StateObjct of the view model controller.

            ...

            ANSWER

            Answered 2022-Feb-04 at 21:38

            ForEach with id: \.self is the mistake however a more serious problem is that in SwiftUI we do not use view model objects, only model objects. The View data structs are already the view model that SwiftUI uses to create and update actual views like UILabels, etc. on the screen.

            Here is your fixed code:

            Source https://stackoverflow.com/questions/70977424

            QUESTION

            python - matplot lib sub-plot grid: where to insert row/column arguments
            Asked 2022-Jan-30 at 08:00

            I'm trying to display the topic extraction results of an LDA text analysis across several data sets in the form of a matplotlib subplot.

            Here's where I'm at:

            I think my issue is my unfamiliarity with matplotlib. I have done all my number crunching ahead of time so that I can focus on how to plot the data:

            ...

            ANSWER

            Answered 2022-Jan-24 at 07:45

            You should create the figure first:

            Source https://stackoverflow.com/questions/70830018

            QUESTION

            Scraping Yelp review content displaying different tags using Beautiful Soup
            Asked 2022-Jan-20 at 23:40

            I'm practicing web-scraping and trying to grab the reviews from the following page: https://www.yelp.com/biz/jajaja-plantas-mexicana-new-york-2?osq=Vegetarian+Food

            This is what I have so far after inspecting the name element on the webpage:

            ...

            ANSWER

            Answered 2022-Jan-20 at 23:40

            You could use json module to parse content of script tags, which is accessible by .text field

            Here is the example of parsing all script jsons and printing name:

            Source https://stackoverflow.com/questions/70794641

            QUESTION

            Crunching multiple rows into one per key
            Asked 2022-Jan-13 at 11:58

            I am retrieving multiple features of a product and would like to display them in a single row. Here's what I am currently retrieving:

            ...

            ANSWER

            Answered 2022-Jan-13 at 11:58

            You can aggregate the results using max() to eliminate null values, for example:

            Source https://stackoverflow.com/questions/70696122

            QUESTION

            Testing multiple configurations of parameterizable modules in a Verilog testbench
            Asked 2022-Jan-11 at 17:42

            Say I have a Verilog module that's parameterizable like the below example:

            ...

            ANSWER

            Answered 2022-Jan-11 at 17:30

            Since $value$plusargs is evaluated at runtime, it can not be used to set parameter values, which must be done at compile-time.

            However, if you use generate to instantiate multiple instances of the design with different parameter settings, you might be able to use $value$plusargs to selectively activate or enable one instance at a time. For example, in the testbench, you could use the runtime argument to only drive the inputs of a specific instance.

            Source https://stackoverflow.com/questions/70670792

            QUESTION

            Bug in animation when loading List asynchronously
            Asked 2021-Nov-19 at 22:27

            I'm trying to make two List components: one of them is static and small, the second is incredibly large and dynamic. In the first List I store food categories: Alcoholic products, Soups, Cereals, etc. In the second List, the word is searched directly from the database - it can be anything: a dish or a category of dishes. Below is the code - it displays the start page. Initially, the first static and small List is located on it, as well as the Search component (Navigationview.seacrhable()). When you type a word into the search bar, the first List disappears and the second one appears. At the moment, both sheets are loaded asynchronously. This is necessary because the second sheet is really big (thousands of rows). This is where my problem begins. Sometimes, when you type a word into the search bar, a copy of this sheet appears on top of it, as shown in the image. It only happens for a fraction of a second, but it's still noticeable. The problem is most likely due to asynchronous loading, before I added it, the List was loading super slowly, but without such bugs.

            My minimal reproducible example:

            ContentView.sfiwt

            Main List, displaying the food categories available for selection.

            ...

            ANSWER

            Answered 2021-Nov-19 at 22:27

            Besides using id for the IDs, as mentioned in the comments, you can do some refactoring to get SwiftUI to not re-render as much of the view hierarchy and instead reuse components. For example, you have an if condition and in each you have separate Section, ForEach, etc components. Instead, you could render the content of the ForEach based on the state of the search:

            Source https://stackoverflow.com/questions/70026542

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install crunch

            You can download it from GitHub.

            Support

            crnlib supports two compressed texture file formats. The first format (clustered .DDS) is simple to integrate into an existing project (typically, no code changes are required), but it doesn't offer the highest quality/compression ratio that crnlib is capable of. Integrating the second, higher quality custom format (.CRN) requires a few typically straightforward engine modifications to integrate the .CRN->DXTn transcoder header file library into your tools/engine.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/BinomialLLC/crunch.git

          • CLI

            gh repo clone BinomialLLC/crunch

          • sshUrl

            git@github.com:BinomialLLC/crunch.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Compression Libraries

            zstd

            by facebook

            Luban

            by Curzibn

            brotli

            by google

            upx

            by upx

            jszip

            by Stuk

            Try Top Libraries by BinomialLLC

            basis_universal

            by BinomialLLCC++

            bc7e

            by BinomialLLCC++