⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pick_detect.hasm

📁 操作系统SunOS 4.1.3版本的源码
💻 HASM
字号:
;;      @(#)pick_detect.hasm 1.1 92/07/30 17:41:44;; Copyright (c) 1990 by Sun Microsystems, Inc.;#include "hasm_public.h"#define LOOP_COUNT	50	jmpl	start, r2result_lines:	.word	0result_triangles:	.word	0result_outside:	.word	0prb_lines:        .word   50                   ; 50 are expected        .word   0		     ; Circular writes (boolean)prb_lines_hits:        .word   0		     ; detected hits        .res    50 * 4               ; 50 * 4prb_triangles:        .word   50                   ; 50 are expected        .word   0                    ; Circular writes (boolean)prb_triangles_hits:        .word   0		     ; detected hits        .res    50 * 4               ; 50 * 4prb_outside:        .word   50                   ; 50 reserved, nothing expected        .word   0                    ; Circular writes (boolean)prb_outside_hits:        .word   0                    ; detected hits        .res    50 * 4               ; 50 * 4cenumber:	.word	1		     ; cen number of primitives,				     ; starting with 1name_1:/* Delete from name_set */.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF.word		0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF/* Add to name_set */.word		1, 0, 0, 0, 0, 0, 0, 0.word		0, 0, 0, 0, 0, 0, 0, 0.word		0, 0, 0, 0, 0, 0, 0, 0.word		0, 0, 0, 0, 0, 0, 0, 0start:/* Enable z buffer comparison */	set_attribute   hk_z_buffer_compare	.word		TRUE	set_attribute	hk_pick_filter	/* Inclusion filter */	.word		0xFFFFFFFF, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	/* Exclusion filter */	.word		0, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	.word		0, 0, 0, 0, 0, 0, 0, 0	/* Draw a box slightly bigger than pick box */        set_attribute hk_line_color        .rgb            < 1.0, 0.2, 0.2 >        set_attribute hk_line_geom_format, #HK_LINE_XYZ        polyline        5        .xyz            <  0.260,  0.260, 0.0 >        .xyz            <  0.260, -0.260, 0.0 >        .xyz            < -0.260, -0.260, 0.0 >        .xyz            < -0.260,  0.260, 0.0 >        .xyz            <  0.260,  0.260, 0.0 >		set_attribute	hk_pick_box	.xyz		< -0.25, -0.25,  -1.0 >	.xyz		<  0.25,  0.25, 1.0 >	set_attribute	hk_name_set, @name_1	set_attribute	hk_traversal_mode	.word           HK_PICK_WHILE_RENDER	jmpl		draw, r6	trap 0draw:	; Do the lines:	flush_rendering_pipe	flush_context	set_attribute	hk_pick_results_buffer, #prb_lines	set_attribute	hk_clear_pick_results        set_attribute hk_line_geom_format, #HK_LINE_XYZ	ld		#LOOP_COUNT, r4pick_lines_loop:	set_attribute   hk_line_color	.rgb		<1.0, 0.0, 0.0>        set_attribute   hk_cen, @cenumber        polyline        2        .xyz    <-0.2, -0.2, 0.0>        .xyz    <0.2, 0.2, 0.0>	;increment cen for next primitive	ld		@cenumber, r3	addi		#1, r3	st		r3, @cenumber	subi		#1, r4	bleg		r4, pick_triangles, pick_triangles, pick_lines_loop		;Do the trianglespick_triangles:	flush_rendering_pipe	flush_context	set_attribute	hk_pick_results_buffer, #prb_triangles	set_attribute	hk_clear_pick_results        set_attribute hk_tri_geom_format, #HK_TRI_XYZ_VNORMAL	ld		#LOOP_COUNT, r4pick_triangles_loop:	set_attribute   hk_front_surface_color	.rgb		<0.0, 1.0, 0.0>        set_attribute   hk_cen, @cenumber	triangle_list	#3	.word	HK_TRI_START_CCW	.xyz	<0.14749, 0.017713, 0.257500>	.normal	<0.288802, 0.165172, 0.943033>	.word	0x8000000	.xyz	<0.121734, -0.171231, 0.657500>	.normal	<0.527349, 0.113822, 0.841990>	.word	0x8000000	.xyz	<-0.247487, -0.196985, 0.757500>	.normal	<0.095011, 0.440186, 0.892866>	;increment cen for next primitive	ld		@cenumber, r3	addi		#1, r3	st		r3, @cenumber	subi		#1, r4	bleg		r4, pick_line_outside, pick_line_outside, pick_triangles_loop		;Draw lines outside of the pickboxpick_line_outside:	flush_rendering_pipe	flush_context	set_attribute	hk_pick_results_buffer, #prb_outside	set_attribute	hk_clear_pick_results	set_attribute	hk_traversal_mode	.word           HK_PICK_WHILE_RENDER	ld		#LOOP_COUNT/2, r4pick_line_outside_loop:	set_attribute   hk_line_color	.rgb		<0.0, 0.0, 1.0>        set_attribute   hk_cen, @cenumber        polyline        2        .xyz    <-0.3, -0.3, 0.0>        .xyz    <-0.6, -0.7, 0.0>	;increment cen for next primitive	ld		@cenumber, r3	addi		#1, r3	st		r3, @cenumber	subi		#1, r4	bleg		r4, pick_triangle_outside, pick_triangle_outside, pick_line_outside_loop		;Draw triangles outside of the pickboxpick_triangle_outside:	flush_rendering_pipe	flush_context	ld		#LOOP_COUNT/2, r4pick_triangle_outside_loop:	set_attribute   hk_front_surface_color	.rgb		<1.0, 1.0, 0.0>        set_attribute   hk_cen, @cenumber	triangle_list	#3	.word	HK_TRI_START_CCW	.xyz	<0.24749, 0.717713, 0.357500>	.normal	<0.288802, 0.165172, 0.943033>	.word	0x8000000	.xyz	<0.321734, 0.371231, 0.657500>	.normal	<0.527349, 0.113822, 0.841990>	.word	0x8000000	.xyz	<0.347487, 0.496985, 0.757500>	.normal	<0.095011, 0.440186, 0.892866>	;increment cen for next primitive	ld		@cenumber, r3	addi		#1, r3	st		r3, @cenumber	subi		#1, r4	bleg		r4, done_drawing, done_drawing, pick_triangle_outside_loop	done_drawing:	ld		@prb_lines_hits, r4	st		r4, @result_lines	ld		@prb_triangles_hits, r4	st		r4, @result_triangles	ld		@prb_outside_hits, r4	st		r4, @result_outside	jmpl	(r6+0), r6

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -