summaryrefslogtreecommitdiff
path: root/src/modules/swab/swab.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/swab/swab.c')
-rw-r--r--src/modules/swab/swab.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/swab/swab.c b/src/modules/swab/swab.c
index e4c3670..2b80d95 100644
--- a/src/modules/swab/swab.c
+++ b/src/modules/swab/swab.c
@@ -14,6 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
@@ -37,6 +38,10 @@ typedef struct color_t {
float r,g,b;
} color_t;
+typedef struct v3f_t {
+ float x, y, z;
+} v3f_t;
+
/* convert a color into a packed, 32-bit rgb pixel value (taken from libs/ray/ray_color.h) */
static inline uint32_t color_to_uint32(color_t color) {
@@ -122,11 +127,11 @@ static void swab_render_fragment(void *context, unsigned cpu, fb_fragment_t *fra
uint32_t pixel;
float t;
- t = din(ctxt->din, (v3f_t){ .x = (float)x * xscale * .5f, .y = (float)y * yscale * .5f, .z = -z2 }) * 33.f;
+ t = din(ctxt->din, &(v3f_t){ .x = (float)x * xscale * .5f, .y = (float)y * yscale * .5f, .z = -z2 }) * 33.f;
- color.r = din(ctxt->din, (v3f_t){ .x = (float)x * xscale * .7f, .y = (float)y * yscale * .7f, .z = z1 }) * t;
- color.g = din(ctxt->din, (v3f_t){ .x = (float)x * xscale * .93f, .y = (float)y * yscale * .93f, .z = -z1 }) * t;
- color.b = din(ctxt->din, (v3f_t){ .x = (float)x * xscale * .81f, .y = (float)y * yscale * .81f, .z = z2 }) * t;
+ color.r = din(ctxt->din, &(v3f_t){ .x = (float)x * xscale * .7f, .y = (float)y * yscale * .7f, .z = z1 }) * t;
+ color.g = din(ctxt->din, &(v3f_t){ .x = (float)x * xscale * .93f, .y = (float)y * yscale * .93f, .z = -z1 }) * t;
+ color.b = din(ctxt->din, &(v3f_t){ .x = (float)x * xscale * .81f, .y = (float)y * yscale * .81f, .z = z2 }) * t;
pixel = color_to_uint32(color);
fb_fragment_put_pixel_unchecked(fragment, x, y, pixel);
© All Rights Reserved