mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add LOLCODE support
This commit is contained in:
		| @@ -1292,6 +1292,13 @@ LLVM: | |||||||
|   extensions: |   extensions: | ||||||
|   - .ll |   - .ll | ||||||
|  |  | ||||||
|  | LOLCODE: | ||||||
|  |   type: programming | ||||||
|  |   lexer: Text only | ||||||
|  |   extensions: | ||||||
|  |   - .lol | ||||||
|  |   color: "#cc9900" | ||||||
|  |  | ||||||
| LSL: | LSL: | ||||||
|   type: programming |   type: programming | ||||||
|   lexer: LSL |   lexer: LSL | ||||||
|   | |||||||
							
								
								
									
										795
									
								
								samples/LOLCODE/LOLTracer.lol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										795
									
								
								samples/LOLCODE/LOLTracer.lol
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,795 @@ | |||||||
|  | HAI 1.3 | ||||||
|  |     OBTW | ||||||
|  |       Author: Logan Kelly (logan.kelly@gmail.com) | ||||||
|  |       Github: https://github.com/LoganKelly/LOLTracer | ||||||
|  |     TLDR | ||||||
|  |  | ||||||
|  |     OBTW prev is the number used in the randin function. | ||||||
|  |          I had to declare it in global scope so that it | ||||||
|  |          would retain its value between calls to randin. | ||||||
|  |     TLDR | ||||||
|  |     I HAS A prev ITZ 0 | ||||||
|  |     I HAS A rand_max ITZ 104729 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Equivalent to C's rand() function, except returns | ||||||
|  |         a number in the range of 0 to rand_max. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I randin | ||||||
|  |         I HAS A a ITZ 33083 | ||||||
|  |         I HAS A c ITZ 67607 | ||||||
|  |         prev R MOD OF SUM OF PRODUKT OF prev AN a AN c AN rand_max | ||||||
|  |         FOUND YR prev | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     BTW Returns a random number within the range of 0-1. | ||||||
|  |     HOW IZ I rand_onein | ||||||
|  |         I HAS A rand_num ITZ I IZ randin MKAY | ||||||
|  |         rand_num IS NOW A NUMBAR | ||||||
|  |         I HAS A rand_max_float ITZ MAEK rand_max A NUMBAR | ||||||
|  |         FOUND YR  QUOSHUNT OF rand_num AN rand_max_float | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Equivalent to C ceil() function. Returns the next | ||||||
|  |         largest integer for the given number. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I ceilin YR num | ||||||
|  |         I HAS A int_num ITZ num | ||||||
|  |         int_num IS NOW A NUMBR | ||||||
|  |         BOTH SAEM int_num AN num, O RLY? | ||||||
|  |             YA RLY, FOUND YR num | ||||||
|  |         OIC | ||||||
|  |         DIFFRINT num AN SMALLR OF num AN 0, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 int_num R SUM OF int_num AN 1 | ||||||
|  |                 FOUND YR MAEK int_num A NUMBAR | ||||||
|  |         OIC | ||||||
|  |         DIFFRINT num AN BIGGR OF num AN 0, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 FOUND YR MAEK int_num A NUMBAR | ||||||
|  |         OIC | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Convert a number to hexadecimal. This | ||||||
|  |          is returned as a string. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I decimal_to_hex YR num | ||||||
|  |         I HAS A i ITZ 0 | ||||||
|  |         I HAS A rem | ||||||
|  |         I HAS A hex_num ITZ A BUKKIT | ||||||
|  |         I HAS A decimal_num ITZ num | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             rem R MOD OF decimal_num AN 16 | ||||||
|  |             I HAS A hex_digit | ||||||
|  |             rem, WTF? | ||||||
|  |                 OMG 10, hex_digit R "A", GTFO | ||||||
|  |                 OMG 11, hex_digit R "B", GTFO | ||||||
|  |                 OMG 12, hex_digit R "C", GTFO | ||||||
|  |                 OMG 13, hex_digit R "D", GTFO | ||||||
|  |                 OMG 14, hex_digit R "E", GTFO | ||||||
|  |                 OMG 15, hex_digit R "F", GTFO | ||||||
|  |                 OMGWTF, hex_digit R rem | ||||||
|  |             OIC | ||||||
|  |             hex_num HAS A SRS i ITZ hex_digit | ||||||
|  |             decimal_num R QUOSHUNT OF decimal_num AN 16 | ||||||
|  |             BOTH SAEM decimal_num AN 0, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |                 NO WAI, i R SUM OF i AN 1 | ||||||
|  |             OIC | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         I HAS A hex_string ITZ A YARN | ||||||
|  |         IM IN YR string_reverse | ||||||
|  |             DIFFRINT i AN BIGGR OF i AN 0, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             hex_string R SMOOSH hex_string AN hex_num'Z SRS i MKAY | ||||||
|  |             i R DIFF OF i AN 1 | ||||||
|  |         IM OUTTA YR string_reverse | ||||||
|  |         FOUND YR hex_string | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Convert a number to binary. This is returned | ||||||
|  |          as a bukkit which has slots number 0-N where | ||||||
|  |          n is equal to the number of binary digits - 1. | ||||||
|  |          It also has a length slot which is equal to | ||||||
|  |          the number of binary digits. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I decimal_to_binary YR num | ||||||
|  |         I HAS A i ITZ 0 | ||||||
|  |         I HAS A decimal_num ITZ num | ||||||
|  |         I HAS A binary_num ITZ A BUKKIT | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             binary_num HAS A SRS i ITZ MOD OF decimal_num AN 2 | ||||||
|  |             decimal_num R QUOSHUNT OF decimal_num AN 2 | ||||||
|  |             BOTH SAEM decimal_num AN 0, O RLY? | ||||||
|  |                 YA RLY | ||||||
|  |                     I HAS A length ITZ SUM OF i AN 1 | ||||||
|  |                     binary_num HAS A length ITZ length | ||||||
|  |                     GTFO | ||||||
|  |                 NO WAI, i R SUM OF i AN 1 | ||||||
|  |             OIC | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         FOUND YR binary_num | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Bitwise and two binary numbers. The numbers | ||||||
|  |          must be provided in the format returned by | ||||||
|  |          decimal_to_binary. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I bitwise_andin YR first_num AN YR second_num | ||||||
|  |         I HAS A binary_first_num ITZ I IZ decimal_to_binary YR first_num MKAY | ||||||
|  |         I HAS A binary_second_num ITZ I IZ decimal_to_binary YR second_num MKAY | ||||||
|  |         I HAS A first_length ITZ binary_first_num'Z length | ||||||
|  |         I HAS A second_length ITZ binary_second_num'Z length | ||||||
|  |         I HAS A max_length ITZ BIGGR OF first_length AN second_length | ||||||
|  |         I HAS A final_binary ITZ A BUKKIT | ||||||
|  |         I HAS A final_length ITZ 0 | ||||||
|  |         I HAS A i ITZ 0 | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             BOTH SAEM i AN max_length, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             I HAS A first_binary ITZ 0 | ||||||
|  |             I HAS A second_binary ITZ 0 | ||||||
|  |             DIFFRINT i AN BIGGR OF i AN first_length, O RLY? | ||||||
|  |                 YA RLY, first_binary R binary_first_num'Z SRS i | ||||||
|  |             OIC | ||||||
|  |             DIFFRINT i AN BIGGR OF i AN second_length, O RLY? | ||||||
|  |                 YA RLY, second_binary R binary_second_num'Z SRS i | ||||||
|  |             OIC | ||||||
|  |             EITHER OF BOTH SAEM first_binary AN 0 AN ... | ||||||
|  |                       BOTH SAEM second_binary AN 0, O RLY? | ||||||
|  |                 YA RLY, final_binary HAS A SRS i ITZ 0 | ||||||
|  |                 NO WAI | ||||||
|  |                     final_binary HAS A SRS i ITZ 1 | ||||||
|  |                     final_length R SUM OF i AN 1 | ||||||
|  |             OIC | ||||||
|  |             i R SUM OF i AN 1 | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         final_binary HAS A length ITZ final_length | ||||||
|  |         FOUND YR final_binary | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Bitshift left a binary number by num_bits. | ||||||
|  |          The binary number must be provided in the format | ||||||
|  |          returned by decimal_to_binary. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I bit_shift_leftin YR num AN YR num_bits | ||||||
|  |         I HAS A binary_num ITZ num | ||||||
|  |         I HAS A length ITZ binary_num'Z length | ||||||
|  |         I HAS A i ITZ SUM OF DIFF OF length AN 1 AN num_bits | ||||||
|  |         I HAS A shifted_binary_num ITZ A BUKKIT | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             BOTH SAEM i AN -1, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             I HAS A unshifted_index ITZ DIFF OF i AN num_bits | ||||||
|  |             BOTH SAEM unshifted_index AN BIGGR OF unshifted_index AN 0, O RLY? | ||||||
|  |                 YA RLY | ||||||
|  |                     shifted_binary_num HAS A SRS i ITZ binary_num'Z SRS unshifted_index | ||||||
|  |                 NO WAI | ||||||
|  |                     shifted_binary_num HAS A SRS i ITZ 0 | ||||||
|  |             OIC | ||||||
|  |             i R DIFF OF i AN 1 | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         shifted_binary_num HAS A length ITZ SUM OF binary_num'Z length AN num_bits | ||||||
|  |         FOUND YR shifted_binary_num | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Convert a binary number into a decimal number. | ||||||
|  |          The binary number must be provided in the format | ||||||
|  |          return by decimal_to_binary. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I binary_to_decimal YR binary_num | ||||||
|  |         I HAS A length ITZ binary_num'Z length | ||||||
|  |         I HAS A decimal_num ITZ 0 | ||||||
|  |         I HAS A i ITZ 0 | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             BOTH SAEM i AN length, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             I HAS A binary_value ITZ binary_num'Z SRS i | ||||||
|  |             I HAS A decimal_value ITZ 0 | ||||||
|  |             BOTH SAEM binary_value AN 1, O RLY? | ||||||
|  |                 YA RLY, decimal_value R I IZ power_of YR 2 AN YR i MKAY | ||||||
|  |             OIC | ||||||
|  |             decimal_num R SUM OF decimal_num AN decimal_value | ||||||
|  |             i R SUM OF i AN 1 | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         FOUND YR decimal_num | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Equivalent to C's pow() function. Raises | ||||||
|  |          base to the power of exponent. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I power_of YR base AN YR exponent | ||||||
|  |         I HAS A i ITZ 0 | ||||||
|  |         I HAS A num ITZ 1 | ||||||
|  |         IM IN YR num_loop | ||||||
|  |             BOTH SAEM i AN exponent, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             num R PRODUKT OF num AN base | ||||||
|  |             i R SUM OF i AN 1 | ||||||
|  |         IM OUTTA YR num_loop | ||||||
|  |         FOUND YR num | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Return a binary number as a YARN. | ||||||
|  |          The binary number must be provided in the format | ||||||
|  |          return by decimal_to_binary. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I binary_to_string YR binary_num | ||||||
|  |         I HAS A binary_string ITZ A YARN | ||||||
|  |         I HAS A i ITZ DIFF OF binary_num'Z length AN 1 | ||||||
|  |         IM IN YR string_reverse | ||||||
|  |             DIFFRINT i AN BIGGR OF i AN 0, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             binary_string R SMOOSH binary_string AN binary_num'Z SRS i MKAY | ||||||
|  |             i R DIFF OF i AN 1 | ||||||
|  |         IM OUTTA YR string_reverse | ||||||
|  |         FOUND YR binary_string | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |     OBTW Converts a hexadecimal number to the character | ||||||
|  |          equivalent in UNICODE. This was originally used | ||||||
|  |          in an attempt to write out to the P6 format of PPM, | ||||||
|  |          but the string produced by VISIBLE didn't seem to be | ||||||
|  |          properly formatted for some reason. Instead I fell back | ||||||
|  |          to P3 of PPM and wrote out to regular ascii format. | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I hex_to_char YR hex_string | ||||||
|  |         OBTW This is a hack I found for converting hexadecimal strings | ||||||
|  |              into their unicode character equivalents. Instead of using | ||||||
|  |              the ":" character directly, we escape it and get it using its | ||||||
|  |              unicode hex value (3A). This allows us to assemble the string | ||||||
|  |              with our inserted hex value without errors. | ||||||
|  |         TLDR | ||||||
|  |         FOUND YR SMOOSH ":(3A)" AN "(" AN hex_string AN ")" MKAY | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW Equivalent to C's square() function. However it will only | ||||||
|  |          produce accurate results if the number is no larger than | ||||||
|  |          1048576. See the note below. This is based upon Newton's | ||||||
|  |          Approximation Method as adapted in C at this website (#11): | ||||||
|  |  | ||||||
|  |          http://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I square_rootin YR number | ||||||
|  |         OBTW Forcing a comparison between  the accuracy and a number | ||||||
|  |              which is so big that its precision is larger than the | ||||||
|  |              accuracy causes an infinite loop to occur. For this | ||||||
|  |              reason we have to set any number larger than 2^20 to | ||||||
|  |              a value below it. | ||||||
|  |         TLDR | ||||||
|  |         BOTH SAEM number AN BIGGR OF number AN 1048576.00, O RLY? | ||||||
|  |             YA RLY, number R 1048575.00 | ||||||
|  |         OIC | ||||||
|  |         I HAS A accuracy ITZ 0.0001 | ||||||
|  |         I HAS A lower ITZ A NUMBAR | ||||||
|  |         I HAS A upper ITZ A NUMBAR | ||||||
|  |         I HAS A guess ITZ A NUMBAR | ||||||
|  |         DIFFRINT number AN BIGGR OF number AN 1.0, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 lower R number | ||||||
|  |                 upper R 1.0 | ||||||
|  |             NO WAI | ||||||
|  |                 lower R 1.0 | ||||||
|  |                 upper R number | ||||||
|  |         OIC | ||||||
|  |         IM IN YR LOOP | ||||||
|  |             I HAS A delta ITZ DIFF OF upper AN lower | ||||||
|  |             BOTH SAEM delta AN SMALLR OF delta AN accuracy, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             I HAS A guess ITZ QUOSHUNT OF SUM OF lower AN upper AN 2.0 | ||||||
|  |             I HAS A guess_squared ITZ PRODUKT OF guess AN guess | ||||||
|  |             DIFFRINT guess_squared AN SMALLR OF guess_squared AN number, O RLY? | ||||||
|  |                 YA RLY | ||||||
|  |                     upper R guess | ||||||
|  |                 NO WAI | ||||||
|  |                     lower R guess | ||||||
|  |             OIC | ||||||
|  |         IM OUTTA YR LOOP | ||||||
|  |         FOUND YR QUOSHUNT OF SUM OF lower AN upper AN 2.0 | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW | ||||||
|  |          The intersection test for line [o, d] | ||||||
|  |          Return 2 if a hit was found (and also return distance t and bouncing ray n). | ||||||
|  |          Return 0 if no hit was found but ray goes upward | ||||||
|  |          Return 1 if no hit was found but ray goes downward | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I tracin YR o AN YR d | ||||||
|  |         I HAS A t ITZ 1000000000 | ||||||
|  |         I HAS A m ITZ 0 | ||||||
|  |         BOTH SAEM d'Z z AN 0, O RLY? | ||||||
|  |             YA RLY, d'Z z R 0.00001 | ||||||
|  |         OIC | ||||||
|  |         I HAS A p ITZ QUOSHUNT OF DIFF OF 0 AN o'Z z AN d'Z z | ||||||
|  |         I HAS A n ITZ LIEK A Vector | ||||||
|  |         DIFFRINT p AN SMALLR OF p AN 0.01, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 t R p | ||||||
|  |                 n R Vector IZ constructin YR 0.0 AN YR 0.0 AN YR 1.0 MKAY | ||||||
|  |                 m R 1 | ||||||
|  |         OIC | ||||||
|  |  | ||||||
|  |         BTW The world is encoded in sphere_positions, with 9 lines and 19 columns | ||||||
|  |         I HAS A k ITZ 18 | ||||||
|  |         IM IN YR column_loop BTW For each column of objects | ||||||
|  |             BOTH SAEM k AN -1, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |  | ||||||
|  |             I HAS A j ITZ 8 | ||||||
|  |             IM IN YR line_loop BTW For each line on that column | ||||||
|  |                 BOTH SAEM j AN -1, O RLY? | ||||||
|  |                     YA RLY, GTFO | ||||||
|  |                 OIC | ||||||
|  |  | ||||||
|  |                 I HAS A sphere_positions_line ITZ sphere_positions'Z SRS j | ||||||
|  |                 sphere_positions_line'Z SRS k, O RLY? | ||||||
|  |                     YA RLY | ||||||
|  |                        BTW There is a sphere, but does the ray hit it? | ||||||
|  |                        p R Vector IZ addin YR o AN YR ... | ||||||
|  |                            Vector IZ constructin YR DIFF OF 0 AN k AN ... | ||||||
|  |                                                  YR 0 AN ... | ||||||
|  |                                                  YR DIFF OF DIFF OF 0 AN j AN 4 MKAY ... | ||||||
|  |                            MKAY | ||||||
|  |                        I HAS A b ITZ Vector IZ dot_productin YR p AN YR d MKAY | ||||||
|  |                        I HAS A q_c ITZ DIFF OF Vector IZ dot_productin YR p AN YR p MKAY AN 1 | ||||||
|  |                        I HAS A q ITZ DIFF OF PRODUKT OF b AN b AN q_c | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                        DIFFRINT q AN SMALLR OF q AN 0, O RLY? | ||||||
|  |                            YA RLY | ||||||
|  |                                BTW It does, compute the distance camera-sphere | ||||||
|  |                                I HAS A s ITZ DIFF OF DIFF OF 0 AN b AN I IZ square_rootin YR q MKAY | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                                BOTH OF DIFFRINT s AN BIGGR OF s AN t AN ... | ||||||
|  |                                        DIFFRINT s AN SMALLR OF s AN 0.01, O RLY? | ||||||
|  |                                    YA RLY | ||||||
|  |                                        BTW So far this is the minimum distance, save it. And | ||||||
|  |                                        BTW also compute the bouncing ray vector into 'n' | ||||||
|  |                                        t R s | ||||||
|  |                                        I HAS A bouncing_ray ITZ Vector IZ scalin YR direction AN YR t MKAY | ||||||
|  |                                        bouncing_ray R Vector IZ addin YR p AN YR bouncing_ray MKAY | ||||||
|  |                                        n R Vector IZ normalizin YR bouncing_ray MKAY | ||||||
|  |                                        m R 2 | ||||||
|  |                                OIC | ||||||
|  |                        OIC | ||||||
|  |                 OIC | ||||||
|  |                 j R DIFF OF j AN 1 | ||||||
|  |             IM OUTTA YR line_loop | ||||||
|  |             k R DIFF OF k AN 1 | ||||||
|  |         IM OUTTA YR column_loop | ||||||
|  |         I HAS A result ITZ A BUKKIT | ||||||
|  |         result HAS A m ITZ m | ||||||
|  |         result HAS A t ITZ t | ||||||
|  |         result HAS A n ITZ n | ||||||
|  |         FOUND YR result | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW | ||||||
|  |         Sample the world and return the pixel color for | ||||||
|  |         a ray [o, d] | ||||||
|  |     TLDR | ||||||
|  |     HOW IZ I samplin YR o AN YR d | ||||||
|  |  | ||||||
|  |         BTW Search for an intersection ray Vs. world | ||||||
|  |         I HAS A result ITZ I IZ tracin YR o AN YR d MKAY | ||||||
|  |         I HAS A m ITZ result'Z m | ||||||
|  |         I HAS A t ITZ result'Z t | ||||||
|  |         I HAS A n ITZ result'Z n | ||||||
|  |  | ||||||
|  |         BOTH SAEM m AN 0, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 BTW No sphere found and the ray goes upward: Generate a sky color | ||||||
|  |                 I HAS A vec_result ITZ Vector IZ constructin YR 0.7 AN YR 0.6 AN YR 1.0 MKAY | ||||||
|  |  | ||||||
|  |                 I HAS A z_component ITZ d'Z z | ||||||
|  |                 DIFFRINT z_component AN BIGGR OF z_component AN 0, O RLY? | ||||||
|  |                     YA RLY, z_component R 0 | ||||||
|  |                 OIC | ||||||
|  |                 I HAS A vec_num ITZ DIFF OF 1 AN z_component | ||||||
|  |                 vec_num R I IZ power_of YR vec_num AN YR 4 MKAY | ||||||
|  |                 FOUND YR Vector IZ scalin YR vec_result AN YR vec_num MKAY | ||||||
|  |         OIC | ||||||
|  |  | ||||||
|  |         BTW h = intersection coordinate | ||||||
|  |         I HAS A h ITZ Vector IZ scalin YR d AN YR t MKAY | ||||||
|  |         h R Vector IZ addin YR o AN YR h MKAY | ||||||
|  |         BTW l = direction to light (with random delta for soft shadows) | ||||||
|  |         I HAS A l ITZ LIEK A Vector | ||||||
|  |         l HAS A x ITZ SUM OF 9 AN I IZ rand_onein MKAY | ||||||
|  |         l HAS A y ITZ SUM OF 9 AN I IZ rand_onein MKAY | ||||||
|  |         l HAS A z ITZ 16 | ||||||
|  |         I HAS A l_two ITZ Vector IZ scalin YR h AN YR -1.0 MKAY | ||||||
|  |         l R Vector IZ addin YR l AN YR l_two MKAY | ||||||
|  |         l R Vector IZ normalizin YR l MKAY | ||||||
|  |         BTW r = The half-vector | ||||||
|  |         I HAS A r ITZ Vector IZ dot_productin YR n AN YR d MKAY | ||||||
|  |         r R PRODUKT OF r AN -2 | ||||||
|  |         r R Vector IZ scalin YR n AN YR r MKAY | ||||||
|  |         r R Vector IZ addin YR d AN YR r MKAY | ||||||
|  |  | ||||||
|  |         BTW Calculate the lambertian factor | ||||||
|  |         I HAS A b ITZ Vector IZ dot_productin YR l AN YR n MKAY | ||||||
|  |  | ||||||
|  |         BTW Calculate illumination factor (lambertian coefficient > 0 or in shadow)? | ||||||
|  |         I HAS A illumination_result ITZ I IZ tracin YR h AN YR l MKAY | ||||||
|  |         I HAS A i_m ITZ illumination_result'Z m | ||||||
|  |         EITHER OF DIFFRINT b AN BIGGR OF b AN 0 AN BOTH SAEM i_m AN 2, O RLY? | ||||||
|  |             YA RLY, b R 0 | ||||||
|  |         OIC | ||||||
|  |  | ||||||
|  |         BTW Calculate the color 'p' with diffuse and specular component | ||||||
|  |         I HAS A base | ||||||
|  |         DIFFRINT b AN SMALLR OF b AN 0, O RLY? | ||||||
|  |             YA RLY, base R 1 | ||||||
|  |             NO WAI, base R 0 | ||||||
|  |         OIC | ||||||
|  |         base R Vector IZ scalin YR r AN YR base MKAY | ||||||
|  |         base R Vector IZ dot_productin YR l AN YR r MKAY | ||||||
|  |         I HAS A p ITZ I IZ power_of YR base AN YR 99 MKAY | ||||||
|  |  | ||||||
|  |         BOTH SAEM m AN 1, O RLY? | ||||||
|  |             YA RLY | ||||||
|  |                 BTW No sphere was hit and the ray was going downward: Generate a floor color | ||||||
|  |                 h R Vector IZ scalin YR h AN YR 0.2 MKAY | ||||||
|  |                 I HAS A ceil_h_x ITZ I IZ ceilin YR h'Z x MKAY | ||||||
|  |                 I HAS A ceil_h_y ITZ I IZ ceilin YR h'Z y MKAY | ||||||
|  |                 I HAS A ceil_h ITZ SUM OF ceil_h_x AN ceil_h_y | ||||||
|  |                 ceil_h IS NOW A NUMBR | ||||||
|  |                 I HAS A color_choice ITZ MOD OF ceil_h AN 2 | ||||||
|  |                 I HAS A color ITZ LIEK A Vector | ||||||
|  |                 color_choice, O RLY? | ||||||
|  |                     YA RLY | ||||||
|  |                         color HAS A x ITZ 3 | ||||||
|  |                         color HAS A y ITZ 1 | ||||||
|  |                         color HAS A z ITZ 1 | ||||||
|  |                     NO WAI | ||||||
|  |                         color HAS A x ITZ 3 | ||||||
|  |                         color HAS A y ITZ 3 | ||||||
|  |                         color HAS A z ITZ 3 | ||||||
|  |                 OIC | ||||||
|  |                 FOUND YR Vector IZ scalin YR color AN YR SUM OF PRODUKT OF b AN 0.2 AN 0.1 MKAY | ||||||
|  |         OIC | ||||||
|  |  | ||||||
|  |         BTW m == 2 A sphere was hit. Cast a ray bouncing from the sphere surface. | ||||||
|  |         I HAS A sphere_color ITZ LIEK A Vector | ||||||
|  |         sphere_color HAS A x ITZ p | ||||||
|  |         sphere_color HAS A y ITZ p | ||||||
|  |         sphere_color HAS A z ITZ p | ||||||
|  |         I HAS A recursive_color ITZ I IZ samplin YR h AN YR r MKAY | ||||||
|  |         BTW Attenuate color by 50% since it is bouncing (* .5) | ||||||
|  |         recursive_color R Vector IZ scalin YR recursive_color AN YR 0.5 MKAY | ||||||
|  |         FOUND YR Vector IZ addin YR sphere_color AN YR recursive_color MKAY | ||||||
|  |     IF U SAY SO | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     OBTW The vector class provides functionality for all the common | ||||||
|  |          linear algebra operations performed on vectors. | ||||||
|  |     TLDR | ||||||
|  |     O HAI IM Vector | ||||||
|  |         I HAS A x ITZ 0 | ||||||
|  |         I HAS A y ITZ 0 | ||||||
|  |         I HAS A z ITZ 0 | ||||||
|  |  | ||||||
|  |         BTW Add vector_one and vector_two | ||||||
|  |         HOW IZ I addin YR vector_one AN YR vector_two | ||||||
|  |             I HAS A result ITZ LIEK A Vector | ||||||
|  |             result HAS A x ITZ 0 | ||||||
|  |             result HAS A y ITZ 0 | ||||||
|  |             result HAS A z ITZ 0 | ||||||
|  |             result'Z x R SUM OF vector_one'Z x AN vector_two'Z x | ||||||
|  |             result'Z y R SUM OF vector_one'Z y AN vector_two'Z y | ||||||
|  |             result'Z z R SUM OF vector_one'Z z AN vector_two'Z z | ||||||
|  |             FOUND YR result | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Scale vector_one by value | ||||||
|  |     HOW IZ I scalin YR vector_one AN YR value | ||||||
|  |             I HAS A result ITZ LIEK A Vector | ||||||
|  |             result HAS A x ITZ 0 | ||||||
|  |             result HAS A y ITZ 0 | ||||||
|  |             result HAS A z ITZ 0 | ||||||
|  |             result'Z x R PRODUKT OF vector_one'Z x AN value | ||||||
|  |             result'Z y R PRODUKT OF vector_one'Z y AN value | ||||||
|  |             result'Z z R PRODUKT OF vector_one'Z z AN value | ||||||
|  |             FOUND YR result | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Dot product of vector_one and vector_two | ||||||
|  |         HOW IZ I dot_productin YR vector_one AN YR vector_two | ||||||
|  |             FOUND YR SUM OF SUM OF PRODUKT OF vector_one'Z x AN vector_two'Z x AN ... | ||||||
|  |                                    PRODUKT OF vector_one'Z y AN vector_two'Z y AN ... | ||||||
|  |                                    PRODUKT OF vector_one'Z z AN vector_two'Z z | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Cross product of vector_one and vector_two | ||||||
|  |         HOW IZ I cross_productin YR vector_one AN YR vector_two | ||||||
|  |         I HAS A result ITZ LIEK A Vector | ||||||
|  |             result HAS A x ITZ 0 | ||||||
|  |             result HAS A y ITZ 0 | ||||||
|  |             result HAS A z ITZ 0 | ||||||
|  |             result'Z x R DIFF OF PRODUKT OF vector_one'Z y AN vector_two'Z z AN ... | ||||||
|  |                                  PRODUKT OF vector_one'Z z AN vector_two'Z y | ||||||
|  |             result'Z y R DIFF OF PRODUKT OF vector_one'Z z AN vector_two'Z x AN ... | ||||||
|  |                                  PRODUKT OF vector_one'Z x AN vector_two'Z z | ||||||
|  |             result'Z z R DIFF OF PRODUKT OF vector_one'Z x AN vector_two'Z y AN ... | ||||||
|  |                                  PRODUKT OF vector_one'Z y AN vector_two'Z x | ||||||
|  |             FOUND YR result | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Length of vector_one | ||||||
|  |         HOW IZ I lengthin YR vector_one | ||||||
|  |             FOUND YR I IZ square_rootin YR ... | ||||||
|  |                 SUM OF SUM OF PRODUKT OF vector_one'Z x AN vector_one'Z x AN ... | ||||||
|  |                               PRODUKT OF vector_one'Z y AN vector_one'Z y AN ... | ||||||
|  |                               PRODUKT OF vector_one'Z z AN vector_one'Z z MKAY | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Normalize vector_one | ||||||
|  |         HOW IZ I normalizin YR vector_one | ||||||
|  |             I HAS A result ITZ LIEK A Vector | ||||||
|  |             result HAS A x ITZ 0 | ||||||
|  |             result HAS A y ITZ 0 | ||||||
|  |             result HAS A z ITZ 0 | ||||||
|  |             I HAS A length ITZ Vector IZ lengthin YR vector_one MKAY | ||||||
|  |             BOTH SAEM length AN 0, O RLY? | ||||||
|  |                 YA RLY | ||||||
|  |                     length R 1 | ||||||
|  |             OIC | ||||||
|  |             result'Z x R QUOSHUNT OF vector_one'Z x AN length | ||||||
|  |             result'Z y R QUOSHUNT OF vector_one'Z y AN length | ||||||
|  |             result'Z z R QUOSHUNT OF vector_one'Z z AN length | ||||||
|  |             FOUND YR result | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Printable YARN version of vector | ||||||
|  |         HOW IZ I to_stringin YR vector | ||||||
|  |             FOUND YR SMOOSH "[" AN vector'Z x AN ", " ... | ||||||
|  |                                 AN vector'Z y AN ", " ... | ||||||
|  |                                 AN vector'Z z AN "]" MKAY | ||||||
|  |         IF U SAY SO | ||||||
|  |  | ||||||
|  |         BTW Create and return a vector with components x, y, and z | ||||||
|  |         HOW IZ I constructin YR x AN YR y AN YR z | ||||||
|  |             I HAS A result ITZ LIEK A Vector | ||||||
|  |             result HAS A x ITZ x | ||||||
|  |             result HAS A y ITZ y | ||||||
|  |             result HAS A z ITZ z | ||||||
|  |             FOUND YR result | ||||||
|  |         IF U SAY SO | ||||||
|  |     KTHX | ||||||
|  |  | ||||||
|  |     OBTW The positions of the spheres are essentially | ||||||
|  |          stored in a 2-D array. This differs from Kensler's | ||||||
|  |          version where he used bit flags to store the | ||||||
|  |          positions in a compressed and quickly accessed | ||||||
|  |          manner. Unfortunately for us, bit operations | ||||||
|  |          in LOLCODE were too slow for this to be a tenable | ||||||
|  |          solution. | ||||||
|  |     TLDR | ||||||
|  |     I HAS A sphere_positions ITZ A BUKKIT | ||||||
|  |     I HAS A sphere_positions_0 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_0 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 0 ITZ sphere_positions_0 | ||||||
|  |     I HAS A sphere_positions_1 ITZ A BUKKIT | ||||||
|  |     sphere_positions_1 HAS A SRS 0 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 0 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 1 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 2 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 2 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 3 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 4 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 4 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 5 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 6 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 7 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 7 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 8 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 9 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 9 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 10 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 11 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 11 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 12 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 13 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 14 ITZ WIN | ||||||
|  |     BTWsphere_positions_1 HAS A SRS 14 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 15 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 16 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 16 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 17 ITZ FAIL | ||||||
|  |     sphere_positions_1 HAS A SRS 18 ITZ WIN | ||||||
|  |     BTW sphere_positions_1 HAS A SRS 18 ITZ FAIL | ||||||
|  |     sphere_positions HAS A SRS 1 ITZ sphere_positions_1 | ||||||
|  |     I HAS A sphere_positions_2 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_2 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 2 ITZ sphere_positions_2 | ||||||
|  |     I HAS A sphere_positions_3 ITZ A BUKKIT | ||||||
|  |     sphere_positions_3 HAS A SRS 0 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 1 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 2 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 3 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 4 ITZ WIN | ||||||
|  |     BTW sphere_positions_3 HAS A SRS 4 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 5 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 6 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 7 ITZ WIN | ||||||
|  |     BTW sphere_positions_3 HAS A SRS 7 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 8 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 9 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 10 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 11 ITZ WIN | ||||||
|  |     sphere_positions_3 HAS A SRS 12 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 13 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 14 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 15 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 16 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 17 ITZ FAIL | ||||||
|  |     sphere_positions_3 HAS A SRS 18 ITZ WIN | ||||||
|  |     BTW sphere_positions_3 HAS A SRS 18 ITZ FAIL | ||||||
|  |     sphere_positions HAS A SRS 3 ITZ sphere_positions_3 | ||||||
|  |     I HAS A sphere_positions_4 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_4 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 4 ITZ sphere_positions_4 | ||||||
|  |     I HAS A sphere_positions_5 ITZ A BUKKIT | ||||||
|  |     sphere_positions_5 HAS A SRS 0 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 1 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 2 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 3 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 4 ITZ WIN | ||||||
|  |     BTW sphere_positions_5 HAS A SRS 4 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 5 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 6 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 7 ITZ WIN | ||||||
|  |     BTW sphere_positions_5 HAS A SRS 7 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 8 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 9 ITZ WIN | ||||||
|  |     BTW sphere_positions_5 HAS A SRS 9 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 10 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 11 ITZ WIN | ||||||
|  |     BTW sphere_positions_5 HAS A SRS 11 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 12 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 13 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 14 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 15 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 16 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 17 ITZ FAIL | ||||||
|  |     sphere_positions_5 HAS A SRS 18 ITZ WIN | ||||||
|  |     BTW sphere_positions_5 HAS A SRS 18 ITZ FAIL | ||||||
|  |     sphere_positions HAS A SRS 5 ITZ sphere_positions_5 | ||||||
|  |     I HAS A sphere_positions_6 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_6 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 6 ITZ sphere_positions_6 | ||||||
|  |     I HAS A sphere_positions_7 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_7 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 7 ITZ sphere_positions_7 | ||||||
|  |     I HAS A sphere_positions_8 ITZ A BUKKIT | ||||||
|  |     IM IN YR LOOP UPPIN YR pos_index TIL BOTH SAEM pos_index AN 19 | ||||||
|  |         sphere_positions_8 HAS A SRS pos_index ITZ FAIL | ||||||
|  |     IM OUTTA YR LOOP | ||||||
|  |     sphere_positions HAS A SRS 8 ITZ sphere_positions_8 | ||||||
|  |  | ||||||
|  |     BTW Camera direction | ||||||
|  |     I HAS A g ITZ Vector IZ constructin YR -6.0 AN YR -16.0 AN YR 0.0 MKAY | ||||||
|  |     g R Vector IZ normalizin YR g MKAY | ||||||
|  |  | ||||||
|  |     BTW Camera up vector | ||||||
|  |     I HAS A a ITZ Vector IZ constructin YR 0.0 AN YR 0.0 AN YR 1.0 MKAY | ||||||
|  |     a R Vector IZ cross_productin YR a AN YR g MKAY | ||||||
|  |     a R Vector IZ normalizin YR a MKAY | ||||||
|  |     a R Vector IZ scalin YR a AN YR 0.002 MKAY | ||||||
|  |     BTW Camera right vector | ||||||
|  |     I HAS A b ITZ Vector IZ cross_productin YR g AN YR a MKAY | ||||||
|  |     b R Vector IZ normalizin YR b MKAY | ||||||
|  |     b R Vector IZ scalin YR b AN YR 0.002 MKAY | ||||||
|  |     BTW Camera eye offset | ||||||
|  |     I HAS A c ITZ Vector IZ addin YR a AN YR b MKAY | ||||||
|  |     c R Vector IZ scalin YR c AN YR -256.0 MKAY | ||||||
|  |     c R Vector IZ addin YR c AN YR g MKAY | ||||||
|  |  | ||||||
|  |     I HAS A max_x ITZ 511 | ||||||
|  |     I HAS A max_y ITZ max_x | ||||||
|  |     BTW Issue the PPM Header info | ||||||
|  |     VISIBLE "P3 " SUM OF max_x AN 1 " " SUM OF max_y AN 1 " 255"! | ||||||
|  |  | ||||||
|  |     I HAS A viewpoint ITZ Vector IZ constructin YR 17 AN YR 16 AN YR 8 MKAY | ||||||
|  |  | ||||||
|  |     I HAS A y ITZ max_y | ||||||
|  |     IM IN YR y_loop | ||||||
|  |         BOTH SAEM y AN -1, O RLY? | ||||||
|  |             YA RLY, GTFO | ||||||
|  |         OIC | ||||||
|  |         I HAS A x ITZ max_x | ||||||
|  |         IM IN YR x_loop | ||||||
|  |             BOTH SAEM x AN -1, O RLY? | ||||||
|  |                 YA RLY, GTFO | ||||||
|  |             OIC | ||||||
|  |             I HAS A pixel_color ITZ Vector IZ constructin YR 13 AN YR 13 AN YR 13 MKAY | ||||||
|  |  | ||||||
|  |             I HAS A rays ITZ 64 | ||||||
|  |             IM IN YR ray_loop | ||||||
|  |                 BOTH SAEM rays AN 0, O RLY? | ||||||
|  |                     YA RLY, GTFO | ||||||
|  |                 OIC | ||||||
|  |  | ||||||
|  |                 BTW The delta to apply to the origin of the view (For Depth of View blur). | ||||||
|  |                 I HAS A a_rand ITZ DIFF OF I IZ rand_onein MKAY AN 0.5 | ||||||
|  |                 I HAS A t_a ITZ Vector IZ scalin YR a AN YR a_rand MKAY | ||||||
|  |                 t_a R Vector IZ scalin YR t_a AN YR 99.0 MKAY | ||||||
|  |                 I HAS A b_rand ITZ DIFF OF I IZ rand_onein MKAY AN 0.5 | ||||||
|  |                 I HAS A t_b ITZ Vector IZ scalin YR b AN YR b_rand MKAY | ||||||
|  |                 t_b R Vector IZ scalin YR t_b AN YR 99.0 MKAY | ||||||
|  |                 I HAS A t ITZ Vector IZ addin YR t_a AN YR t_b MKAY | ||||||
|  |  | ||||||
|  |                 I HAS A origin ITZ Vector IZ addin YR viewpoint AN YR t MKAY | ||||||
|  |  | ||||||
|  |                 BTW Ray direction with random deltas for stochastic sampling | ||||||
|  |                 I HAS A direction_up ITZ SUM OF I IZ rand_onein MKAY AN x | ||||||
|  |                 direction_up R Vector IZ scalin YR a AN YR direction_up MKAY | ||||||
|  |                 I HAS A direction_right ITZ SUM OF I IZ rand_onein MKAY AN y | ||||||
|  |                 direction_right R Vector IZ scalin YR b AN YR direction_right MKAY | ||||||
|  |                 I HAS A direction_t ITZ Vector IZ scalin YR t AN YR -1 MKAY | ||||||
|  |                 I HAS A direction ITZ Vector IZ addin YR direction_right AN YR direction_up MKAY | ||||||
|  |                 direction R Vector IZ addin YR direction AN YR c MKAY | ||||||
|  |                 direction R Vector IZ scalin YR direction AN YR 16 MKAY | ||||||
|  |                 direction R Vector IZ addin YR direction AN YR direction_t MKAY | ||||||
|  |                 direction R Vector IZ normalizin YR direction MKAY | ||||||
|  |  | ||||||
|  |                 I HAS A sample_color ITZ I IZ samplin YR origin AN YR direction MKAY | ||||||
|  |                 sample_color R Vector IZ scalin YR sample_color AN YR 3.5 MKAY | ||||||
|  |                 BTW + pixel_color for color accumulation | ||||||
|  |                 pixel_color R Vector IZ addin YR sample_color AN YR pixel_color MKAY | ||||||
|  |                 rays R DIFF OF rays AN 1 | ||||||
|  |             IM OUTTA YR ray_loop | ||||||
|  |             I HAS A write_color ITZ pixel_color | ||||||
|  |             write_color'Z x IS NOW A NUMBR | ||||||
|  |             write_color'Z y IS NOW A NUMBR | ||||||
|  |             write_color'Z z IS NOW A NUMBR | ||||||
|  |             DIFFRINT write_color'Z x AN BIGGR OF write_color'Z x AN 0, O RLY? | ||||||
|  |                 YA RLY, write_color'Z x R 0 | ||||||
|  |             OIC | ||||||
|  |             DIFFRINT write_color'Z y AN BIGGR OF write_color'Z y AN 0, O RLY? | ||||||
|  |                 YA RLY, write_color'Z y R 0 | ||||||
|  |             OIC | ||||||
|  |             DIFFRINT write_color'Z z AN BIGGR OF write_color'Z z AN 0, O RLY? | ||||||
|  |                 YA RLY, write_color'Z z R 0 | ||||||
|  |             OIC | ||||||
|  |             VISIBLE " " write_color'Z x " " ... | ||||||
|  |                     " " write_color'Z y " " ... | ||||||
|  |                     " " write_color'Z z " "! | ||||||
|  |             x R DIFF OF x AN 1 | ||||||
|  |         IM OUTTA YR x_loop | ||||||
|  |         y R DIFF OF y AN 1 | ||||||
|  |     IM OUTTA YR y_loop | ||||||
|  |  | ||||||
|  | KTHXBYE | ||||||
		Reference in New Issue
	
	Block a user