00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "lib3ds_impl.h"
00019
00020
00021 void
00022 lib3ds_shadow_read(Lib3dsShadow *shadow, Lib3dsIo *io) {
00023 Lib3dsChunk c;
00024
00025 lib3ds_chunk_read(&c, io);
00026 switch (c.chunk) {
00027 case CHK_SHADOW_MAP_SIZE: {
00028 shadow->map_size = lib3ds_io_read_intw(io);
00029 break;
00030 }
00031
00032 case CHK_LO_SHADOW_BIAS: {
00033 shadow->low_bias = lib3ds_io_read_float(io);
00034 break;
00035 }
00036
00037 case CHK_HI_SHADOW_BIAS: {
00038 shadow->hi_bias = lib3ds_io_read_float(io);
00039 break;
00040 }
00041
00042 case CHK_SHADOW_FILTER: {
00043 shadow->filter = lib3ds_io_read_float(io);
00044 break;
00045 }
00046
00047 case CHK_RAY_BIAS: {
00048 shadow->ray_bias = lib3ds_io_read_float(io);
00049 break;
00050 }
00051 }
00052 }
00053
00054
00055 void
00056 lib3ds_shadow_write(Lib3dsShadow *shadow, Lib3dsIo *io) {
00057 if (fabs(shadow->low_bias) > LIB3DS_EPSILON) {
00058 Lib3dsChunk c;
00059 c.chunk = CHK_LO_SHADOW_BIAS;
00060 c.size = 10;
00061 lib3ds_chunk_write(&c, io);
00062 lib3ds_io_write_float(io, shadow->low_bias);
00063 }
00064
00065 if (fabs(shadow->hi_bias) > LIB3DS_EPSILON) {
00066 Lib3dsChunk c;
00067 c.chunk = CHK_HI_SHADOW_BIAS;
00068 c.size = 10;
00069 lib3ds_chunk_write(&c, io);
00070 lib3ds_io_write_float(io, shadow->hi_bias);
00071 }
00072
00073 if (shadow->map_size) {
00074 Lib3dsChunk c;
00075 c.chunk = CHK_SHADOW_MAP_SIZE;
00076 c.size = 8;
00077 lib3ds_chunk_write(&c, io);
00078 lib3ds_io_write_intw(io, shadow->map_size);
00079 }
00080
00081 if (fabs(shadow->filter) > LIB3DS_EPSILON) {
00082 Lib3dsChunk c;
00083 c.chunk = CHK_SHADOW_FILTER;
00084 c.size = 10;
00085 lib3ds_chunk_write(&c, io);
00086 lib3ds_io_write_float(io, shadow->filter);
00087 }
00088 if (fabs(shadow->ray_bias) > LIB3DS_EPSILON) {
00089 Lib3dsChunk c;
00090 c.chunk = CHK_RAY_BIAS;
00091 c.size = 10;
00092 lib3ds_chunk_write(&c, io);
00093 lib3ds_io_write_float(io, shadow->ray_bias);
00094 }
00095 }
00096