Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "RasterSurface.h"
- #include "2_cave_crystal.h"
- #include <iostream>
- #include <math.h>
- using namespace std;
- const int width = 657;
- const int height = 593;
- const unsigned int numpixels = width * height;
- unsigned int Raster[numpixels];
- int Conversion(int x, int y)
- {
- int point = (y * width) + x;
- return point;
- }
- unsigned int colorSwap(unsigned int color)
- {
- unsigned int temp1 = (color & 0xFF000000) >> 24;
- unsigned int temp2 = (color & 0x00FF0000) >> 8;
- unsigned int temp3 = (color & 0x0000FF00) << 8;
- unsigned int temp4 = (color & 0x000000FF) << 24;
- return (temp1 | temp2 | temp3 | temp4);
- }
- int Colors2(int sColor, int fColor, float ratio)
- {
- int a = (sColor & 0x000000FF);
- int r = (sColor & 0x0000FF00) >> 8;
- int g = (sColor & 0x00FF0000) >> 16;
- int b = (sColor & 0xFF000000) >> 24;
- int mA = (fColor & 0x000000FF);
- int mR = (fColor & 0x0000FF00) >> 8;
- int mG = (fColor & 0x00FF0000) >> 16;
- int mB = (fColor & 0xFF000000) >> 24;
- int fA = (mA - a) * (ratio)+a;
- fA = fA;
- int fR = (mR - r) * (ratio)+r;
- fR = fR << 8;
- int fG = (mG - g) * (ratio)+g;
- fG = fG << 16;
- int fB = (mB - b) * (ratio)+b;
- fB = fB << 24;
- return(fA | fR | fG | fB);
- }
- unsigned int PS_Cave(float u, float v) {
- float x = (u * _2_cave_crystal_width);
- float y = (v * _2_cave_crystal_height);
- unsigned int coord = (int)y * _2_cave_crystal_width + (int)x;
- float rx = (u * _2_cave_crystal_width) - x;
- float ry = (v * _2_cave_crystal_height) - y;
- unsigned int tl = _2_cave_crystal_pixels[coord];
- unsigned int tr = _2_cave_crystal_pixels[coord + 1];
- unsigned int bl = _2_cave_crystal_pixels[coord + _2_cave_crystal_width];
- unsigned int br = _2_cave_crystal_pixels[coord + _2_cave_crystal_width + 1];
- unsigned int top = Colors2(tl, tr, rx);
- unsigned int bot = Colors2(bl, br, rx);
- unsigned int caveuv = colorSwap(Colors2(top, bot, ry));
- return caveuv;
- }
- void Draw(int x, int y, int color)
- {
- if (x < width && x > 0 && y < height && y > 0)
- {
- Raster[Conversion(x, y)] = color;
- }
- }
- int main()
- {
- RS_Initialize(width, height);
- while (RS_Update(Raster, numpixels))
- {
- for (int i = 0; i < height; i++)
- {
- for (int j = 0; j < width; i++)
- {
- float a = j / (float)width;
- float b = i / (float)height;
- Draw(j, i, PS_Cave(a, b));
- }
- }
- }
- RS_Shutdown();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement