KR20160122753A - 어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리 - Google Patents

어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리 Download PDF

Info

Publication number
KR20160122753A
KR20160122753A KR1020167023374A KR20167023374A KR20160122753A KR 20160122753 A KR20160122753 A KR 20160122753A KR 1020167023374 A KR1020167023374 A KR 1020167023374A KR 20167023374 A KR20167023374 A KR 20167023374A KR 20160122753 A KR20160122753 A KR 20160122753A
Authority
KR
South Korea
Prior art keywords
intermediate data
user interface
interface element
alternate
graphical user
Prior art date
Application number
KR1020167023374A
Other languages
English (en)
Inventor
다니엘 위그도르
스티븐 레오나르드 샌더스
리카도 조지 조타 코스타
클리프튼 포라인즈
Original Assignee
텍추얼 랩스 컴퍼니
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텍추얼 랩스 컴퍼니 filed Critical 텍추얼 랩스 컴퍼니
Publication of KR20160122753A publication Critical patent/KR20160122753A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0485Scrolling or panning
    • G06F9/4443

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

컴퓨팅 장치에 있어서, 입력에 대해 시각적 응답을 감소된 레이턴시로 제공하는 방법은 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 대체 세트를 컴퓨팅하는 단계로서, 각각의 상기 중간 데이터의 대체 세트는 상기 그래픽 사용자 인터페이스 요소의 시각적 표시를 생성하기에 유용한 데이터를 포함하는 단계를 포함한다. 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 세트 및 중간 데이터의 복수의 대체 세트가 메모리에 저장된다. 상기 방법은 최종 픽셀 이미지를 형성하는데 사용되도록 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트 중 첫번째 것을 식별하는 인덱스를 생성한다. 상기 인덱스, 상기 그래픽 사용자 인터페이스 요소에 대한 대체의 중간 데이터의 제 1 세트 및 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터가 사용되어 사용자에게 디스플레이하기 위한 제 1 최종 픽셀 이미지를 생성하고, 상기 제 1 최종 픽셀 이미지는 제 1 그래픽 사용자 인터페이스 및 제 2 그래픽 사용자 인터페이스를 포함한다. 사용자 입력에 응답하여, 상기 인덱스는 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트 중 두번째 것의 식별을 포함하도록 변형되고, 상기 변형된 인덱스가 사용되어 사용자에게 디스플레이하기 위한 최종 픽셀 이미지를 생성한다.

Description

어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리{LOW-LATENCY VISUAL RESPONSE TO INPUT VIA PRE-GENERATION OF ALTERNATIVE GRAPHICAL REPRESENTATIONS OF APPLICATION ELEMENTS AND INPUT HANDLING ON A GRAPHICAL PROCESSING UNIT}
(관련 기술의 상호참조)
본 출원은 2014년 2월 4일자로 미국 가특허 출원 제 61/935,674호의 정규출원이고, 그 우선권을 주장하며, 본원에 참조로 전체 내용을 포함한다.
일반적으로, 본 발명은 사용자 입력의 분야에 관한 것이고, 특히, 저레이턴스 사용자 경험을 제공하는 사용자 입력 시스템에 관한 것이다.
본 출원은 발명의 명칭이 "저레이턴시 사용자 입력 처리 및 피드백을 위한 하이브리드 시스템 및 방법"인 2013년 10월 4일자로 제출된 미국특허출원 제 14/046,823, 발명의 명칭이 "저레이턴시 터치 감응 장치"인 2013년 3월 15일자로 제출된 미국특허출원 제 13/841,436, 발명의 명칭이 "저레이턴시 사용자 입력 처리 및 피드백을 위한 하이브리드 시스템 및 방법"인 2013년 10월 4일자로 제출된 미국특허출원 제14/046,819, 발명의 명칭이 "빠른 멀티터치 스타일러스"인 2013년 3월 15일자로 제출된 미국특허출원 제 61/798,948, 발명의 명칭이 "사용자 식별 기술을 구비한 빠른 멀티터치 센서"인 2013년 3월 15일자 제출된 미국특허출원 제61/799,035, 발명의 명칭이 "빠른 멀티터치 소음 저감"인 2013년 3월 15일자로 제출된 미국특허출원제 61/798,828, 발명의 명칭이 "능동 광 스타일러스"인 2013년 3월 15일자로 제출된 미국특허출원 제 61/798,708, 발명의 명칭이 "저레이턴시 사용자 입력 처리 및 피드백을 위한 하이브리드 시스템 및 방법"인 2012년 10월 5일자로 제출된 미국특허출원 제61/710,256, 발명의 명칭이 "빠른 멀티터치 포스트 처리"인 2013년 7월 12일자로 제출된 미국특허출원 제61/845,892, 발명의 명칭이 "크로스 컨트롤 거동을 갖는 컨트롤 응답 레이턴시의 감소"인 미국특허출원 제61/845,879, 발명의 명칭이 "상태 변화에 대한 정보를 사용하여 사용자 입력에 응답을 제공하고 미래 사용자 입력을 예측하기 위한 시스템 및 방법"인 2013년 9월 18일자로 제출된 미국특허출원 제61/879,245, 발명의 명칭이 "상태 변화에 대한 정보를 사용하여 사용자 입력에 응답을 제공하고 미래 사용자 입력을 예측하기 위한 시스템 및 방법"인 2013년 9월 21일자로 제출된 미국특허출원 제61/880,887, 발명의 명칭이 "빠른 멀티터치 포스트 처리"인 2013년 11월 1일자로 제출된 미국특허출원 제14/069,609, 발명의 명칭이 "터치 및 스타일러스 레이턴시 테스팅 장치"인 2013년 10월 7일자로 제출된 미국특허출원 제61/887/615, 발명의 명칭이 "빠른 멀티터치 업데이트 레이트 스로틀링"인 2014년 1월 16일자로 제출된 미국특허출원 제61/928,069, 발명의 명칭이 "터치센서의 가능 채널의 동적 할당"인 2014년 1월 22일자로 제출된 미국특허출원 제61/930/159, 및 발명의 명칭이 "입력 이벤트 처리를 위한 데시메이션 전략"인 2014년 1월 27일자로 제출된 미국특허출원 제61/932/047에 기재된 빠른 멀티 터치 센서 및 기타 인터페이스 등의 사용자 인터페이스에 관한 것이다. 본원에 이들 출원의 전체 내용이 참조로 포함된다.
본 출원인 저작권 보호를 요하는 자료를 포함한다. 저작권자는 특허 및 상표에 나타내는 임의의 자에 특허 개시에 의한 복제에 이의가 없다. 그러나, 어떠한 오피스 파일이나 기록의 모든 특허권 권리를 보호한다.
본 발명의 상술 목적과 다른 목적, 특징 및 장점이 수반되는 도면을 설명하여 이하 실시형태의 보다 구체적인 기재로부터 명백해질 것이고, 도면의 참조 부호는 각종 도면을 통해 동일한 부분을 언급한다. 도면은 반드시 축척일 필요는 없고, 대신에 개시된 실시형태의 원칙을 예시하는 것에 중점을 둔다.
도 1은 터치 사용자 인터페이스에 있어서, 100ms, 50ms, 10ms, 및 1ms에서 드래그 레이턴시의 효과의 입증을 설명한다.
도 2는 받은 편지함에 대한 사용자 인터페이스 요소의 예를 나타내고, 상기 요소는 저레이턴시, 터치 사용자 상호작용에 대한 저피델리티의 응답성, 터치 사용자 상호작용에 대한 고피델리티의 높은 정확도의 응답성을 갖는다.
도 3은 슬라이딩 토글 요소의 사용자 인터페이스의 예를 나타낸다. 커서(310)("+" 부호를 포함하는 박스로 나타내어진다)는 타겟(320)(오른쪽의 두번째 빈 박스)으로 드래깅되어 상기 UI 요소를 활성화시킬 수 있다. 상기 요소는 저레이턴시 및 고레이턴시 시스템 모드를 사용 가능하여 이동 요소가 촉진되는 터치 상호작용(310)을 제공함으로써 저레이턴시 경험을 제공한다.
도 4는 레이턴시 지각 연구에 사용되는 프로토타입 고성능 터치 시스템의 기본 아키텍쳐의 일실시형태를 나타낸다.
도 5는 도 4의 프로토타입 장치를 사용한 레이턴시 지각 연구의 결과를 나타낸다.
도 6은 버튼에 대한 사용자 인터페이스 요소의 예를 나타내고, 상기 요소는 터치 사용자 상호작용에 대한 저레이턴서, 저피델리티의 응답, 및 터치 사용자 상호작용에 대한 고레이턴시, 고피델리티의 응답을 갖는다.
도 7은 크기 조정 가능한 박스에 대한 사용자 인터페이스 요소의 예를 나타내고, 상기 요소는 터치 사용자 상호작용에 대한 저레이턴시, 저피델리티의 응답 및 터치 사용자 상호작용에 대한 고레이턴시, 고피델리티의 응답을 갖는다.
도 8은 스크롤 가능한 리스트에 대한 사용자 인터페이스 요소의 예를 나타내고, 상기 요소는 터치 사용자 상호작용에 대해 저레이턴시, 저피델리티 응답 및, 터치 사용자 상호작용에 대해 고레이턴서 고피델리티 응답을 갖는다.
도 9는 저레이턴시 입력 장치에 대한 기본 아키텍쳐 및 정보 흐름의 일실시형태를 나타낸다.
도 10은 볼륨 제어에 대한 UI를 나타낸다. 슬라이더를 드래깅할 때, 숫자 형식의 현재 설정을 표시하는 툴팁이 나타난다. 상기 요소는 저레이턴시 및 고레이턴시 시스템 모두를 사용하여 가동 요소가 촉진되는 터치 상호작용을 제공하여 저레이턴시 경험을 제공한다.
도 11은 본 발명의 하이브리드 피드백 사용자 인터페이스 시스템의 펜 입력에 대한 UI의 실시형태와 비교하는 종래 시스템의 펜 입력에 대한 시스템의 응답을 나타낸다. 상기 하이브리드 시스템에 있어서, 상기 잉크 스트로크는 펜 입력에 대한 저레이턴시 응답 및 펜 사용자 입력에 대한 고레이턴시 응답을 갖는다.
도 12는 데이터가 2개의 중복 경로를 통해 시스템의 구성요소를 통하여 흘러서 고레이턴시 피드백 및 저레이턴시 피드백 모두를 지원하는 시스템의 실시형태를 나타낸다.
도 13은 모델 뷰 컨트롤러(Model View Controller)라 불리는 종래 공지의 프로그래밍 패러다임을 나타낸다.
도 14는 사용자 입력에 대한 고레이턴시 응답 및 저레이턴시 응답이 혼합된 개발 및 실행 어플리케이션을 지원하는 시스템의 아키텍쳐의 실시형태를 나타낸다.
도 15는 종래 기술에 따른 중간 데이터 계층 구조 및 GUI 보기를 설명하는 블록 다이아그램이다.
도 16은 중간 데이터의 실행을 설명하는 타임라인 보기이다.
도 17은 GUI 보기 및 중간 데이터 계층 구조를 설명하는 블록 다이아그램이다.
도 18-19는 본 발명의 시스템 및 방법의 실시형태에 따른 GUI 보기 및 중간 데이터 계층을 설명하는 블록 다이아그램이다.
도 20-23은 본 발명의 시스템 및 방법의 실시형태에 따른 GPU, CPU, 입력 장치 제어기 및 디스플레이의 조작을 설명하는 블록 다이아그램이다.
하기 기재와 도면은 예시적인 것이고 한정적으로서 해석되는 것은 아니다. 다수의 구체적인 상세가 완벽한 이해를 제공하기 위해 기재되어 있다. 그러나, 특정 예에서는 기재가 불명료하게 되는 것을 회피하기 위해서 공지된 또는 종래의 상세에 대해서는 기재되어 있지 않다. 본 개시에 있어서의 일 실시형태 또는 어느 실시형태에 대해 언급한 내용은 반드시 동일한 실시형태에 대해서만 언급하는 내용이 아니고; 또한 이러한 언급한 내용이 적어도 하나임을 의미한다.
본 명세서에 있어서 "일 실시형태" 또는 "어느 실시형태"에 대해 언급한 내용은 실시형태와 관련하여 기재한 특정의 특성, 구조 또는 특징이 본 개시의 적어도 하나의 실시형태에 포함되는 것을 의미한다. 명세서의 다양한 개소에서의 "하나의 실시형태에 있어서"라는 구절의 표현은 반드시 동일한 실시형태에 대해 언급한 내용의 전부인 것도 아니고, 또한 그 외의 실시형태를 상호 배제한 별도의 또는 대체의 실시형태인 것도 아니다. 더욱이, 각종 특징은 일부 실시형태에 의해서는 표시되지만 다른 실시형태에 의해서는 표시되지 않게 기재될 수 있다. 마찬가지로, 각종 요구조건은 일부 실시형태에 의해서는 표시되지만 다른 실시형태에 의해서는 표시되지 않게 기재될 수 있다.
상기 출원은 발명의 명칭이 "저레이턴시 터치 감응 장치"인 2013년 3월 15일자로 제출된 미국특허출원 제13/841,436, 발명의 명칭이 "빠른 멀티터치 스타일러스"인 2013년 3월 15일자로 제출된 미국특허출원 제61/798,948, 발명의 명칭이 "사용자 식별 기술을 구비한 빠른 멀티터치 센서"인 2013년 3월 15일자 제출된 미국특허출원 제61/799,035, 발명의 명칭이 "빠른 멀티터치 소음 저감"인 2013년 3월 15일자로 제출된 미국특허출원제 61/798,828, 발명의 명칭이 "능동 광 스타일러스"인 2013년 3월 15일자로 제출된 미국특허출원 제 61/798,708, 발명의 명칭이 "저레이턴시 사용자 입력 처리 및 피드백을 위한 하이브리드 시스템 및 방법"인 2012년 10월 5일자로 제출된 미국특허출원 제61/710,256, 발명의 명칭이 "빠른 멀티터치 포스트 처리"인 2013년 7월 12일자로 제출된 미국특허출원 제61/845,892, 발명의 명칭이 "크로스 컨트롤 거동을 갖는 컨트롤 응답 레이턴시의 감소"인 미국특허출원 제61/845,879, 발명의 명칭이 "상태 변화에 대한 정보를 사용하여 사용자 입력에 응답을 제공하고 미래 사용자 입력을 예측하기 위한 시스템 및 방법"인 2013년 9월 18일자로 제출된 미국특허출원 제61/879,245에 기재된 빠른 멀티 터치 센서 및 기타 인터페이스 등의 사용자 인터페이스에 관한 것이다. 본원에 이들 출원의 전체 내용이 참조로 포함된다.
각종 실시형태에 있어서, 본 발명은 직접 조작 사용자 인터페이스를 저레이턴시로 제공하는 시스템 및 방법에 관한 것이다. 가상의 "실제" 객체의 직접적 물리적 측정은 직접 터치 입력, 스타일러스 입력, 인에어 제스쳐 입력, 및 마우스, 트랙패드, 펜 타블렛 등을 포함하는 간접 장치를 가능하게 하는 것 등의 다수 형태의 입력 장치에 사용되는 일반 사용자 인터페이스 메타포이다. 본 발명의 목적을 위해서, 사용자 인터페이스의 레이턴시는 사용자의 물리적 입력 행동에 대한 응답이 표시되는데 소요되는 시간을 의미한다. 실험은 사용자가 저레이턴시를 선호하는 것을 나타내고, 사용자가 5-10ms 정도로 낮은 레이턴시를 확실하게 감지할 수 있음을 나타내고, 이하에 더욱 상세히 기재한다.
도 1은 100ms(도면부호 110), 50ms(도면부호 120), 10ms(도면부호 130) 및 1ms(도면부호 140)에서 전형적인 터치 사용자 인터페이스에서의 레이턴시의 영향을 설명하는 것을 각각 나타낸다. 객체를 드래깅할 때, 증가한 레이턴시는 사용자의 손가락과 드래깅되는 객체(이 경우에는 사각형 사용자 인터페이스 요소) 간의 증가하는 거리로서 반영된다. 알 수 있는 바와 같이, 레이턴시의 영향은 100ms(도면부호 100) 및 50ms(도면부호 120)에서 확인되지만, 10ms(도면부호 130)에서 점차적으로 덜 현저해지고, 실질적으로 1ms(도면부호 140)에서 사라진다. 도 11은 대표적인 스타일러스 또는 펜 사용자 인터페이스(1110, 1120)에서의 레이턴시의 영향을 나타낸다. 상기 실시예에 있어서, 래그(1120)는 상기 스타일러스(1100) 팁과 계산된 스트로크(1110) 간의 증가하는 거리로서 확인된다. 저레이턴시 시스템의 도입에 따라서, 상기 스타일러스(1100) 팁 및 계산된 스트로크(1130) 간의 거리는 현저하게 감소될 수 있다.
일실시형태에 있어서, 본 발명의 시스템 및 방법은 보다 높은 레벨의 레이턴시에서 추가적인 시각적 응답과 관련되거나 또는 중복되는 10m 미만의 레이턴시로 즉각적인 시각적 피드백을 제공하는 하이브리드 터치 사용자 인터페이스를 제공한다. 일실시형태에 있어서, 이들 응답의 2개 세트의 설계는 시각적으로 통일되도록 설계되어 사용자가 이들을 구별할 수 없다. 다른 실시형태에 있어서, "저레이턴시" 응답은 레이턴시가 10ms를 초과해도 된다.
레이턴시의 요인
각종 실시형태에 있어서, 사용자 입력 디바이스 및 그 입력을 처리하는 시스템에서의 레이턴시는 이하를 포함하는 다수의 소스를 가질 수 있다.
(1) 터치 이벤트를 캡쳐링하는 물리센서;
(2) 터치 이벤트를 처리하고, 디스플레이하기 위해 출력을 생성하는 소프트웨어;
(3) 디스플레이 자체;
(4) 버스를 포함한 구성 요소간의 데이터 전송;
(5) 메모리 저장소 또는 쇼트 버퍼 중 어느 하나의 데이터 내부 기억 장치;
(6) 시스템 리소스에 대한 경쟁 및 인터럽트;
(7) 기타 회로 소스가 레이턴시를 도입할 수 있음;
(8) 회로 아키텍쳐에 있어서, 광속도 및 그것의 반사 등의 물리적 제한;
(9) "중성" 상태로 되돌아가도록 레지스트 터치 센서에 요구되는 시간 등의 기계적 제한.
각종 실시형태에 있어서, 시스템 레이턴시를 감소하는 것은 하나 이상의 이들 구성 요소에서의 레이턴시를 개선시키는 것을 통해 달성될 수 있다. 일실시형태에 있어서, 본 발명의 시스템 및 방법은 전용 처리 시스템과, 저레이턴시 입력 센서 및 디스플레이를 결합함으로써 1ms 이하의 레이턴시가 달성될 수 있는 입력 장치를 제공한다. 하나의 실시형태에 있어서, 본 발명의 시스템 및 방법은 전용 처리 시스템과, 저레이턴시 입력 센서 및 디스플레이를 결합함으로써 5ms 이하의 레이턴시가 달성될 수 있는 입력 장치를 제공한다. 또 다른 실시형태에 있어서, 본 발명의 시스템 및 방법은 전용 처리 시스템과, 저레이턴시 입력 센서 및 디스플레이를 결합함으로써 0.1ms의 레이턴시가 달성될 수 있는 입력 장치를 제공한다. 또 다른 실시형태에 있어서, 본 발명의 시스템 및 방법은 전용 처리 시스템과, 저레이턴시 입력 센서 및 디스플레이를 결합함으로써 10ms 이하의 레이턴시가 달성될 수 있는 입력 장치를 제공한다. 실시형태에 있어서, 이와 같이 매우 낮은 레이턴시를 달성하기 위해서, 본 발명의 시스템 및 방법은 통상의 운영 시스템(OS) 소프트웨어 및 컴퓨팅 하드웨어를 전용의 맞춤 프로그래밍된 필드 프로그래머블 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC)로 대체해도 된다. 하나의 실시형태에 있어서, 고레이턴시 응답을 제공하는 종래의 OS 및 컴퓨팅 하드웨어를 유지하면서(저레이턴시 응답 이외에 추가로 사용됨), 상기 FPGA 또는 ASIC는 통상의 OS 및 컴퓨팅 하드웨어를 대체하여 저레이턴시 응답을 제공한다. 다른 실시형태에 잇어서, 상기 FPGA 또는 ASIC의 기능의 일부 또는 전부는 그래픽 처리 장치(GPU), 입력 장치 제어기, 중앙 처리 장치(CPU) 또는 시스템 온 칩(SoC) 등의 기존의 구성 요소에 로직을 더 집적함으로써 대체되어도 되지만, 이들로 한정되지 않는다. 상기 저레이턴시 로직은 하드웨어 또는 소프트웨어내에 인코딩되거나 또는 다른 구성 요소에 의해 실행될 수 있다. 복수 구성 요소가 요구되는 실시형태에 있어서, 커뮤니케이션 및/또는 동기화는 공유된 메모리의 사용으로 촉진되어도 된다. 임의의 다른 실시형태에 있어서, 고레이턴시 또는 저레이턴시로 제공되는 응답은 함께 혼합되거나 또는 임의의 소정 입력 이벤트의 응답으로 이들 중 하나만이 제공될 수 있다.
각종 실시형태에 있어서, 본 발명의 개시된 시스템 및 방법은 "하이브리드 피드백"으로서 언급되는 것을 제공한다. 하이브리드 피드백 시스템에 있어서, 일부의 입력에 대한 기본 시스템은 더 넓은 어플리케이션 로직으로부터 논리적으로 구분된다. 그 결과는 종래 레벨의 레이턴시에서 제공되는 어플리케이션 로직에 기초한 더욱 피드백을 사용자 입력 이벤트에 거의 즉각적인 시스템 피드백에 제공할 수 있는 님블 입력 프로세서로 시스템을 제공한다. 다른 실시형태에 있어서, 이들 시스템 응답은 시각적으로 제공된다. 각종 실시형태에 있어서, 하이브리드 피드백 시스템의 저레이턴시 구성 요소는 오디오 또는 진동-촉각 피드백을 통해 제공될 수 있다. 다른 실시형태에 있어서, 상기 거의 즉각적인 피드백은 어플리케이션 로직 피드백과 동일한 모달리티로 제공될 수 있다. 다른 실시형태에 있어서, 저레이턴서 피드백은 다른 모달리티 또는 다중 모달리티로 제공될 수 있다. 모든 시각적 실시형태의 예로는 도 2에 나타내고, 이 경우는 터치 입력 장치의 사용을 나타낸다. 특히, 도 2는 사용자가 받은 편지함을 나타내는 아이콘을 터치한 후, 드래그한 후의 결과를 나타낸다. 사용자가 상기 아이콘(210)을 터치하면, 보더(220) 또는 다른 적당한 프리미티브가 디스플레이될 수 있다. 실시형태에 있어서, 모든 시각적 저레이턴시 피드백에 있어서, 렌더링의 용이함으로 인하여 적당한 저피델리티 표시가 선택될 수 있다. 실시형태에 있어서, 저레이턴시 피드백은 적당한 저피델리티 표시를 제공할 수 있는 하나 이상의 프리미티브를 사용하여 제공될 수 있다. 실시형태에 있어서, 사용자가 상기 터치 디스플레이(200) 상의 다른 위치로 아이콘을 드래그하면, 저피델리티 보더(230)가 디스플레이되고 예를 들면, 1ms의 저레이턴시로 조작(예를 들면, 이동)될 수 있다. 동시에, 상기 아이콘(210)의 이동은 보다 높은 레이턴시로 나타내어질 수 있다. 실시형태에 있어서, 상기 매우 즉각적인 저레이턴시 응답과 느릴 가능성의 어플리케이션 로직 피드백 간의 응답의 차이는 사용자에 의해 인지될 수 있다. 다른 실시형태에 있어서, 상기 저레이턴시 응답 및 종래 응답 간의 응답의 차이는 혼합되어 사용자에게 거의 인지될 수 없거나 또는 인지될 수 없다. 실시형태에 있어서, 매우 즉각적인 피드백은 종래의 경로 어플리케이션 로직 피드백 보다 낮은 피델리티로 제공될 수 있다. 실시형태에 있어서, 적어도 일부 경우에 있어서, 상기 저레이턴시 응답은 상기 어플리케이션 로직 피드백과 동일하거나 또는 더 높은 피델리티로 제공될 수 있다. 실시형태에 있어서, 매우 즉각적인 저레이턴시 피드백의 형태는 어플리케이션 로직 또는 시스템 소프트웨어에 존재하는 로직(사용자 인터페이스 툴키트 등)에 좌우된다. 예를 들면, 하나의 실시형태에 있어서, 어플리케이션 로직은 저레이턴시 서브시스템에 의해 사용될 수 있는 각종 그래픽 프리미티브를 프리렌더링할 수 있다. 동일하게, 하나의 실시형태에 있어서, 소프트웨어 툴키트는 상기 저레이턴시 시스템에 의해 요구되기 전에 렌더링될 수 있는 그래픽 프리미티브를 개발하기 위한 수단을 제공할 수 있다. 일실시형태에 있어서, 저레이턴시 응답은 미리 결정되거나, 또는 어플리케이션 및/또는 시스템 소프트웨어 로직에 상관없이 결정되어도 된다. 일실시형태에 있어서, 사용자 입력 이벤트에 응답하여 사용자에게 요구되기 이전에 상기 저레이턴시 서브시스템에 접근할 수 있도록 프리렌더링 또는 부분 렌더링된 저레이턴시 응답 또는 프리렌더링 또는 부분 렌더링된 저레이턴시 응답의 팩키지가 메모리에 프리로딩될 수 있다.
하나의 실시형태에 있어서, 저레이턴시 출력의 모달리티는 청각일 수 있다. 하나의 실시형태에 있어서, 저레이턴시 시스템은 예를 들면, 오디오 출력 시스템으로 신속하게 마이크로폰 입력을 전송하는데 사용될 수 있고, 이것은 시스템에 말해지는 그들 자신 목소리의 "에코"로 사용자에게 제공될 수 있다. 이러한 저레이턴시 출력은 사용자에게 그들 자신의 목소리를 듣도록 하는 종래의 아날로그 텔레폰으로서 에코 특성의 동일한 형태를 갖는 인상을 제공한다. 하나의 실시형태에 있어서, 저레이턴시 청각 피드백은 사용자 입력 이벤트(예를 들면, 터치, 제스쳐, 펜 입력, 구두 입력)에 응답하여 시각적으로 제공되는 고레이턴시 응답으로 제공될 수 있다.
본 방법 및 시스템을 사용하는 시스템을 설명하는 다른 실시형태를 도 3에 나타낸다. 상기 설명하는 시스템에 있어서, 커서(310)("+" 문자를 포함하는 박스로 나타내어짐)가 장치 스크린(300)의 임의의 장소에 드래그될 수 있다. 커서(310)가 타깃 박스(320)로 드래그되면, UI 작업이 승인된다. 상기 커서(310)가 상기 스크린(300) 상의 다른 장소에 드래그되면, 상기 작업이 거절된다. 실시형태에 있어서, 드래그되면, 상기 커서(310)는 저레이턴시로 드로잉됨으로써 인지할 수 있는 레이턴시없이 사용자의 손가락을 추적한다. 하나의 실시형태에 있어서, 상기 타킷(320)은 사용자 인지에 영향을 주지 않고, 높은 레이턴시로 드로잉될 수 있다. 동일하게, 실시형태에 있어서, "거절" 또는 "승인"의 응답(330)은 이후에 인지할 수 있게 발생되고, 따라서, 사용자의 인지에 영향을 주지 않고, 예를 들면, 저레이턴시 서브시스템을 사용하지 않는, 고레이턴시로 드로잉할 수 있다.
설명된 실시형태는 전형적인 예인 것이 이해되어야 한다. 도 3에 나타낸 원리는 해당 기술분야에서 공지되지 않거나 또는 이후에 개발되는 모든 UI 요소를 포함하는 임의의 종류의 UI 요소에 적용될 수 있다. 동일하게, 도 3에 나타낸 원리는 각종 입력 장치 및/또는 출력 장치 상의 임의의 종류의 입력 이벤트로 실질적으로 사용될 수 있다. 예를 들면, 실시형태에 있어서, 상술한 바와 같은 "터치" 이벤트 이외에, 입력 이벤트는 인에어 제스쳐 또는 온서피스 제스쳐, 스피치, 자발적(또는 비자발적) 눈 이동 및 펜이 포함될 수 있고, 이들에 한정되지 않는다. 일실시형태에 있어서, 제스쳐가 취해지면, 임의의 UI 요소의 응답이 분기되고, 여기서, 저레이턴시 응답(예를 들면, UI 요소의 저피델리티 표시가 예를 들면, 0.01ms내로 신속하게 나타내어지거나 응답된다) 및 비저레이턴시 응답(예를 들면, 상기 UI 요소의 더욱 정밀한 표시)이 가속된 입력이 제공되지 않는 시스템에 의해 통상적으로 나타내어지는 레이턴시를 제공한다. 일실시형태에 있어서, 하이브리드 시스템에 있어서, 응답은 분열되지 않고, 전체적으로 저레이턴시를 대신할 수 있어 어플리케이션 로직은 저레이턴시 응답에 대한 책임이 없고, 한편, 고레이턴시로 실행된다.
일실시형태에 있어서, 터치 및/또는 제스쳐 입력 이벤트는 저항성 직접 조명, 프러스트레이티드 전반사(frustrated total-internal reflection), 확산 조명, 프로젝티드 캐패시티브, 캐패시티브 커플링, 음파 및 센서 인 픽셀을 포함한 광범위한 기술을 사용하여 달성될 수 있지만, 이들로 제한되지 않는다. 일실시형태에 있어서, 펜입력이 레지스티브, 시각적, 캐패시티브, 마그네틱, 적외선, 광학 화상, 분산 신호, 음향 펄스 또는 기타 기술을 사용하여 달성될 수 있다. 일실시형태에 있어서, 또한 제스쳐 입력은 시각 센서 또는 휴대용 객체(센서를 포함하는 것 및 추적을 위해 간단히 사용되는 것을 포함) 또는 2D 및 3D 센서를 포함하는 휴대용 객체가 없는 것을 사용하여 행할 수 있다. 또한, 입력 이벤트를 식별하기 위한 기술 또는 센서의 조합은 이벤트 형태(즉, 터치, 펜, 제스쳐, 레트나 운동 등)의 조합인 것과 같이, 고려된다. 입력 이벤트 공유를 식별하거나 캡쳐하기 위한 하나의 속성 기술은 사용자 액션과 그 액션에 대한 시스템의 응답 간의 레이턴시에 기여한다는 것이다. 상기 기여의 정도는 기술과 구현에 따라서 달라진다.
통상의 멀티터치 시스템에 있어서, 커뮤니케이션, 운영 시스템, UI 툴키트, 어플리케이션 레이어 및/또는 궁극적으로는 오디오 또는 그래픽 컨트롤러를 포함할 수 있는 디스플레이 및 입력 장치간의 정보 유동의 경로가 있다. 이들은 각각 레이턴시가 추가될 수 있다. 또한, 운영 시스템, 특히, 비실시간 운영 시스템에 의해 도입된 레이턴시는 가변적이다. 윈도우, iOS, OSX, 안드로이드 등은 실시간 운영 시스템이 아니고, 따라서, 이들 운영 시스템을 사용하면 임의의 기간 내에 응답이 발생된다는 보장이 없다. 상기 프로세서가 작업량이 많은 경우, 예를 들면 레이턴시가 급격하게 증가될 수 있다. 또한, 몇몇 조작은 소프트웨어 스택에 있어서 매우 낮은 레벨로 처리되고, 높은 우선권을 갖는다. 예를 들면, 통상, 마우스 포인터는 상기 프로세서가 과부하인 경우라도 인지할 수 있는 레이턴시가 비교적 낮도록 매우 최적화된다. 한편, 일반적으로 터치 또는 제스쳐 시스템 상에 2개 손가락으로 사진의 크기를 조절하는 등의 조작이 어플리케이션 및/또는 UI 툴키트 레벨에서 이미지의 일정한 재축척이 요구되는 바와 같이, 더욱 계산적으로 집약적이다. 그 결과, 이러한 조작은 프로세서가 과부하인 경우, 저인지되는 레이턴시를 갖도록 하는 것이 곤란하다.
통상의 멀티터치 시스템에 있어서, 디스플레이 시스템(디스플레이 자체 뿐만 아니라 그래픽 시스템도 포함)은 레이턴시에 기여할 수도 있다. 고프레임률을 지닌 시스템은 상기 시스템을 통한 실제 레이턴시가 모호할 수 있다. 예를 들면, 60Hz 모니터는 정교한 이미지 처리 효과를 감안하기 위해서, 하나 이상의 프레임의 버퍼가 포함될 수 있다. 동일하게, 프로젝터 등의 몇몇 디스플레이 장치는 상기 디스플레이 레이턴시를 효과적으로 배가하는, 전자 제품에 있어서의 더블 버퍼링을 포함한다. 3D 텔레비젼 및 제거된 동작음에 대한 요구는 빠른 LCD의 개발을 이끌었지만, 상기 액정 자체의 물리학이 예상 밖의 480Hz를 초과하는 종래의 LCD의 성능이 되게 한다. 일실시형태에 있어서, 본 발명에 기재된 저레이턴시 시스템은 LCD 디스플레이를 사용할 수 있다. LCD 디스플레이의 성능과 달리, OLED 또는 AMOLED 디스플레이는 1ms 훨씬 이하의 응답 시간이 가능하다. 따라서, 일실시형태에 있어서, 본원에 기재된 고성능 터치(또는 제스쳐) 시스템은 이하 기술: OLED. AMOLED, 플라스마, 전기습윤, 컬러 필트 순차 LCD, 광학 보상 밴드 모드(OCB 또는 Pi-셀) LCD, 전자 잉크 등 중 하나 이상에 기초한 디스플레이를 포함하지만, 이들에 한정되지 않은 신속한 응답 시간을 갖는 디스플레이에 대해 실행될 수 있다.
레이턴시 인지 연구
직접 터치 인터페이스 사용자의 레이턴시가 본질적으로 순간적으로서 인지되는 것을 산출하는 연구가 행해졌다. 도 4의 블록 다이아그램에 나타내어지는 프로토타입 장치는 프로토타입 고성능 터치 시스템(400)의 기본 아키텍쳐를 설명하는 실시형태를 나타낸다. 일실시형태에 있어서, 고속 입력 장치(420)가 활성 영역이 24cm x 16cm인 멀티터치 레지스티브 터치 센서이고, 초고속 조작을 고려한 일렉트로닉스이다. 상기 센서를 통한 지연은 1ms 미만이다. 일실시형태에 있어서, 터치 데이터는 광학 링크내를 거쳐 연속적으로 전송된다.
구체적인 테스팅 시스템에 있어서, 상기 디스플레이(460)는 텍사스 인스트루먼트의 디지탈 광원 처리 기술에 기초한 DLP 디스커버리(4100) 키트이다. 상기 구체적인 테스팅 시스템은 터치 센서 상의 프론트 프로젝션을 사용함으로써 손가락과 화상 정렬의 사용자의 인지를 방해하는 시차 오차를 제거한다. 사용되는 DLP 프로젝터는 초고속으로 픽셀을 효과적으로 온 또는 오프로 하는 미러의 매트릭스, 디지탈 마이크로미러 디바이드(DMD)를 사용한다. 상기 고속의 미러는 연속 착색된 이미지의 외관을 생성하도록 온오프 시간 비율을 변경하는데 사용된다. 단순 2진법 이미지만이 사용되는 일실시형태에 있어서, 이들은 매우 높은 속도에서도 생성될 수 있다. 구체적인 테스팅 시스템에 있어서, 상기 프로젝터 개발 시스템은 40μβ 하에서 레이턴시를 지닌 1024x768 해상성으로 32,000 이진법 프레임/초를 나타낸다. 상기 속도를 달성하기 위한 구체적인 테스팅 시스템에 있어서, 상기 비디오 데이터는 25.6 Gbps로 상기 DMD에 스트리밍된다.
상기 구체적인 테스팅 시스템에 있어서, 최소 레이턴시를 달성하기 위해서, 모든 터치 처리는 전용의 FPGA 440 상에서 행해진다-어떠한 PC나 운영 시스템이 터치 입력과 저레이턴시 출력의 디스플레이 사이에 채용되지 않는다. 상기 DLP 키트의 온보드 XC5VLX50 어플리케이션 FPGA는 터치 데이터를 처리하고, 비디오 출력을 렌더링하는데 사용될 수 있다. 상기 FPGA와 USB 시리얼 접속은 파라미터가 동적으로 변경되도록 한다. 상기 구체적인 테스팅 시스템에 있어서, 레이턴시는 1ms 해상성으로 1ms에서 수백 ms로 조정될 수 있다. 시차 테스팅 모드가 달성될 수 있고, 분석을 위해 포트가 터치 데이터를 수집하도록 한다.
상기 구체적인 테스팅 시스템에 있어서, 상기 센서(420)로부터 터치 데이터를 수신하기 위해서, 상기 시스템은 커스텀 고속 UART를 통해서 통신하다. 레이턴시를 최소로 하기 위해서, 통신 채널을 거친 고주파 소음으로 인하여 신호 무결성을 손실함이 없이 사용될 수 있는 높은 보드 속도를 나타내는, 보드 속도 2Mbps가 사용될 수 있다. 이어서, 상기 구체적인 테스팅 시스템에 있어서, 압축된 터치 데이터의 각각의 바이트가 상기 FPGA 440 상에 실행된 터치 감지 유한 상태 기계에 의해 처리된다. 상기 유한 상태 기계(FSM)는 데이터를 동시에 해독하고, 질량 중심 블랍 검출 알고리즘을 행하여 터치의 좌표를 식별한다. 상기 구체적인 테스팅 시스템에 있어서, 상기 시스템은 파이프라인화되어 어떠한 터치 데이터의 버퍼링이 발생되지 않도록 상기 FSM의 각각의 반복은 최후 수신된 바이트로 동작한다.
이어서, 구체적인 테스팅 시스템에 있어서, 상기 터치 좌표는 10단계 가변성 지연 블록으로 보내진다. 각각의 지연 단계는 카운터를 갖는 단순한 FSM이고, 레이턴시의 각종 레벨을 허용하도록 상기 터치 죄표를 지연시키기 위해 클락 사이클 수를 나타내는 제어 신호를 취한다. 상기 지연 블록은 반복의 개시시에 터치 샘플을 래칭하고, 상기 샘플을 보내고 그 다음을 래칭하기 전의 사이클의 적절한 수를 기다린다. 따라서, 상기 지연 블록은 상기 지연 카운트의 인자에 의해 샘플 속도를 저하한다. 실시형태에 있어서, 적당한 레벨로 상기 샘플 속도를 유지하기 위해서, 10 지연 단계가 사용될 수 있어, 예를 들면, 100ms의 레이턴시를 달성하기 위해, 상기 블록은 100Hz의 샘플 속도를 위해 샘플 사이의 10ms를 기다린다. 구체적인 테스팅 시스템에 있어서, 기본 어플리케이션을 실행하기 위해서, MicroBlaze 소프트 프로세서가 사용되어 디스플레이를 렌더링한다.
일실시형태에 있어서, 상기 테스팅 시스템은 성능을 개선시키기 위해서, MicroBlaze 대신에 하드 코딩된 컨트롤 FSM을 사용해도 된다. 일실시형태에 있어서, 다른 소프트 프로세서가 사용되어도 된다. 구체적인 테스팅 시스템에 있어서, 상기 MicroBlaze는 Xilinx FPGA에서 합성되기에 적합한 32비트 하바드 아키텍쳐 RISC 프로세서이다. 상기 MicroBlaze 소프트 프로세서 인스턴스 생성은 요구되는 코어, 컴퓨터 주변기기 및 메모리 구조만의 선택을 허용한다. 상기 구체적인 테스팅 시스템에 있어서, 상기 기본 MicroBlaze 형태 이외에, 터치 데이터에 대한 GPIO, 가변성 레이턴시를 설정하기 위한 GPIO, 이미지 버퍼를 위한 BRAM 메모리 제어기 및 PC와 통신하기 위한 UART 유닛 등의 인터럽트 제거기가 사용될 수 있다. 상기 구체적인 테스팅 시스템에 있어서, 상기 MicroBlaze는 100MHz로 클럭된다. 상기 MicroBlaze는 유효한 터치 좌표를 검출하도록 인터럽트 시스템을 사용한다. 지연 블록으로부터 상기 GPIO 상에 유효한 터치 데이터가 도달하면, 터치 레디 인터럽트 이벤트가 발생되고, 상응하는 이미지가 상기 이미지 버퍼에 기록된다. 인터럽트계 시스템의 비균일한 특성으로 인하여, 정확한 레이턴시가 계산될 수 없지만, 설계에 의해, 입력 장치로 인하여 1ms 레이턴시와 비교하여 무의미하다.
상기 구체적인 테스팅 시스템에 있어서, 상기 이미지 버퍼는 온칩 RRAM 블록에서 합성된다. 이들 블록은 듀얼 포트 고속 구성가능한 메모리 버퍼를 충분한 밴드폭으로 제공하여 높은 프레임률 디스플레이를 지원한다. 구체적인 테스팅 시스템에 있어서, 상기 이미지 버퍼는 DLP에 의해 요구되는 바와 같이, 총밴드폭 25.6Gbps에 대해 버스폭 128bits로 200MHz로 클럭된다. 최종적으로, DMD 제어기는 상기 이미지 버퍼로부터의 프레임을 연속적으로 판독하고, 적당한 타이밍으로 시그널을 발생해서 상기 DMD를 제어한다.
상기 구체적인 테스팅 시스템에 있어서, 사용자 입력이 통상의 PC로 동시에 전송되고, 처리되어 통상의 고레이턴이 응답을 생성한다. 계획된 더욱 저레이턴시 응답으로 중복하도록 정렬된 종래의 데이터 프로젝터에 의해 상기 더욱 고레이턴시 응답이 출력된다.
터치 스크린 인터페이스 상에 통상의 작업을 행할 때 사용자가 지각할 수 있는 정밀한 레벨의 성능을 결정하기 위해 연구가 행해졌다. 그 결과, 각종 성능 레벨의 최소 가지 차이(just-noticeable difference; JND)를 결정하기 위해 연구가 행해졌다. JND는 옵저버에 의해 검출될 수 있는 2개 레벨의 자극간의 차이의 측정이다. 이 경우, 상기 JND는 참가자가 2개의 동일하지 않은 자극- 레퍼런스로서 정의되는 동일 레벨로 연속적으로 존재하는 것과 프로브로서 정의되는 값이 실험을 통해 동적으로 변화하는 것을 구별할 수 있는 역치 레벨로서 정의된다. 일부 임의의 레퍼런스 값에서 상기 JND에 대한 통상의 허용값이 참가자가 상기 레퍼런스 75%일 때를 정확하게 식별할 수 있는 프로브이다. 상기 레벨의 정확성을 갖는 레퍼런스로부터 구별할 수 있는 프로브값이 상기 레퍼런스로부터 "식별할 수 없는 차이"로 간주된다.
레퍼런스로서 제공되는 1ms 레이턴시의 최대 성능에 비교할 때, 프로브 레이턴시의 JND 레벨을 결정하기 위해서 연구가 행해졌다. 이러한 결정이 최대 지각할 수 있는 성능에 대한 절대값을 제공하지는 않지만, 최고속의 프로토타입이 달성되는 것을 고려하면, 다른 레벨의 레이턴시가 측정될 수 있는 "최선의 조건"의 바닥 상태로서 제공할 수 있다. 이것은 전형적인 현세대 하드웨어(예를 들면, 현재 태블릿 및 터치 컴퓨터)가 제공하는(~50-200ms) 현저하게 낮은 레이턴시 값(<20ms)을 참가자들이 구별할 수 있는 것이 확인되었다.
10명의 오른손잡이 참가자(3명 여성)가 지역 사회로부터 채용되었다. 연령은 24~40세 범위이였다(평균 27.80, 표준 편차 4.73). 모든 참가자는 이전에 터치 스크린 장치를 경험했고, 모든 참가자는 하나 이상의 터치 장치(iOS 또는 안드로이드 기반 폰 또는 태블릿)를 소유했다. 참가자들은 레이턴시쌍의 상태를 반복적으로 제시한다: 레퍼런스값(1ms) 및 프로브(1~65ms의 레이턴시). 참가자들은 터치 스크린 장치 상에 그들의 손가락을 왼쪽에서 오른쪽으로 이어서, 오른쪽에서 왼쪽으로드래그한다. 모든 드래깅 업무가 적합하지만, 왼쪽/오른쪽 이동이 고레이턴시 경우에서의 차폐를 감소한다. 참가자들은 양 방향으로 이동하도록 요구되어 그들이 상기 연구를 통해 레이스하지 않도록 한다. 상기 사용자의 접촉점 아래에 상기 시스템이 도 1에 나타내는 바와 같은 솔리드 백색 2cm×2cm 사각형을 렌더링했다. 그 이동 속도는 상기 참가제에 의해 결정하도록 했다. 상기 조건의 순서는 각 쌍에 대해 무작위로 했다. 상기 연구는 2개의 양자 택일의 강제 선택 실험으로서 설계되었다; 참가자들은 각 실험내에서 선택하도록 지시되고, 이 경우는 레퍼런스(1ms)값이었고, "알지못함" 또는 "불확실함" 선택을 하지 않도록 한다. 각각의 쌍 이후, 참가자들은 2개 중 더 빠른 실험자를 통지했다.
75%의 소망의 JND 레벨에서 수렴하도록 각 실험을 위해서, 추가된 레이턴시의 양이 적응형 계단식 알고리즘에 따라서 제어되었다. 상기 레퍼런스 값의 각각의 정확한 식별은 프로브의 레이턴시의 양의 감소를 야기한 반면, 각각의 부정확한 응답은 상기 프로브의 레이턴시의 증가를 야기했다. 상기 75% 신뢰 수준을 도달하기 위해서, Kaernbach에 의해 기재된 단순한 가중 승강법(Kaernbach, C. 1991. Perception & Psychophysics 49, 227-229)을 따라서 증감했고, 여기서, 증가는 베이스 단계 크기의 3배가 곱해진 것이고, 감소는 베이스 단계 크기이였다(초기 8ms).
참가자가 정확한 응답 후에 부정확하게, 또는 부정확한 응답 후에 정확하게 응답한 경우, 이것은 계단의 방향(증가 또는 감소)을 역으로 야기하는 것으로서 리버설로 지칭하였다. 상기 스텝 크기, 초기 8ms는 최소 스텝 사이즈 1m로 각각의 리버설을 반감시켰다. 이것은 75% 정확도로 수렴을 얻는 총 10리버설이 발생될 때까지 계속되었다. 각 참가자는 8계단 "실행"을 완료했다. 이들 중 4개는 최소 프로브 레이턴시(1ms)에서 개시되었고, 4개는 최대(65ms)에서 개시되었다. 상기 계단의 개시값이 높을수록 대략 상업적 제공에 부합하기 때문에 선택되었고, 또한 파일롯 테스팅이 천장 효과를 회피하는 대략 100% 정확도로 1ms 레퍼런스와 이들 값을 명백하게 구분하기 때문에 선택되었다. 계단이 인터리브 쌍에 있어서, 한번에 두개를 실행하여 참가자의 능력에 의해 야기되는 응답 편중을 방지해서 연속 자극 사이의 그들의 진행을 추적한다. 각각의 이들 쌍에 대한 계단 조건은 가능성으로부터 표본 추출을 무작위로 선택한다(2개시 레벨×4반복). 계단 간의 휴지기를 포함한 전체 실험은 단일 1시간 세션내에서 각 참가자에 의해 종료되었다.
1ms보다 큰 레이턴시 값에 대한 최소 가지 차이(JND)를 구하기 위해 상기 연구가 고안되었다. 통상, 상기 JND 레벨은 참가자가 레퍼런스 75%의 시간을 정확하게 식별할 수 있는 레벨로 하기로 한다. 참가자 JND 레벨은 2.38ms~11.36ms의 범위이고, 모든 참가자에 걸친 평균 JND는 6.04ms이다(표준편차 4.33ms). JND 레벨은 각 참가자에 대한 계단의 8실행을 걸쳐서 현저하게 변경되지 않았다. 각각의 참가자에 대한 결과는 도 5에 나타낸다.
상기 결과는 참가자가 소비자 장치의 통상의 역치(50-200ms)를 매우 하회하는 레이턴시에서의 차이를 식별할 수 있는 것을 나타낸다. 참가자는 터치 스크린 주위를 이동하고 있을 때, 온스크린 객체와 그들의 손가락 사이의 거리를 측정함으로써 레이턴시를 결정하는 경우가 있음에 유의한다; 이것은 UI에 사용되는 입력 프리미티브(구체적으로, 드래깅)의 아티팩트이다. 다른 입력 프리미티브(예를 들면, 태핑)를 테스팅하는 것은 레이턴시의 다른 지각을 나타낼 수 있다. 결과는 터치 장치의 사용자에 의해 레이턴시에 있어서의 계산 차수 개선이 인지되고 감지될 수 있는 것이 확인된다.
저레이턴시 직접 터치 입력 장치의 아키텍쳐
일실시형태에 있어서, 소프트웨어 인터페이스는 어플리케이션 개발자가 툴키트 기반 어플리케이션 설계 프로세스를 계속적으로 사용하도록 하지만, 저레이턴시 시스템의 존재 하에 상기 툴키트는 매우 낮은 레이턴시에서 피드백을 제공할 수 있도록 설계될 수 있다. 일실시형태에 있어서, 본 발명의 시스템 및 방법은 다수의 UI 툴키트를 기초로 하는 UI 개발의 모델 뷰 컨트롤러(MVC) 상에서 실행될 수 있다. MVC는 어플리케이션 로직을 허용하여 상기 어플리케이션의 시각적 표시로부터 분리되도록 한다. 일실시형태에 있어서, MVC는 상기 어플리케이션에 대한 제 2의 중복된 디팩토(de facto) 뷰를 포함할 수 있다. 특히, 일실시형태에 있어서, 터치 입력은 상기 UI 컨트롤로부터 즉시 응답을 수신하고, 이것은 터치가 행해질 때의 어플리케이션의 상태에 대해 일부 기초한다. 그 목표는 기반 어플리케이션과 상호 연결되는 거의 즉시 응답을 제공하는 것이다.
터치에 대한 어플리케이션 독립의 시각적 응답에 관한 이전 작업이 시각적 복잡성을 추가한 UI의 시각적 요소에서라도 완전히 분리된다. 일실시형태에 있어서, 본 발명에 개요로 설명된 시스템 및 방법에 따라서, 일련의 시각적 응답이 UI 요소 자체에 보다 완전히 집적되어 시각적 복잡성을 감소시킨다. 따라서, 나타내어진 특정 시각 정보가 터치에 대한 디팩토 "마우스 포인터"를 제공하는 일실시형태에 있어서, 그 목표는 보다 통일된 시각화를 제공하는 컨트롤 자체에 고성능 응답을 집적시키는 것이다. 그럼에도 불구하고, 일실시형태에 있어서, 상기 시스템 및 방법은 저레이턴시 서브시스템에 의해 문맥자유 응답의 렌더링을 허용하고, 이것은 고레이턴시 서브시스템으로부터 응답과 이후에 통합된다. 일실시형태에 있어서, 시각화는 상기 시스템의 응답의 나머지로서 파이프라인을 동일한 렌더링으로 나타나게 할 필요가 없다. 그 대신에, 통상의 시스템에 의해 발생된 더욱 고레이턴시 응답 이외에 본 발명에 기재된 하이브리드 피드백을 사용하는 시스템 또는 방법이 사용자 입력에 대한 더욱 저레이턴시 응답을 나타낼 수 있다.
따라서, 일실시형태에 있어서, 통상의 직접 터치 소프트웨어가 고레이턴시 응답으로 실행되고, UI 요소에 대해 커스텀화된 추가의 일련의 피드팩이 사용자가 감지할 수 없는 레이턴시의 타깃으로 저레이턴시로 제공되도록 촉진된 입력 상호작용이 설계된다. 일실시형태에 있어서, 이들 2개의 층은 2개 이상의 이미지를 중복함으로써 결합된다. 일실시형태에 있어서, 2개의 결합된 이미지는 저레이턴시 터치 장치로부터 프로젝트된 이미지 및 저레이턴시 서브시스템으로부터 입력을 수신하는 데스크탑 컴퓨터 운영 커스텀 터치 소프트웨어와 접속된 통상의 프로젝터로부터의 이미지가 포함될 수 있다.
상기 2개의 프로젝터 해결책은 저레이턴시 응답과 통상의 응답을 결합하는 더욱 일반적인 생각의 특정 실시형태의 하나로서 제공되는 것만을 의미한다. 일실시형태에 있어서, 저레이턴시 및 고레이턴시 서브시스템으로부터 시각적 출력은 디스플레이 버퍼 또는 디스플레이에 보내지기 전의 시스템의 임의의 개소에서 논리적으로 결합됨으로서 디스플레이된다. 일실시형태에 있어서, 투명하고, 중복된 디스플레이가 사용자에게 저레이턴시 및 고레이턴시 출력을 표시한다. 일실시형태에 있어서, 디스플레이의 픽셀은 인터레이스되어 일부는 저레이턴시 서브시스템에 의해 제어되고, 다른 일부는 고레이턴시 서브시스템에 의해 제어되고, 인터레이싱을 통해서, 이들 디스플레이는 사용자에게 중복해서 표시될 수 있다. 일실시형태에 있어서, 디스플레이 상에 표시된 프레임은 인터레이스되어 일부 프레임은 저레이턴시 서브시스템에 의해 제어되고, 일부 다른 프레임은 고레이턴시 서브시스템에 의해 제어된다; 프레임 인터레이싱을 통해서, 상기 디스플레이는 사용자에게 결합된 이미지를 포함하도록 표시한다. 일실시형태에 있어서, 저레이턴시 응답은 하드웨어에 있어서, 대부분 또는 전체적으로 발생될 수 있다. 일실시형태에 있어서, 상기 저레이턴시 응답은 상기 입력 센서로부터 직접 수신된 입력 센서 데이터로부터 발생될 수 있다. 일실시형태에 있어서, 상기 저레이턴시 응답은 디스플레이 하드웨어와 높은 밴드폭 링크를 가짐으로써 표시된다.
저레이턴시 서브시스템에 대한 사용자 인터페이스를 설계하는데 있어서, 이하의 구속 중 하나 이상이 고려될 수 있다:
·정보 : 입력에 대한 시스템의 응답을 형성하기 위해서, 저레이턴시 서브시스템으로부터 요구된 임의의 정보 또는 처리가 예를 들면, 프리렌더링되거나 또는 프리서빙되지 않는 한, 반드시 고레이턴시를 가질 수 있다.
·성능: 저레이턴시에서의 응답의 형성을 감안한 시간이 반드시 제한된다. 하드웨어 가속에 의해서라도 응답의 설계는 신중히 성능 중심으로 되어 소망의 저레이턴시를 충족하는 응답을 보장해야 한다.
·피델리티: 렌더링된 저레이턴시 이미지의 피델리티는 고레이턴시 렌더링으로부터 구별되기 곤란할 수 있다(또한, 고레이턴시 시스템에 의해 프리렌더링될 수 있다); 다른 구속이 피델리티에 대해 요구되어 예를 들면, 시각 정보가 단색성만이고, 및/또는 시각 프리미티브로 제한되지 않고, 및/또는 오디오 또는 햅틱 응답의 지속 시간 또는 특성이 제한되지 않는 등의 성능을 개선할 수 있다. 이들 형태의 구속은 가속 하드웨어를 포함하는 시스템의 각종 요소 또는 출력 하드웨어(디스플레이, 햅틱 출력 장치 또는 스피커 등)에 의해 도입될 수 있다.
·비간섭: 응답이 혼성화된 결합인 실시형태에 있어서, 일부 어플리케이션 응답은 저레이턴시층에서 발생하고, 일부는 고레이턴시층에서 발생할 수 있고, 두개가 혼합되는 방법은 예를 들면, 사용자의 입력에 대해 원활한 응답을 제공하기 위해 고려될 수 있다. 일실시형태에 있어서, 저레이턴시 응답은 반드시 이후에 발생될 수 있는 임의의 가능한 어플리케이션 응답을 간섭하지 않는다. 일실시형태에 있어서, 간섭은 저레이턴시 응답과 종래의 응답 사이에서 발생할 수 있지만, 상기 간섭은 설계를 통해 또는 응답의 혼합을 통해서 처리될 수 있다.
일실시형태에 있어서, 설계 공정이 터치에 대해 차별화된 저레이턴시 및 고레이턴시 시각적 응답으로 일련의 시각적 UI 컨트롤을 생성하도록 행해졌다. 상기 2개의 응답 층 사이의 원활한 이동이 가능한 메타포가 시도되었다. 이들 시각화는 객체 위치 및 상태로서의 이러한 정보를 포함했다. 상기 설계는 상기 구속을 사용한 가능성에 기초하여 선택되었다. 이러한 실시형태의 최종 설계는 군용기에서 사용되는 시각화와 유사한 헤드업 디스플레이(heads-up display; HUD) 메타포에 기초하였다. 통상의 HUB가 기하학적으로 단순하고, 확실한 피델리티로 기학학적으로 간단한 디스플레이를 실행하는데 비교적 용이하기 때문에, 상기 HUB가 적합하다. 상기 HUD는 단지, 2개의 시각층이 결합된 일예를 나타내고, 다수의 HUB에 있어서, 컴퓨터화된 디스플레이는 비디오 또는 "현실계" 자체에 중복된다. 따라서, 일반적으로 HUB는 비간섭으로 설계된다.
상기 HUB 메타포에 기초하여, 일련의 터치 이벤트 및 UI 요소-특이적 저레이턴시층 시각화의 예는 다수 방향 터치 시스템에서 확인된 일련의 UI 요소에 대해 개발되었다. 이들 예시적 요소는 일반적인 것과 대표적인 것 모두이다; 그들의 상호 작용(탭, 드래그, 2개 손가락 핀칭)은 현재 방향 터치 장치에 사용되는 대부분의 상호 작용 공간을 커버한다. 이러한 일실시형태에서 개발된 저레이턴시 응답은 표 1에 기재되고, 이들은 도 6-8에 나타내어진다.
요소 터치다운 터치무브 터치업
버튼
(도 6)
아웃라인이 그려진 범위(610) (없음) 범위내이면, 두번째 아웃라인(620) 외에 없음
드래그성/크기 조정성
(도 7)
아웃라인이 그려진 범위(710) 입력 위치(720)로 아웃라인이 변경되어 이동되거나 및/또는 입력 제스쳐(730)로 조정됨 고레이턴시층이 캐치업된 경우, 아웃라인(710)이 흐려짐
스크롤 가능 리스트
(도 8)
아웃라인이 그려진 리스트 아이템(810) 스크롤 제스쳐를 취하면, 리스트 가장자리 하이라이트(830)를 조금씩 이동시킴.
스크롤 제스쳐 동안에, 고레이턴시층이 캐치업될 때, 가장자리 하이라이트(840)가 희미해짐
리스트 아이템이 선택되면, 아웃라인(820)이 아래로 조정되고 흐려짐
표 1 : 터치 입력에 대해 표준 고레이턴시 응답을 제공하는 요소 및 터치 이벤트 각각에 대한 가속된 시각 정보
이들 3개의 요소는 터치 입력에 대한 표준 UI 툴키트의 넓은 범위를 나타낸다. 가장 고차원 UI 요소는 이들 단순 요소로 이루어진다(예를 들면, 라디오 버튼 및 체크 박스는 모두 "버튼"이고, 스크롤러는 제한된 변환 및 회전의 "드래그성/크기 조정성"이다). 본 명세서에 기재된 가속된 입력 시스템 및 방법은 2개의 현저한 차이의 레이턴시 레벨에서 작동하는 시각 정보의 결합에 따른다; 상기 레이턴시차는 저레이턴시 시각화의 설계에 포함된다. 일실시형태에 있어서, 사용자는 시각층으로서 일관된 동기화가 정렬된 이들 시스템의 상태를 통지받을 수 있다. 일실시형태에 있어서, 사용자는 시스템 피드백의 고레이턴시부 및 저레이턴시부 사이를 구별할 수 있다. 일실시형태에 있어서, 상기 시각적 요소는 저레이턴시 응답 및 종래의 응답 간의 어떠한 명백한 구분이 없는 것이 제공되는 방식으로 혼합된다.
일실시형태에 있어서, 어플리케이션 개발자는 툴키트를 사용하여 GUI 컨트롤을 조립하는, 통상의 방법을 통해 그들의 어플리케이션을 구축한다. 실행하면, 고레이턴시 및 저레이턴시 시각화가 단일 디스플레이 상에 렌더링되고 중복되면서, 상기 UI 요소는 그들의 시각화를 2개로 나눈다. 이러한시스템을 통한 정보 흐름의 일실시형태가 도 9에 나타내어진다. 정보는 입력 장치(910)로부터 시스템으로 흐르고, 초기에 IPU 소프트웨어 툴키트(930)를 통해 프로그래밍된 입력 처리 장치(IPU)(920)에 의해 처리된다. 이어서, UI 이벤트는 2개의 서브시스템, 저레이턴시, 저피델리티 서브시스템(940) 및 예를 들면, 통상의 소프트웨어 스택에서 실행하는 통상의 소프트웨어 등의 고레이턴시 서브시스템(950)에 의해 동시에 처리된다. 일실시형태에 있어서, 저레이턴시, 저피델리티 서브시스템(940)이 도 4의 FPGA(440) 등의 하드웨어에서 실행될 수 있다.
상기 실시형태에 기재된 분기(bifurcation)는 사용자가 입력을 제공하기 시작하기 전에 어플리케이션 로직에 의해 요구된 저레이턴시 서브시스템(940)에 의해 제공된 초기 응답의 임의의 매개 변수가 규정되어야 하는 근본적인 통신 문제를 생성한다. 어플리케이션에 의한 표시 시에 처리를 요구하는 임의의 응답이 고레이턴시 시스템(950)에 저레이턴시 시스템(940)의 의존성을 도입할 수 있고, 따라서, 상기 시스템으로 래그(lag)를 다시 도입할 수 있다. 일실시형태에 있어서, 입력에 대한 후단계의 저레이턴시 시스템(940)의 응답은 고레이턴시 서스시스템(950)에 따를 수 있다. 일실시형태에 있어서, 고레이턴시 서브시스템(940) 상의 입력에 대한 저레이턴시 서브시스템(940)의 응답의 후단계의 의존성이 관리되어 상기 의존성이 추가의 레이턴시를 도입하지 않는다. 하나의 실시형태에 있어서, 상기 의존성이 전체적으로 회피될 수 있다.
일실시형태에 있어서, UI 요소 로직이 상기 저레이턴시 서브시스템에 구축될 수 있다. 사용자 입력 사이에, 상기 고레이턴시 서브시스템(950)에서 실행되는 어플리케이션은 상기 UI 요소의 저레이턴시 서브시스템(940)의 모델에 대한 변수를 제공하기 위한 기회를 갖는다. 따라서, 일실시형태에 있어서, UI 소프트웨어 설계의 MVC 모델은 저레이턴시 피드백을 전담하는 분리된 컨트롤러를 제공함으로써 확장될 수 있다. 일실시형태에 있어서, 상기 소프트웨어 설계에서, 이하의 것 중 하나 이상이 각 컨트롤에 대해 지정될 수 있다:
·요소 형태(예를 들면, 버튼, 드래그 가능한 객체, 스크롤 가능한 리스트, 등)
·바운딩 치수(예를 들면, x위치, y위치, 폭, 높이 등)
·조건: 추가 프리미티브 정보(예를 들면, 스크롤 리스트의 경우에서의 리스트 아이템의 크기 등)
일실시형태에 있어서, 터치 입력에 대한 소정의 요소 형태의 응답을 위한 로직이 저레이턴시 서브시스템(940)에 저장된다. 또한, 사용자 입력에 대한 저레이턴시 서브시스템의 응답의 매개 변수화가 더욱 사용자 정의의 정도를 가능하게 하는 동일한 방법으로 전달될 수 있다. 일실시형태에 있어서, 센서 데이터가 처리되고, 이어서, 저레이턴시 서브시스템(940)과 고레이턴시 서브시스템(950)으로 개별적으로 분산되는 이벤트(또는 입력 스트림의 다른 처리 형태)가 발생한다. 상기 저레이턴시 서브시스템은 고레이턴시 서브시스템보다 빨리 이벤트를 처리할 수 있고, 그 서브시스템을 압도하는 고속으로 이벤트를 상기 고레이턴시 서브시스템으로 보낼 수 있기 때문에, 상기 저레이턴시 서브시스템(940) 및 고레이턴시 서브시스템(950)에 대해 다른 속도로 이벤트가 발생될 수 있다. 따라서, 사용자 입력에 대한 저레이턴시 및 고레이턴시 서브시스템의 응답은 독립적이지만 협조적이다. 일실시형태에 있어서, 하나의 서브시스템은 사용자 입력 간의 다른 서브시스템의 "마스터" 설정 상태로서 기능한다. 일실시형태에 있어서, 상기 저레이턴시 및 고레이턴시 서브시스템 간의 관계는 상기 2개의 서브시템간의 동기화를 포함한다. 일실시형태에 있어서, 상기 저레이턴시 및 고레이턴시 서브시스템 간의 관계는 상기 저레이턴시 서브시스템(940)에 오프로드 처리하도록 하는 고레이턴시 서브시스템의 능력을 포함한다. 일실시형태에 있어서, 상기 저레이턴시 서브시스템과 고레이턴시 서브시스템 간의 관계는 프리프로세싱 또는 프리렌더링하기 위해 그 처리 로드를 감소시키거나 및/또는 고레이턴시 서브시스템(950)을 사용하도록 하는 저레이턴시 서브시스템(940)의 능력을 포함한다. 일실시형태에 있어서, 제 2 그래픽 처리 및 출력 시스템의 응답이 제 1 그래픽 처리 및 출력 시스템에 따라 달라지고, 상태 정보는 제 1 그래픽 처리 및 출력 시스템으로부터 제 2 그래픽 처리 및 출력 시스템으로 전달된다. 이와 같은 실시형태에 있어서, 상기 제 1 그래픽 처리 및 출력 시스템에서 제 2 그래픽 처리 및 출력 시스템으로 전달된 정보는 사용자 인터페이스에 있어서의 그래픽 요소 중 하나 이상을 설명하는 하나 이상의 데이터로 구성된다. 상기 데이터는 크기, 위치, 외형, 다른 외형, 사용자 입력에 대한 응답 및 사용자 인터페이스에 있어서의 그래픽 요소의 형태 등일 수 있다. 상기 제 1 그래픽 처리 및 출력 시스템으로부터 상기 제 2 그래픽 처리 및 출력 시스템으로 전달된 데이터는 제 2 그래픽 처리 및 출력 시스템에 이용 가능한 고속 메모리에 저장할 수 있다. 상기 전달된 데이터는 버튼, 슬라이더, 드래그 가능하고 및/또는 크기 조정 가능한 GUI 요소, 스크롤 가능한 리스, 스피너, 드롭 다운 리스트, 메튜, 툴바, 콤보 박스, 이동 가능한 아이콘, 고정 아이콘, 트리 뷰, 그리드 뷰, 스크롤 바, 스크롤 가능한 윈도우 또는 사용자 인터페이스 요소의 외형 및/또는 거동을 설명할 수 있다.
일실시형태에 있어서, 입력 처리 시스템은 상기 제 1 또는 제 2 그래픽 처리 및 출력 시스템 중 하나 또는 모두에 의해 수신되기 전의 사용자 입력 신호에 데시메이션(decimation)을 행한다. 데시메이션된 입력 신호 또는 데시메이션되지 않은 신호는 제 1 그래픽 처리 및 출력 시스템으로부터 전송된 사용자 인터페이스에 대한 정보에 기초한 모든 입력 신호의 집합으로부터 선택된다. 상기 입력 신호의 데시메이션은 입력 신호의 더 작은 집합과 입력 신호의 집합을 논리적으로 조합시킴으로써 행해질 수 있다. 입력 신호의 논리적 조합은 이동 평균(windowed averaging)을 통해 행해질 수 있다. 상기 데시메이션은 입력 신호의 집합의 크기를 감소시키는 경우의 사용자 입력 신호의 시간을 고려한다. 상기 입력 신호의 논리적 조합은 이동 평균을 통해 행해질 수 있다. 일실시형태에 있어서, 제 1 그래픽 및 제 2 그래픽 처리 및 출력 시스템에 의해 수신된 사용자 입력 신호는 개별적으로 처리된다.
일실시형태에 있어서, 고레이턴시 층 및 저레이턴시 층 간의 통신은 중요하다. 고레이턴시 및 저레이턴시 서브시스템이 동기화된 상태로 유지되는 방법을 결정하는데 있어서 고려되는 몇몇 요점이 이하에 기재된다:
·레이턴시 차이: 응답을 동기화하기 위해서 고레이턴시 층 및 저레이턴시 층 간의 레이턴시 차이에 대한 정보를 고레이턴시 응답이 사용될 수 있다. 일실시형태에 있어서, 이들 레이턴시 값이 정적이고, 따라서 FPGA로 사전에 프로그래밍된다. 레이턴시 레벨이 서브시스템 중 어느 하나에서 변경될 수 있는 실시형태에 있어서, 비동기화되거나 또는 명시적 동기화 메카니즘을 제공할 수 있는 동적값을 갖기 보다는 항상 달성가능한 상수로 레이턴시 레벨을 고정하는 것이 바람직하다. 레이턴시 레벨이 서브시스템 중 어느 하나에서 변경될 수 있는 실시형태에 있어서, 동적값이 사용되지만, 비동기화되는 것을 회피하기 위해 주의해야 한다. 레이턴시 레벨이 서브시스템 중 어느 하나에서 변경될 수 있는 실시형태에 있어서, 명시적 동기화 메카니즘이 상기 서브시스템(940), (950) 사이에 제공될 수 있다.
· 히트 테스팅: 히트 테스팅 결정이 시각적 UI 요소의 시각적 계층 및 특성에 관한 테이터에 따라 달라지는 경우가 있다. 일실시형태에 있어서, 상기 고려사항은 상기 UI의 플랫의 "우호적인 히트 테스트" 맵을 요구하는 중복된 경계 사각형을 허용하지 않음으로써 해결될 수 있다. 일실시형태에 있어서, 구별된 히트 테스팅은 상기 저레이턴시 서브시스템에 필요한 정보(객체 상태, z 순서 및 리스너)를 제공한다. 일실시형태에 있어서, 상기 저레이턴시 서브시스템 및 고레이턴시 서브시스템이 모두 히트 테스팅이 동시에 행해질 수 있다. 일실시형태에 있어서, 상기 저레이턴시 서브시스템은 히트 테스팅이 행해지고, 그 결과를 고레이턴시 서브시스템에 제공한다.
·조건부 응답: 다수의 인터페이스 시각화는 사용자 입력 즉시뿐만 아니라 어플리케이션 로직에서 규정된 의사 결정 로직에 따라 달라진다.
조건부 응답 로직의 2개의 구체적인 예를 이하에 나타낸다: 폼에 입력된 데이터의 유효성 검사시에만 누를 때에 비활성화되도록(2중 결제를 방지하기 위해) 프로그래밍된 신용 카드 구매 제출 버튼을 고려한다. 이 경우에 있어서, 버튼의 거동은 즉각적인 사용자 인터페이스에 따라 달라질 뿐만 아니라, 추가 정보 및 처리에 따라서 더 달라진다. 또한, 도 10에 나타낸 것 등의 링크된 시각화도 고려한다. 이 경우, 이들을 조종하는 UI 요소(1010)뿐만 아니라, 제 2 UI 요소(1020)에 의해서도 사용자에게 피드백이 제공된다. 이들 예는 저레이턴시 서브시스템으로 직접 프로그래밍될 수 있다.
일실시형태에 있어서, 고레이턴시 및 저레이턴시 서브시스템 간의 구분은 임의의 사용자 인터페이스 요소와 독립적이다. 또한, 상기 시스템간의 책임의 구분이 임의의 인자 수에 근거하여 커스터마이징될 수 있고, 사용자 인터페이스 툴키트가 결여된 시스템 또는 이용 가능한 UI 툴키트를 사용하거나 사용하지 않는 모두를 어플리케이션을 개발하기 위한 메카니즘을 포함하는 시스템에 있어서 여전히 가능하다. 일실시형태에 있어서, 2개의 서브시스템 간의 책임의 구분은 서브시스템이 실행되는 동안에 동적으로 변경될 수 있다. 일실시형태에 있어서, 상기 UI 툴키트 자체가 상기 저레이턴시 서브시스템내에 포함되어도 된다. 응답을 커스터마이징하는 능력이 본 명세서에 기재된 시스템 및 방법에 벗어나지 않는 다수의 방법으로 어플리케이션 개발자에게 제공될 수 있다. 일실시형태에 있어서, 응답이 파라미터에 따라서 커스터마이징될 수 있어 UI 컨트롤내에서 조정된다. 일실시형태에 있어서, 저레이턴시 서브시스템 또는 다른 고레이턴시 구성 요소 또는 저레이턴시 구성 요소에서 자체 실행되는 코드에 있어서, 상기 저레이턴스 서브시스템에 직접 명령을 제공하는 능력을 고려함으로써 응답이 커스터마이징될 수 있다. 일실시형태에 있어서, 상기 저레이턴시 서브시스템의 상태는 예를 들면, 실행 시에, 어플리케이션 코드에 의해 발생된 데이터를 사용하여 설정할 수 있다.
상술된 다수의 실시예가 터치 입력의 컨텍스트 내에 제공되지만, 다른 실시형태는 펜 입력, 마우스 입력, 간접 터치 입력(예를 들면, 트랙패스), 인에어 제스쳐 입력, 구강 입력 및/또는 다른 입력 양식을 포함하여 시도될 수 있고, 이들에 한정되는 것은 아니다. 상기 아키텍쳐는 혼합된 입력 이벤트(즉, 하나 이상의 양식으로 입력을 지원함)을 포함한 임의의 종류의 사용자 이벤트에 동등하게 적용될 수 수 있지만, 이들에 한정되는 것은 아니다. 실시형태에 있어서, 혼합된 입력 장치는 저레이턴시 및 고레이턴시 서브시스템의 각각에 의한 처리를 위해 발생된 이벤트와 동일한 수가 된다. 일실시형태에 있어서, 혼합된 입력 장치는 발생된 이벤트의 수에 차이가 있을 수 있고, 따라서, 예를 들면, 터치 입력은 펜 입력 보다 많은 이벤트를 가질 수 있다. 일실시형태에 있어서, 각각의 입력 양식은 자체의 저레이턴시 서브시스템을 포함한다. 일실시형태에 있어서, 복수의 입력 양식에 대한 복수의 저레이턴시 서브시스템을 포함하는 시스템에 있어서, 상기 서브시스템은 그들의 응답을 조정하기 위해 통신될 수 있다. 일실시형태에 있어서, 복수의 입력 양식에 대한 복수의 저레이턴시 서브시스템을 포함하는 시스템에 있어서, 상기 복수의 서브시스템은 공용 메모리 영역을 공유하여 조정이 가능하다.
입력 처리
본 발명의 실시형태에 있어서, 상기 입력 하드웨어로부터 저레이턴시 입력 데이터는 입력 이벤트의 신속한 스트림으로 최소한도로 처리된다. 상기 이벤트의 스트림이 더욱 처리를 위해 저레이턴시 서브시스템으로 직접 전송된다. 이어서, 로레이턴시 서브시스템으로 전송되기 전에 상기 동일한 스트림으로부터의 이벤트가 삭제되거나 또는 상기 스트림이 감소 또는 필터링될 수 있다. 상기 저레이턴시 서브시스템이 상기 고레이턴시 서브시스템 보다 빨리 이벤트를 처리하고, 상기 서브시스템을 압도하는 고속으로 상기 고레이턴시 서브시스템으로 이벤트를 전송할 수 있기 때문에, 상기 저레이턴시 서브시스템(940) 및 고레이턴시 서브시스템(950)에 대해 다른 속도로 이벤트가 발생될 수 있다. 따라서, 상기 사용자 입력에 대한 저레이턴시 서브시스템 및 고레이턴시 서브시스템의 응답은 독립적이지만 협조될 수 있다.
이벤트의 감소는 최적화될 수 있다. 일실시형태에 있어서, 어플리케이션, UI 요소, 입력 장치 중 하나 이상 등과 관련된 기준에 기초한 후보 이벤트 중에서 대표 이벤트를 선택할 수 있다.
사용자가 디지탈 잉크 스트로크를 드로잉하는 경우에 펜 입력에 대한 예로는 사용자의 드로잉된 스트로크에 가장 적합한 이벤트를 선택하는 것이 포함될 수 있다. 음성 입력에 대한 다른 예로는 출력 스트림에 있어서, 연이은 이벤트가 동일한 체적을 가짐으로써 마이크로폰으로부터의 소리를 "이브닝 아웃"하는 이벤트가 바람직하다. 터치 입력에 대한 다른 예로는 더욱 "원활한" 출력을 제공하는 일정 속도를 갖는 출력 이벤트 스트림을 얻을 수 있는 이벤트가 바람직하다. 상기 고레이턴스 서브시스템의 성능을 감소시키지 않고, 인텔리전트 감소의 상기 형태는 인텔리전트 필터로서 기능한다. 일실시형태에 있어서, 새로운 이벤트(예를 들면, 통합 이벤트 또는 유사 이벤트)가 발생될 수 있고, 이것은 상기 입력 스트림에 있어서의 다른 이벤트의 집합을 나타낸다. 일실시형태에 있어서, 더욱 바람직한 입력 스트림, 예를 들면, 보정 또는 원활화를 나타내는 새로운 이벤트(예를 들면, 보정된 이벤트, 통합 이벤트 또는 유사 이벤트)가 발생될 수 있다. 예를 들면, 고속 입력 장치로부터 10이벤트 마다에 대한 인에어 제스쳐 입력에 대해서, 실질 입력 이벤트의 "평균"을 제공하여 입력을 평활화하고 지터를 제거하는 상기 고레이턴시 서브시스템은 동일 수 또는 그 이상의 이벤트를 전송할 수 있다. 또한, 입력 장치의 복수의 "바람직한" 레벨의 다양한 변수인 새로이 이벤트가 발생될 수 있다. 예를 들면, 틸트의 인텔리전트 감소 및 스타일러스의 압력 특성이 다른 이벤트의 선택을 야기하는 경우, 단일의 새로운 이벤트 객체는 생성되어(또는 하나 이상의 기존 이벤트 객체가 변경되어) 이들 특성의 각각에 대해 바람직한 값을 포함한다.
일실시형태에 있어서, IPU 또는 저레이턴시 서브시스템 시스템이 사용되어 처리된 입력 정보로 고레이턴시 시스템을 제공한다. 하나 이상의 방법이 사용되어 2개 서브시스템의 활성을 조직화할 수 있다. 이들은 이하를 포함한다:
a. 일실시형태에 있어서, 저레이턴시 서브시스템은 모드 사용자 입력에 즉시 응답할 수 있지만, 고레이턴시 시스템에 상기 입력을 제공하기 전에 입력을 정지하기 위해(예를 들면, 손가락 또는 펜을 들음, 제스쳐를 정지함) 사용자를 기다릴 수 있다. 이것은 데이터의 데이터를 계속 처리하면서, 사용자 상호 작용 동안에 상기 시스템이 클로깅되는 것을 회피하는 장점을 갖는다.
b. 일실시형태에 있어서, 저레이턴시 시스템은 근실시간에 있어서, 감소된 추정의 입력을 제공하고; 경우에 따라서, 요청 시에 고레이턴시 시스템에 사용할 수 있는 완전한 입력 쿼(input queue)를 저장할 수 있다.
c. 일실시형태에 있어서, 사용자 피드백은 2개 단계로 구분될 수 있다. 우선, 저레이턴시 피드백은 도 11의 사용자 입력(1130)의 개략적이고, 즉각적인 표시를 제공할 수 있다. 두번째로, 고레이턴시 시스템 응답(1140)이 정제된 응답을 계산할 수 있을 때마다, 예를 들면, 펜(1150)의 리프트오프가 기울어진 후에 상기 고레이턴시 시스템 응답(1140)이 첫번째(1130)을 대체할 수 있다. 또한, 고레이턴시 피드백은 상기 저레이턴시 패드백에 계속적으로 "캐칭업"(가능한 포함)될 수 있다.
d. 일실시형태에 있어서, 상기 저레이턴시 시스템은 입력 스트림으로부터 단순 제스쳐 행동을 추론할 수 있고, 따라서, 미처리 이벤트 이외에 또는 대체로 상기 입력 쿼에 포함되는 제스쳐 이벤트를 발생시킨다.
e. 일실시형태에 있어서, IPU 또는 저레이턴시 서브시스템이 복수의 입력 위치를 사용하여 미래 입력 위치를 예측할 수 있다. 상기 예측은 고레이턴시 서브시스템에 전달되어 그것의 효과적인 레이턴시를 감소시킬 수 있다.
f. 일실시형태에 있어서, 추가 샘플 또는 조기 탐지로부터의 이익을 받을 수 있는 알고리즘이 상기 IPU 또는 저레이턴시 서브시스템에서 실행된다. 일실시형태에 있어서, 이들 이벤트의 실행은 시간에 한정될 수 있다. 예를 들면, 초기 50 이벤트는 특정 손가락으로서 입력을 분류하거나 또는 손가락과 펜 입력을 구별하는데 사용될 수 있다. 일실시형태에 있어서, 이들 알고리즘은 연속적으로 실행될 수 있다.
g. 일실시형태에 있어서, 관련없는 입력으로서 부정확하게 간주되는 추가의 순차 또는 동시의 관련 입력을 수신하고 처리하기 위해서, 고레이턴시 서브시스템으로 이벤트의 스트림을 전송하는 저레이턴시 서브시스템의 프로세스가 지연될 수 있다. 예를 들면, 문자 "t"는 2개를 구분할 때 드로잉되는 경우가 많지만, 스트로크와 관련된다. 통상의 진행 중에, 상기 저레이턴시 시스템에서 고레이턴시 시스템으로 전달된 입력 스트림의 부분이 첫번째 라인을 드로잉하는 마지막에서 "펜을 드시오" 신호를 포함한다. 일실시형태에 있어서, 감소 프로세스는 상기 펜이 상기 윈도우 내의 디스플레이 상에 재검지되는 경우, 상기 샘플 윈도우내의 입력의 마지막 프레임을 대기해서 "드시오" 이벤트를 전달함으로써 이벤트에 대한 요구를 제거한다.
하드웨어 아키텍쳐
실시형태에 있어서, 시스템의 구성 요소를 통해서 2개의 중복 통로를 통해 데이터가 유동하여 고레이턴시 및 저레이턴시 피드백 모두를 지원한다. 도 12는 입력 장치(1210), IPU(1220), 시스템 버스(1230), CPU(1240) 및 디스플레이(1290)과 연결된 GPU(1280)를 포함하는 시스템을 나타낸다. 사용자(1200)는 입력 장치(1210)를 사용한 입력을 행한다. 상기 입력은 다양한 실시형태에 있어서, FPGA, ASIC 또는 다른 소프트웨어 중 어느 하나일 수 있는 IPU(1220) 및 GPU(1280), MPU 또는 SoC에 통합된 하드웨어 로직에 의해 감지될 수 있다. 이 경우, 컨트롤 유동이 두개로 갈라지고, 상기 시스템을 통해서 2개의 구분된 통로를 따른다. 입력에 대한 저레이턴시 응답에 대해서, 상기 CPU(1240)을 바이패싱하는 상기 IPU(1220)는 상기 시스템 버스(1230)를 통해서 상기 GPU(1280)로 입력 이벤트를 전달한다. 이어서, 상기 GPU(1280)는 사용자(1200)에게 피드백을 신속하게 디스플레이한다. 입력에 대한 고레이턴스 응답에 대해서, 상기 그래픽 어플리케이션을 실행하고, 다른 시스템 구성 요소와 상호 작용할 수 있는 상기 IPU(1220)는 입력 이벤트를 상기 시스템 버스(1230)를 통해서 상기 CPU(1240)로 전송한다. 사용자(1200)에게 그래픽 피드백을 제공하기 위해서, 이어서, 상기 CPU(1240)는 상기 시스템 버스(1230)를 통해서 GPU(1280)로 명령을 전송한다. 입력 장치(1210)로부터 IPC(1220)로, 시스템 버스(1230)로, GPU(1280)로의 저레이턴시 경로는 주로 하드웨어이고, 저레이턴시로 동작한다. 입력 장치(1210)로부터 IPU(1220)로, 시스템 버스(1230)로, 시스템 버스(1230)로 되돌아가는 CPU(1240)으로, GPU(1280)로의 고레이턴시 경로는 상술한 인자로 인하여 고레이턴시이다. 관련 실시형태에 있어서, 입력 장치(1210)는 GPU(1280)와 직접 통신하고 상기 시스템 버스(1230)를 바이패싱한다.
도 13은 모델 뷰 컨트롤러라 불리는 친숙한 프로그래밍 패러다임을 나타낸다. 상기 패러다임에 있어서, 사용자(1300)는 컨트롤러(1310) 상에 입력을 행하고, 이것은 또한 상기 입력에 기초한 모델(1320)을 조작한다. 상기 모델(1320)에 있어서의 변경은 상기 뷰(1330)에 대한 변경을 야기하고, 이것은 사용자(1300)에 의해 관측된다. 본 발명에 의해 해결되는 레이턴시의 일부는 입력, 이들 구성 요소간의 통신 및 상기 뷰(1330) 구성 요소에 의해 발생되는 그래픽의 디스플레이에 있어서의 레이턴시로 인한 것이다.
도 14는 사용자 입력에 대한 혼합된 고레이턴시 및 저레이턴시 응답으로 시스템 상의 개발 및 실행 어플리케이션을 지원하는 아키텍쳐의 일실시형태를 나타낸다. 사용자(1400)는 상기 입력 장치(1410)로 입력을 행한다. 상기 입력은 상기 IPC(1420)에 의해 수신된다. 상기 IPU(1420)은 종래의 메카니즘을 통해 고레이턴시 서브시스템에서 실행하는 컨트롤러(1430) 및 저레이턴시 서브시스템에서 실행하는 뷰 모델(L)(1490)에 동시에 입력 이벤트를 전송한다. 휘발성 메모리(1450), 고정 기억기(1470), 네트워크 리소스(1460) 등(래그를 도입하는 모든 상호작용)의 데이터와 상호작용할 수 있는 고레이턴시 서브시스템에서 실행하는 모델(1440)을 조작하는 컨트롤러(1430)에 의해 입력이 취급된다. 상기 뷰모델(L)(1490)에 의해 수신된 입력 이벤트는 사용자(1400)에 의해 확인되는 뷰(L)(1491)에 대한 변경이 반영되는 뷰모델(L)에 대한 변경을 가져온다. 상기 모델(1440)에 대한 변경은 사용자(1400)에 의해 확인되는 고레이턴시 서브시스템의 뷰(H)에 대한 변경을 가져온다. 일실시형태에 있어서, 사용자에 의해 확인된 이들 2개 형태의 변경은 동일한 디스플레이 상에 나타난다. 일실시형태에 있어서, 이들 2개 형태의 변경은 다른 출력 양식(예를 들면, 사운드 또는 진동)을 통해서 사용자에게 반영된다. 일실시형태에 있어서, 입력들 사이에, 상기 뷰모델(L)(1490)은 상기 요구된 데이터를 포함해서 상기 시스템의 디스플레이 상의 정확한 위치에 GUI의 구성 요소를 나타내고, 상기 뷰모델(L)(1490)은 상기 모델(1440)의 현재 상태의 컨텍스트에서의 IPU(1420)로부터 입력을 정확하게 해석할 수 있고; 상기 뷰(L)(1491)는 상기 모델(1440)의 현재 상태의 컨텍스트에 이성서의 디스플레이에 대한 그래픽을 정확하게 발생할 수 있도록 상기 모델(1440)은 상기 뷰모델(L)(1490)과 뷰(L)(1491)의 상태를 업데이트한다.
예를 들면, 기능들 중에서, 활성되는 그 외관 지시를 변경함으로써 사용자의 터치에 대해 응답하는 버튼을 지닌 터치 센시티브 어플리케이션을 고려한다. 상기 어플리케이션이 실행될 때, 상기 어플리케이션은 메모리 및 컴파일된 어플리케이션 코드로부터 버튼의 외관의 위치, 크기 및 상세를 판독한다. 상기 뷰(H)(1480) 코드는 사용자에게 나타내어지 상기 버튼을 표시하는 필요한 그래픽을 발생한다. 상기 모델(1440)은 상기 뷰모델(L)(1490)의 상태를 업데이트해서 상기 그래픽 요소가 버튼이고, 터치되면 외관을 "일반적인" 외관에서 "눌러진" 외관으로 변경해야 하는 것을 기록한다. 또한, 상기 모델(1440)은 상기 뷰(L)(1491)의 상태를 업데이트하여 상기 뷰모델(L)(1490)에 있어서의 "일반적인" 및 "눌러진" 상태에 대한 정확한 외관을 기록한다. 상기 외관은 디스플레이에 대한 로우 피델리티 그래픽 요소의 설명 또는 완전한 래스터이어도 된다, 상기 예에 있어서, "눌러진" 상태는 상기 버트의 위치 주위에 흰색 박스를 디스플레잉함으로써 나타내어진다.
사용자는 터치 스크린 디스플레이를 터칭하고, IPU(1420)에 의해 1ms 미만 후에 그 터치를 설명하는 입력 데이터가 수신된다. 상기 IPU(1420)은 상기 입력 테이터로부터 터치다운 이벤트를 나타내는 입력 이벤트를 생성하고, 상기 입력 이벤트를 상기 어플리케이션 컨트롤러(1430)로 전송하다. 상기 컨트롤러(1430)는 모델(1440)는 모델(1440)을 조작한다. 이 경우, 상기 컨트롤러(1430)는 버튼이 터칭되고, 어떤 명령이 상기 버튼과 연관되어 있던지 간에 어플리케이션이 행해져야 하는 모델(1440)을 나타낸다. 상기 IPU(1420)가 이벤트를 상기 컨트롤러(1430)로 전송하는 동시에, 버튼이 터칭되는 것을 나타내는 이벤트를 뷰모델(L)(1490)로 전송한다. 상기 뷰모델(L)(1490)은 터치인 경우에 무엇을 해야할지에 대해서 상기 모델(1440)에 의해 이전에 지시되었고, 이 경우, 그 상태를 "눌러진"으로 변경함으로써 터치 이벤트에 대해 응답한다. 상기 뷰(L)(1491)는 그것의 "눌러진" 외관에 상으하는 피드백을 버튼 주위에 흰색 박스를 표시함으로써 상기 변경에 응답한다. 버튼이 터칭되는 모델(1440)의 변경은 뷰(H)(1480)의 업데이트를 야기하여 현재, 버튼이 터치되는 것을 반영한다. 뷰(H)(1480) 및 뷰(L)(1491) 모두의 출력을 확인하는 사용자는 뷰(H)(1480)으로부터의 피드백에 의해 이후의 두번째의 일부를 따르는 뷰(L)(1491)에 의해 그들의 터치의 즉각적인 피드백을 확인한다.
상기 어플리케이션의 텍스트를 통해서, 단어 "이벤트"는 사용자 입력의 속성을 설명하는 정보를 나타내기 위해 사용된다. 일반적으로 상기 용어가 사용되고, 따라서, 이벤트 구동된 아키텍쳐가 채용되고(실제 이벤트 객체가 소프트웨어 요소 사이를 통과함), 또한 나타내어지는 "이벤트"가 단순한 더욱 기본 입력 스트림이 정보의 스트림으로 표시되는 실시형태를 포함한다. 이러한 이벤트는 비객체 지향 형태의 이벤트 또는 객체 지향된 형태의 이벤트 등이어도 된다.
어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리
기술분야
도 15는 종래 기술에 따른 중간 데이터 계층 구조 및 그래픽 사용자 인터페이스(GUI) 뷰를 설명하는 블록 다이아그램이다. CPU 상에 실행되는 어플리케이션은 통상, 반드시 필수적인 것은 아니지만, 트리에 배치된 여러개의 GUI 요소가 포함된다. 이들 "뷰"(또는, 위젯, 구성 요소, 요소 등으로 불린다)는 요소가 사용자 입력시에 작동할 때, 실행되도록 관련 어플리케이션 코드 및 현재 상태를 각각 갖는 예를 들면, 슬라이더, 윈도우, 버튼, 패널 등의 친숙한 요소를 포함할 수 있다.
상기 어플리케이션이 사용자에게 디스플레이되기에 필요한 어플리케이션의 시각적 외관에 대한 변경 및 그 상태 중 어느 하나를 업데이트하는 경우, 상기 어플리케이션이 상기 트리(또는 다른 데이터 구조: 예를 들면, 장면 그래프)를 워크하는 "페인트"명령(또는 몇몇 시스템에 있어서, 드로우, 렌더 등이라 함)을 행하고, 상기 어플리케이션에 있어서, GUI 요소로부터 중간 드로잉 데이터를 생성한다. 상기 중간 데이터는 상기 어플리케이션에 있어서의 각각의 요소에 대한 개개의 비트맵(일명, 래스터, 픽셀 데이터)로 이루어지거나, 상기 어플리케이션에 있어서의 각각의 요소의 최종 픽셀(렌더링된) 외관을 생성하도록 드로잉 지시로 이루어지거나, 또는 메모리(픽셀 데이터, 디스플레이리스트, 드로잉 지시, 벡터 데이터 등)에 있어서의 어플리케이션의 시각적 외관을 나타내는 디스플레이 상에, 컴퓨터가 픽셀(또는 상기 디스플레이 기술에 적절한 다른 기본적인 그래픽 프리미티브)을 생성하도록 하는 임의의 표시로 이루어질 수 있다. 도 15에 나타내는 실시예에 있어서, 상기 중간 데이터는 상기 GUI 요소의 최종 픽셀 외관을 생성하도록 실행하는 드로잉 지시로 이루어진다. 상기 중간 데이터는 메모리에 상주하고, 컴퓨터의 CPU 또는 전용 그래픽 처리 장치(GPU) 중 어느 하나 또는 모두에 억세스 가능해도 된다.
최종 렌더링된 GUI를 생성하기 위해서, 상기 중간 데이터는 디스플레이로 전송되고 사용자에게 시각화되는 픽셀 버퍼로 실행되거나 복사된다. 도 16을 참조한다.
렌더링을 위한 CPU 및 GPU 모드를 포함하는 시스템에 있어서, 통상, 사용자 입력을 처리하고, 중간 데이터를 발생/업데이트하는(CPU에 의해 행해짐) 프로세스는 상기 최종 픽셀 버퍼를 생성하기 위해(GPU에 의해 행해짐) 상기 중간 지시를 실행하는 프로세스 보다 상당히 긴 시간이 걸린다.
도 17은 GUI의 시각적 외관에 대한 변경이 사용자에게 시각화되는 방식을 나타낸다. 상기 실시예에 있어서, 상기 CPU 상에 실행하는 어플리케이션은 "뷰 G"의 시각적 외관의 변경을 요구하는 사용자로부터 입렵을 수신한다. 상기 실시예에 있어서, 뷰 G가 버튼이고, 디스플레이 상에 상기 버튼을 "눌러진"을 표시하기를 요청하여 사용자가 이것을 누른다고 가정한다. 상기 사용자 입력은 상기 어플리케이션에 있어서의 뷰 G의 상태를 변경하고, 이것은 G에 대해 업데이트된 중간 데이터를 생성하는 "페인트" 명령을 트리거한다. 최종 렌더링된 GUI를 생성하기 위해서(G의 새로운 시각적 외관을 포함), 상기 디스플레이로 전송되고, 사용자에게 시각화되는 픽셀 버퍼로 중간 데이터가 실행되거나 복사된다. 상기 디스플레이트는 뷰 G의 변형된 외관을 포함한다.
현대의 운영 시스템은 업데이팅, 사용자 입력을 수신하는 프로세스, 어플리케이션 상태의 변경 및 발생을 요구하는 중간 데이터만을 효율적으로 업데이트하도록 다수의 단계를 행하면, 상기 중간 데이터는 여전히 시간이 많이 걸리고, 사용자 입력에 대한 시각적 응답에 레이턴시를 도입한다. 따라서, GUI 사용자에게 입력에 대한 시각적 응답을 디스플레이하도록 요구되는 시간을 개선하는 시스템을 제작하는 것이 바람직하다.
어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답
본 발명자는 GUI 요소에 대한 하나 이상의 가능한 시각적 상태에 상응하는 하나 이상의 중간 데이터를 발생하도록 GUI의 요소가 사용되는 발명을 기재한다. 이들 복수의 시각 표시는 사용자에게 디스플레이 하기 위해, 최종 픽셀 이미지를 렌더링할 때, 사용하기 위한 적절한 중간 데이터를 선택하는 컨트롤 로직과 병행된다.
도 18은 본 발명의 일실시형태를 나타내고, 이것은 상기 어플리케이션의 GUI에 있어서의 각각의 GUI 요소가, 요소의 형태 및 그 요소의 가능한 시각적 상태의 수에 따른 하나 이상의 중간 데이터를 생성한다. 상기 예에 있어서, 뷰 G 및 뷰 H는 복수의 가능한 시각적 외관을 갖는 상기 GUI에 있어서의 뷰만이고, 뷰 G는 2개의 대체의 시각적 외관에 상응하는 2개의 대체의 중간 데이터를 발생하고, 뷰 H는 3개의 가능한 시각적 외관에 대한 3개의 중간 데이터를 발생한다. 바람직한 실시형태에 있어서, 본 발명은 중간 데이터를 실행해서 사용자에게 디스플레이하는 최종 픽셀 버퍼를 생성하는 경우에 사용하기 위한 현재의 대채에 상응하는 인덱스를 기록한다.
도 19는 뷰 G에 대한 업데이트된 인덱스를 갖는 중간 데이터를 나타낸다. 상기 예에 있어서, 뷰 G는 버튼이고, "드로잉 지시 G"는 눌러지지 않는 외관을 드로잉하기 위한 지시를 제공하고, "대체 드로잉 지시 G"는 눌러진 외관을 드로잉하기 위한 지시를 제공하는 것을 가정한다. 상기 예에 있어서, 상기 사용자가 버튼을 누를 때, 상기 시스템은 상기 "대체 드로잉 지시 G"가 선택되도록 G에 대한 인텍스를 업데이팅한다. 상기 선택은, 상기 중간 데이터가 디스플레이로 전송되고 사용자에게 시각화되는 픽셀 버퍼로 실행되거나 복수되는 경우에 뷰 G가 정확하게 나타나게 한다. 상기 GUI에서의 요소에 대한 드로잉 지시가 사전에 컴퓨팅되었기 때문에, 그 때, 시간이 걸리는 "페인트" 조작을 행할 필요가 없기 때문에 사용자 입력에 대한 시각적 응답이 저레이턴시로 매우 신속하게 발생할 수 있다.
대체의 드로잉 지시와 연결될 수 있는 UI뷰의 상태의 다른 예로는 윈도우의 눌러진-눌러지지 않은 상태의 임의의 UI 요소, 다른 요소에 의해 영향받은 경우에 나타나는 UI 요소(예를 들면, 하나의 뷰가 다른 것으로 전달되고 드롭 섀도우를 나타내는 경우, 상기 뷰 상의 그 섀도우의 외관이 그것을 "빌로우"한다) 또는 컨텍스트에 적용될 수 있는 다른 '스킨'(예를 들면, 게임에 있어서, "히트"를 얻을 수 있는 UI객체의 손상되지 않은 버전 및 손상된 버전)의 현재/최소 상태를 포함한다. 또한, 그 시각적 외관에 영향을 주는 뷰의 임의의 특성이 연결되고 사전에 컴퓨팅될 수 있다. 또한, 값이 상호작용하는 특성이 대체의 랜더링을 더 계속 제공한다(예를 들면, 비활성이고 눌러지지 않음, 비활성이고 눌러짐 등). 다수의 가능값을 갖는 속성은 소정의 대체의 외관이 과거 사용자 거동에 기초하여, 다른 사용자 거동에 기초하여 현재 상태로부터 직접 이동할 수 있는 상태의 여부에 기초하거나 또는 어플리케이션의 개발자에 의해 명백하게 지시되는 바와 같이, 공지의 값으로 사전에 컴퓨팅될 수 있다.
이들 예에 있어서, 대체의 요소로 드로잉된 뷰는 트리에 있어서 리프 노드이다. 본 발명의 다른 실시형태에 있어서, 관련 뷰가 도 18 및 도 19의 뷰 E 등의 넌-리프 노드일 수 있다. 이러한 상황 하에, 차일드 노드(또한, 상기 예의 반복 속성이 이해되는 경우, 모두 파생)는 그들의 페어런트의 대체의 드로인 지시와 연관된 다른 드로잉 지시를 갖거나 갖지 않는다. 예를 들면, 뷰 E가 뷰 H, I 및 J의 컬렉션을 포함하는 UI 패널인 경우, E에 대한 하나의 다른 드로잉 지시가 "비활성된" 외관을 제공하는 것을 포함한다. 통상, GUI에 항상은 아니지만, 페어런트 뷰가 불능으로 설정되면, 차일드 뷰도 불능으로 설정된다. 따라서, '불능' 외관을 제공하는 뷰 E에 대한 다른 드로잉 지시는 뷰 H, I 및 J에 대해 동일한 다른 차일드로의 포인터를 포함하여 그들을 동일하게 불능 외관이 되게 한다. 상기 포인터(또는 다른 인디케이터)가 리더로 알려진 임의의 다른 개소 또는 일부 중앙 레지스트리에 저장될 수 있다. 다른 실시형태에 있어서, 다른 실시형태에 있어서, 뷰트리의 루트(항상은 아니지만, 윈도우에 포함되는 경우가 있다)는 이전에 컴퓨팅될 수 있고, 따라서, 상기 트리 내의 뷰의 일부 서브세트(또는 모두)가 이전에 컴퓨팅될 수도 있다. 이것은 포어그라운드 윈도우의 신속한 전환을 용이하게 할 수 있다.
다른 드로잉 지시를 유지하는 것은 다른 지점에서 곤란할 수 있음이 이해되어야 한다. 이들 지시는 예를 들면, 상기 어플리케이션이 분배를 위해 컴파일되거나/제작될 때, 이것이 디바이스상에 로딩될 때, 프로그램이 우선, 실행될 때, 뷰가 우선, 장면으로 위치될 때, 또는 스페어 산출 사이클이 이용되는 유휴시에 이후의 반복에 대해 저장될 수 있다.
또한, 다른 드로잉 지시는 애니메이션을 포함할((애니메이션에 포함될) 수 있음이 이해되어야 한다. 상기 UI에 대한 애니메이션의 변경은 상태간의 이동을 이해하면서, 사용자를 보조하는 것으로 알려져 있다. 다른 실시형태에 있어서, 대체의 지시의 세트 전체가 미리 결정되어 애니메이션을 가속화한다.
다른 실시형태에 있어서, 특정 뷰는 임의의 다른 뷰(예를 들면, 페어런트 또는 차일드)를 리페인팅하지 않고 렌더링될 수 있다. 이것은 상기 시스템이 다른 뷰에 의해 폐색되지 않는 뷰의 일부만이 렌더링되는 것을 요구한다. 페인팅되는 요소의 일부의 제한은 관련 드로잉 지시(및/또는 다른 드로잉 지시)에 포함될 수 있다. 다른 실시형태에 있어서, 모든 대체의 지시는 폐색의 다른 영역에 따라서 포함될 수 있다.
그래픽 처리 유닛에서의 입력 처리
본 발명은 사용자 입력에 대한 시각적 응답에 있어서, 현저하게 레이턴시를 감소시키는 반면에, 상기 컴퓨터의 CPU가 입력 장치로부터 사용자 입력 이벤트를 수신하고, 상기 정확한 어플리케이션에 이들 이벤트를 디스패칭하고, 상기 GUI의 정확한 요소로 이벤트를 전송하도록 히트 테스팅을 행하고, 임의의 코드를 실행하고, GUI 요소의 시각적 외관을 변경할 수 있는 콜백을 실행하는 등을 상기 컴퓨터의 CPU가 여전히 담당하고 있다.
도 20은 종래의 사용자 입력에 대한 시각적 응답을 디스플레이하도록 하는 단계를 개략화하는 개념적인 다이아그램을 나타낸다. 종래의 각각의 시스템이 도 20에 개략된 정확한 단계로부터 변경되면서, 이들은 CPU에 입력을 수신하고, 처리하고, 상기 CPU의 그래픽 요소의 속성을 업데이팅하고, 상기 CPU에 중간 데이터를 생성하고, 이어서, 상기 GPC에 최종 렌더링을 전달하는 모든 기본 패턴을 뒤따른다. 본 발명의 목적을 위해, 본 발명은 이들 변경 모두에 적용된 것으로 가정해야 된다.
도 21은 CPU 및 GPU에 입력 이벤트가 전송되는 일실시형태를 나타내고, 여기서, 이들은 사용자 입력에 대해 저레이턴시 응답을 행하도록 사용된다. 상기 GPU에 있어서, "히트 테스팅" 조작이 우선 행해져 그래픽 요소가 디스플레이 상에 업데이트되어야 하는 것을 결정한다. 복수의 외관을 갖는 그래픽 요소에 대해서(도 21에 있어서, 중간 데이터의 분리된 세트로 각각 나타내어지는 3개의 다른 외관을 갖는 요소가 확인됨), "임시 데이터 피커" 조작이 GUI를 드로잉하고, 사용자에게 시각적인 디스플레이에 픽셀을 전송할 때에 사용되기 위한 중간 데이터의 세트를 결정한다.
상기 GPU 및 CPU가 동시에 실행되기 때문에, 상기 CPU는 캐치업을 행하고, GUI 요소의 시각적 외관의 변화에 관련되지 않는 사용자 입력의 프로그램의 부작용을 행하기 때문에 상기 GPU에서의 이들 단계는 매우 신속하게 행해질 수 있다. 최종 결과는 사용자 입력에 대한 저레이턴시 시각적 응답이다.
상기 도면이 상기 CPU와 GPU 사이에 중복을 나타내지만(예를 들면, 히트 테스팅은 둘 모두에서 행해진다), 일부 실시형태에 있어서, GPU에 있어서의 그 조작을 행하고, 그들의 결과를 상기 CPU로 재전송함으로써 성능을 감소시킴없이 상기 중복이 제거된다. 예를 들면, 입력은 GPU로만 전송되고, 히트 테스팅은 GPU에서만 행해져 더욱 처리를 위해, 상기 CPU로 그 결과가 전송된다.
본 발명자는 사용자 입력에 대한 응답에 있어서, GUI 요소의 다른 외관 중에서 신속하게 전환하기 위해서 본 발명의 사용을 기재하고 있다. 도 22는 GPU에 있어서의 그 즉각적인 데이터 구조의 직접 변형을 통한 GUI 요소의 시각적 외관의 신속한 변경을 설명한다. GUI 요소의 외관의 다수의 일반적인 변경은 그들의 위치의 변경(예를 들면, 스크롤링, 드래깅, 패닝), 크기(예를 들면, 요소를 크기 조정 또는 스케일링), 로테이션, 스큐잉 또는 기타 시각적 속성을 통해서 발생한다. 이와 같이, 본 발명의 실시형태에 있어서, 상기 GPU는 사용자 입력을 수신하고, 히트 테스팅을 행하여 GUI 요소가 사용자에 의해 입력되는 것을 결정한다. 이어서, 실행시, 요소의 중간 데이터가 상기 GUI에서 직접 변형된다. 예를 들면, 수직 스크롤링의 경우에 있어서, 상기 요소의 Y 위치는 그 요소에 대한 전체 중간 데이터를 재생성할 필요성을 제거하여 상기 단계에서 직접 업데이트될 수 있다. 상기 업데이트 후, 상기 중간 데이터의 실행이 계속될 수 있고, 상기 GUI는 뷰에 대한 사용자를 위해 렌더링되고, 스크린 상에 디스플레이될 수 있다.
다른 실시형태에 있어서, 업데이트는 그래픽 변형으로 제한된다. 다른 실시형태에 있어서, 이들 변형은 어플리케이션 로직에 따를 수 있다. 다른 실시형태에 있어서, 상호 작용을 늦추는 '체크 인'을 요구하거나 또는 GPU에서 일반 작동을 행하지만, 이어서, 상기 CPU에서의 페이튼 조작의 결과에 의해 이후에 이들을 대체하는 상기 로직은 상기 CPU에 대해서만 이용 가능하다. 다른 실시형태에 있어서, 어플리케이션의 개발자에 의한 GPU에서의 어플리케이션 로직을 위치시키기 위한 메카니즘이 존재한다. 이러한 메카니즘은 UI 요소에 대한 속성 설정(예를 들면, 일방향으로 변형을 행하고, 반대 방향은 아닌 조건부 조작 또는 변형의 최대 한도), 일련의 미리 정의된 레시피 중에서 선택 또는 GPU의 자체 프로그램 언어 또는 "네이티브" 지시로 번역된 다른 언어 중 어느 하나인 지시를 제공하는 것을 포함한다. 어플리케이션 개발자에 의해 규정된 이들 지시는 이후의 히트 테스팅을 실행할 수 있었다. 사실상, 이들은 상기 GPU 이내에 행해진 이벤트 처리의 형태가 된다.
일실시형태에 있어서, 상기 GPU 및 CPU에 의해 처리된 입력은 컨플릭트를 야기한다. 예를 들면, 상기 GPU가 그 범위를 인식하지 못하는 경우, 그 사용자는 리스트의 끝을 지나 스크롤할 수 있고, 상기 CPU는 이벤트 처리를 처리하고 정지한다. 그러나, GPU 코드가 CPU 보다 더욱 신속하게 실행되기 때문에, 상기 정지는 스크롤링이 발생된 후에 행해진다. 일실시형태에 있어서, 제 1 개소에 있어서, 다수의 이와 같은 컨플릭트가 발생하는 것을 억제하는 일반적인 UI 뷰에 대한 기본 로직은 GPU에 대한 지시로서 인코딩될 수 있다. 그러나, 어플리케이션 개발자가 CPU 코드를 사용하여 뷰의 외관 및/또는 거동을 변경할 수 있는 실시형태에 있어서, 컨플릭트가 불가피하다. 이러한 실시형태에 있어서, 메카니즘은 이들을 경감시키는 것이 포함된다. 이들은 CPU 및 GPU 부분 중 하나 또는 모두에 "이벤트" 콜백을 제공하여 개발자가, 컨플릭트가 처리되어야 하는 방법을 지정하도록 하는 것을 포함한다. 또한, 이들은 상기 컨플릭트가 처리되는 것에 대한 정책을 포함한다(미리 정해지거나 또는 개발자 선택가능하다). 상기 정책은 '일리걸' GPU-생성 상태에서 "프로퍼" CPU 생성 상태로의 변환(또는 그 반대)에 대해 다른 그래픽 효과 또는 애니메이션의 호출을 포함한다.
컨플릭트의 다른 예로는 입력 스트림의 처리를 포함할 수 있다. 예를 들면, 일부 상호작용 시스템은 제스쳐가 발생하면 결정하도록 입력을 처리하기 위한 메카니즘을 포함한다. 다른 실시형태에 있어서, 제스쳐 검출 메카니즘이 GPU, 그 외, CPU, 그 외, 이 둘 모두에, 그 외, 상기 시스템 내의 다른 위치에 있을 수 있다. 상기 예에 있어서, 컨플릭트 해결은 상술의 동일한 메카니즘을 사용할 수 있다. 제스쳐가 검지되면, 그 사실이 상태 정보에 인코딩되고, CPU 및 GPU 표시 중 하나 또는 모두로 확장된다. 일실시형태에 있어서, 상기 상태 정보는 복사 메모리의 다른 수단에 의해 또는 직접 전송될 수 있다. 다른 실시형태에 있어서, 상기 CPU 및 GPU 중 하나 또는 모두를 실시하기 위한 지시의 패싱을 통해 확장될 수 있다.
상기 중간 데이터의 변형 및 히트 테스팅이 GPU 상에 매우 신속하게 행할 질 수 있는 동작일 때, 본 발명의 결과는 사용자 입력에 대해 저레이턴시 시각 응답하여 GUI 요소의 시각적 특성을 변형시킨다.
도 23은 사용자 입력에 대한 응답보다는 실행하는 애니메이션에 대한 응답에 있어서의 임시 데이터를 GPU가 변형하는 다른 실시형태를 나타낸다. 이 경우, 프로세스 "속성 애니메이션"은 정기적인 시간 간격으로 상기 임시 테이트에 대한 업데이트를 실행하여 경시로 상기 GUI 요소의 외관에 있어서의 시각적 변화에 영향을 미친다. 각 업데이트 후, 상기 GPU는 임시 데이터를 실행하고, 상기 디스플레이는 사용자에게 시각화되도록 업데이트된다. 상기 실시형태는 상기 애니메이션을 실행하는 것으로부터 CPU를 제거함으로써 상기 CPU의 리소스가 OS의 다른 단면에 의해 소비되는 경우에, 상기 애니메이션이 방해되지 않는다.
통상, CPU/GPU의 하나의 '면'에 의해 뷰의 실제 상태 또는 식별할 수 있는 상태(즉, 사용자에게 나타내어진 상태)의 임의의 변형이 두개의 면 사이의 어느 정도의 조정을 요구할 수 있다. 일실시형태에 있어서, 필요에 따라서, 상기 조정은 '정정' 상태를 결정하고 설정하도록 하는 2개의 가능한 충돌 해소 메카니즘(상술한 것 등)을 사용하여 그 정정 상태를 스크린 상에 표시된 것의 전송 간의 상태 정보를 전달하여 발생한다. 다른 실시형태에 있어서, 일면에서 다른 면으로 지시를 전달함으로써(또는 일부 충돌 해소 유닛에 의해) 상태 충돌이 해결된다. 다른 실시형태에 있어서, 상기 상태가 일면에서 다른 면으로의 전체를 간단하게 복사될 수 있다. 또 다른 실시형태에 있어서, 복수 경우의 어플리케이션이 '선택된' 예 중 하나에 의해, 각각의 다른 상태로 예시되어 현재 상태(예를 들면, 상기 정책에 따라서)를 덮어쓴다.
사용자 입력에 대해 수신 및 응답할 수 있는 컴퓨터 시스템을 포함하는 방법 및 장치의 조작 설명 및 블록 다이어그램을 참조하여 본 발명의 시스템 방법이 기재된다. 상기 블록 다이어그램 또는 조작 설명의 각각의 블록 및 상기 블록 다이어그램 또는 조작 설명에서의 블록의 조합이 아날로그 또는 디지탈 하드웨어 및 컴퓨터 프로그램 지시에 의해 실시될 수 있음이 이해된다. 이들 컴퓨터 프로그램 지시는 범용 컴퓨터, 특수 목적 컴퓨터, ASIC 또는 다른 프로그래머블 데이터 처리 장치의 프로세서에 제공되어 컴퓨터 또는 다른 프로그래머블 데이터 처리 장치의 프로세서를 통해 실행되는 지시가 블록 다이어그램 또는 조작 블록 또는 블록들에서 지정된 기능/행동을 구현한다. 다른 구현에 있어서, 상기 블록에 언급된 기능/행동이 상기 조작 설명에 언급된 순서를 벗어나서 발생할 수 있다. 예를 들면, 연속으로 나타내어지는 2개의 블록이 실질적으로 동시에 실제로 행해질 수 있거나, 또는 상기 블록이 포함된 기능/행동에 따라서 역순서로 행해지는 경우도 있다.
본 발명은 그 바람직한 실시형태를 참조로 하여 특정하게 나타내고 설명되지만, 본 발명의 정신 및 범위로부터 벗어남이 없이 형태 및 상세에 있어서, 각종 변형이 행해질 수 있음이 당업자에게 이해될 수 있다.

Claims (98)

  1. 컴퓨팅 장치에 있어서, 입력에 대한 시각적 응답을 감소된 레이턴시로 제공하는 방법으로서:
    제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계로서, 각각의 중간 데이터의 대체 세트는 상기 그래픽 사용자 인터페이스 요소의 시각적 표시를 생성하는데 유용한 데이터를 포함하는 단계;
    상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트를 메모리에 저장하는 단계;
    제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 적어도 하나의 세트를 메모리에 저장하는 단계;
    최종 픽셀 이미지를 형성하는데 사용하도록 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트 중 첫번째 것을 식별하는 인덱스를 생성하는 단계;
    사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 생성하도록 상기 인덱스, 상기 그래픽 사용자 인터페이스 요소에 대한 대체의 중간 데이터의 제 1 세트, 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 제 1 최종 픽셀 이미지는 상기 제 1 그래픽 사용자 인터페이스 요소 및 상기 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계;
    사용자 입력 디바이스로부터 사용자 입력을 수신하는 단계;
    사용자 입력에 응답하여 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트 중 두번째 것의 식별을 포함하도록 상기 인덱스를 변형하는 단계; 및
    사용자에게 디스플레이하기 위해서 최종 픽셀 이미지를 생성하도록 상기 변형된 인덱스, 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 제 2 대체 세트 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 최종 픽셀 이미지는 상기 제 1 그래픽 사용자 인터페이스 요소 및 상기 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 드로잉 지시의 복수의 대체 세트를 포함하는 방법.
  3. 제 2 항에 있어서,
    사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 생성하도록 상기 대체의 중간 데이터의 제 1 세트를 사용하는 단계는 드로잉 지시의 제 1 대체 세트를 실행하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 픽셀 데이터의 복수의 대체 세트를 포함하는 방법.
  5. 제 4 항에 있어서,
    사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 생성하도록 상기 대체의 중간 데이터의 제 1 세트를 사용하는 단계는 일련의 렌더링된 픽셀 표시를 픽셀 버퍼에 복사하는 것을 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 시각적 외관에 영향을 주는 상기 제 1 그래픽 사용자 인터페이스 요소의 뷰의 속성의 복수의 대체 세트를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 벡터 데이터의 복수의 대체 세트를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 래스터 데이터의 복수의 대체 세트를 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 복수의 대체의 디스플레이 리스트를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 눌러지지 않은 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 눌러진 상태의 버튼의 표시를 포함하는 방법.
  11. 제 1 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 윈도우이고, 상기 중간 데이터의 제 1 대체 세트는 극대화되지 않은 상태의 윈도우의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 극대화된 상태의 윈도우의 표시를 포함하는 방법.
  12. 제 1 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받지 않는 경우의 상기 제 1 사용자 인터페이스 요소의 표시를 포함하고, 상기 중간 데이터의 상기 제 2 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받은 경우의 상기 제 1 사용자 인터페이스의 표시를 포함하는 방법.
  13. 제 1 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 복수의 대체의 시각적 상태를 갖고, 상기 제 2 사용자 인터페이스 요소는 단일의 시각적 상태를 갖는 방법.
  14. 제 1 항에 있어서,
    상기 제 1 사용자 인터페이스 요소 및 상기 제 2 사용자 인터페이스 요소는 각각 복수의 대체의 시각적 상태를 갖는 방법.
  15. 제 1 항에 잇어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 불능 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 가능 상태의 버튼의 표시를 포함하는 방법.
  16. 제 1 항에 있어서,
    중간 데이터의 2개를 초과하는 대체 세트를 더 포함하는 방법.
  17. 제 1 항에 있어서,
    상기 중간 데이터의 제 2 대체 세트는 제 3 그래픽 사용자 인터페이스 요소에 대한 대체 지시로의 포인터를 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 제 3 그래픽 사용자 인터페이스 요소는 상기 제 1 그래픽 사용자 인터페이스 요소의 차일드인 방법.
  19. 제 1 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 스크롤링할 때, 상기 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  20. 제 1 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 패닝할 때, 상기 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  21. 제 1 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 상기 제 1 사용자 인터페이스 요소가 드래깅될 때, 상기 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  22. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  23. 제 1 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  24. 제 1 항에 있어서,
    상기 인덱스를 생성하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  25. 제 1 항에 있어서,
    상기 인덱스를 생성하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  26. 제 1 항에 있어서,
    상기 인덱스를 사용하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  27. 제 1 항에 있어서,
    상기 인덱스를 사용하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  28. 제 1 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 스크롤 뷰의 시각적 영역이고, 상기 중간 데이터의 제 1 대체 세트는 상기 스크롤 뷰의 다음 영역의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 상기 스크롤 뷰의 이전 영역의 표시를 포함하는 방법.
  29. 제 1 항에 있어서,
    상기 중간 데이터의 대체 세트는 눌러지지 않은 상태의 버튼, 눌러진 상태의 버튼, 체킹된 상태의 컨트롤, 체킹되지 않은 상태의 컨트롤, 가능 상태의 버튼, 불능 상태의 버튼, 활성 상태의 요소, 비활성 상태의 요소, 호버링 상태의 요소, 비호버링 상태의 요소, 확장 상태의 요소, 비확장 상태의 요소, 포커스를 지닌 요소, 포커스가 없는 요소, 시각적 상태의 요소, 비시각적 상태의 요소로 이루어지는 세트로부터 선택된 적어도 하나의 표시를 포함하는 방법.
  30. 제 1 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 디스플레이의 다른 영역에 있어서의 표시를 포함하는 방법.
  31. 제 1 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 다른 형태 또는 크기의 표시를 포함하는 방법.
  32. 제 1 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 이전 상태를 포함하는 방법.
  33. 제 1 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 가능한 미래 상태를 포함하는 방법.
  34. 컴퓨팅 장치에 있어서, 입력에 대한 시각적 응답을 감소된 레이턴시로 제공하는 방법으로서:
    제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트를 렌더링하는 단계로서, 상기 중간 데이터의 대체 세트는 각각 상기 그래픽 사용자 인터페이스 요소의 대체의 시각적 표시를 나타내는 단계;
    상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트를 메모리에 저장하는 단계;
    제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터 중 적어도 하나의 세트를 메모리에 저장하는 단계;
    최종 픽셀 이미지를 형성하는데 사용하도록 상기 제 1 그래픽 사용자 인터페이스에 대한 상기 중간 데이터의 복수의 대체 세트 중 첫번째 것을 식별하는 인덱스를 생성하는 단계;
    사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 생성하도록 상기 인덱스, 상기 그래픽 사용자 인터페이스 요소에 대한 대체의 중간 데이터의 제 1 세트 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 제 1 최종 픽셀 이미지는 상기 제 1 그래픽 사용자 인터페이스 요소 및 상기 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계;
    사용자 입력 장치로부터 사용자 입력을 수신하는 단계;
    사용자 입력에 응답하여, 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트 중 두번째 것의 식별을 포함하도록 상기 인덱스를 변형하는 단계; 및
    사용자에 디스플레이하기 위해서 최종 픽셀 이미지를 생성하도록 상기 변형된 인덱스, 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 제 2 대체 세트, 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 최종 픽셀 이미지는 상기 제 1 그래픽 사용자 인터페이스 요소 및 상기 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계를 포함하는 방법.
  35. 제 34 항에 있어서,
    사용자에게 디스플레이하기 위해서 상기 제 1 최종 픽셀 이미지를 생성하도록 상기 대체의 중간 데이터의 제 1 세트를 사용하는 단계는 픽셀의 렌더링된 표시의 세트를 픽셀 버퍼에 복사하는 단계를 포함하는 방법.
  36. 제 34 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 벡터 데이터의 복수의 대체 세트를 포함하는 방법.
  37. 제 34 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 래스터 데이터의 복수의 대체 세트를 포함하는 방법.
  38. 제 34 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 눌러지지 않은 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 눌러진 상태의 버튼의 표시를 포함하는 방법.
  39. 제 34 항에 있어서,
    상기 제 1 유저 인터페이스 요소는 윈도우이고, 상기 중간 데이터의 제 1 대체 세트는 극대화되지 않은 상태의 윈도우의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 극대화된 상태의 윈도우의 표시를 포함하는 방법.
  40. 제 34 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받지 않는 경우의 제 1 사용자 인터페이스 요소의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받은 경우의 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  41. 제 34 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 복수의 대체의 시각적 상태를 갖고, 상기 제 2 사용자 인터페이스 요소는 단일의 시각적 상태를 갖는 방법.
  42. 제 34 항에 있어서,
    상기 제 1 사용자 인터페이스 요소 및 제 2 사용자 인터페이스 요소는 각각 복수의 대체의 시각적 상태를 갖는 방법.
  43. 제 34 항에 잇어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 불능 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 가능 상태의 버튼의 표시를 포함하는 방법.
  44. 제 34 항에 있어서,
    2개 초과의 중간 데이터의 대체 세트를 더 포함하는 방법.
  45. 제 34 항에 있어서,
    상기 중간 데이터의 제 2 대체 세트는 제 3 그래픽 사용자 인터페이스 요소에 대한 대체 지시로의 포인터를 포함하는 방법.
  46. 제 45 항에 있어서,
    제 3 그래픽 사용자 인터페이스 요소는 제 1 그래픽 사용자 인터페이스 요소의 차일드인 방법.
  47. 제 34 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 스크롤링할 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  48. 제 34 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 패닝할 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  49. 제 34 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 제 1 사용자 인터페이스 요소가 드래깅될 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  50. 제 34 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  51. 제 34 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  52. 제 34 항에 있어서,
    상기 인덱스를 생성하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  53. 제 34 항에 있어서,
    상기 인덱스를 생성하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  54. 제 34 항에 있어서,
    상기 인덱스를 사용하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  55. 제 34 항에 있어서,
    상기 인덱스를 사용하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  56. 제 34 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 스크롤 뷰의 시각적 영역이고, 상기 중간 데이터의 제 1 대체 세트는 상기 스크롤 뷰의 다음 영역의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 상기 스크롤 뷰의 이전 영역의 표시를 포함하는 방법.
  57. 제 34 항에 있어서,
    상기 중간 데이터의 대체 세트는 눌러지지 않은 상태의 버튼, 눌러진 상태의 버튼, 체킹된 상태의 컨트롤, 체킹되지 않은 상태의 컨트롤, 가능 상태의 버튼, 불능 상태의 버튼, 활성 상태의 요소, 비활성 상태의 요소, 호버링 상태의 요소, 호버링되지 않은 상태의 요소, 확장된 상태의 요소, 확장되지 않은 상태의 요소, 포커스를 지닌 요소, 포커스를 지니지 않은 요소, 시각적 상태의 요소, 비시각적 상태의 요소로 이루어지는 세트로부터 선택된 적어도 하나의 표시를 포함하는 방법.
  58. 제 34 항에 있어서,
    상기 중간 데이터의 대체 세트는 디스플레이의 다른 영역의 표시를 포함하는 방법.
  59. 제 34 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 다른 형태 또는 크기의 표시를 포함하는 방법.
  60. 제 34 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 이전 상태를 포함하는 방법.
  61. 제 34 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 가능한 미래 상태를 포함하는 방법.
  62. 컴퓨팅 장치에 있어서, 압력에 대한 시각적 응답을 감소된 레이턴시로 제공하는 방법으로서:
    제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계로서, 상기 중간 데이터의 대체 세트는 각각 상기 그래픽 사용자 인터페이스 요소의 대체의 시각적 표시를 렌더링하기 위해 드로잉 지시를 포함하는 단계;
    상기 제 1 그래픽 사용자 인터페이스 요소에 대한 상기 중간 데이터의 복수의 대체 세트를 메모리에 저장하는 단계;
    제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터 중 적어도 하나의 세트를 메모리에 저장하는 단계;
    최종 픽셀 이미지를 형성하는데 사용하도록 상기 제 1 그래픽 사용자 인터페이스에 대한 중간 데이터의 복수의 대체 세트 중 첫번째 것을 식별하는 인덱스를 생성하는 단계;
    사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 렌더링하도록 상기 인덱스, 상기 그래픽 사용자 인터페이스 요소에 대한 대체 중간 데이터의 제 1 세트, 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 제 1 최종 픽셀 이미지는 제 1 그래픽 사용자 인터페이스 요소 및 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계;
    사용자 입력 디바이스로부터 사용자 입력을 수신하는 단계;
    사용자 입력에 응답하여, 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트의 두번째 것의 식별을 포함하도록 상기 인덱스를 변형하는 단계; 및
    사용자에게 디스플레이하기 위해서 최종 픽셀 이미지를 생성하도록 상기 변형된 인덱스, 상기 제 1 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 제 2 세트, 및 상기 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 최종 픽셀 이미지는 상기 제 1 그래픽 사용자 인터페이스 요소 및 상기 제 2 그래픽 사용자 인터페이스 요소를 포함하는 단계를 포함하는 방법.
  63. 제 62 항에 있어서,
    상기 사용자에게 디스플레이하기 위해서 제 1 최종 픽셀 이미지를 생성하도록 대체의 중간 데이터의 제 1 세트를 사용하는 단계는 드로잉 지시의 제 1 대체 세트를 실행하는 단계를 포함하는 방법.
  64. 제 62 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 벡터 데이터의 복수의 대체 세트를 포함하는 방법.
  65. 제 62 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 래스터 데이터의 복수의 대체 세트를 포함하는 방법.
  66. 제 62 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트는 복수의 대체 디스플레이 리스트를 포함하는 방법.
  67. 제 62 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 눌러지지 않은 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 눌러진 상태의 버튼의 표시를 포함하는 방법.
  68. 제 62 항에 있어서,
    상기 제 1 유저 인터페이스 요소는 윈도우이고, 상기 중간 데이터의 제 1 대체 세트는 극대화되지 않은 상태의 윈도우의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 극대화된 상태의 윈도우의 표시를 포함하는 방법.
  69. 제 62 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받지 않는 경우의 제 1 사용자 인터페이스 요소의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 다른 사용자 인터페이스 요소에 의해 영향받은 경우의 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  70. 제 62 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 복수의 대체의 시각적 상태를 갖고, 상기 제 2 사용자 인터페이스 요소는 단일의 시각적 상태를 갖는 방법.
  71. 제 62 항에 있어서,
    상기 제 1 사용자 인터페이스 요소 및 제 2 사용자 인터페이스 요소는 각각 복수의 대체의 시각적 상태를 갖는 방법.
  72. 제 62 항에 잇어서,
    상기 제 1 사용자 인터페이스 요소는 버튼이고, 상기 중간 데이터의 제 1 대체 세트는 불능 상태의 버튼의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 가능 상태의 버튼의 표시를 포함하는 방법.
  73. 제 62 항에 있어서,
    2개 초과의 중간 데이터의 대체 세트를 더 포함하는 방법.
  74. 제 62 항에 있어서,
    상기 중간 데이터의 제 2 대체 세트는 제 3 그래픽 사용자 인터페이스 요소에 대한 대체 지시로의 포인터를 포함하는 방법.
  75. 제 74 항에 있어서,
    제 3 그래픽 사용자 인터페이스 요소는 제 1 그래픽 사용자 인터페이스 요소의 차일드인 방법.
  76. 제 62 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 스크롤링할 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  77. 제 62 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 사용자가 패닝할 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  78. 제 62 항에 있어서,
    상기 중간 데이터의 제 1 대체 세트 및 상기 중간 데이터의 제 2 대체 세트 중 적어도 하나는 제 1 사용자 인터페이스 요소가 드래깅될 때, 제 1 사용자 인터페이스 요소의 표시를 포함하는 방법.
  79. 제 62 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  80. 제 62 항에 있어서,
    상기 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  81. 제 62 항에 있어서,
    상기 인덱스를 생성하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  82. 제 62 항에 있어서,
    상기 인덱스를 생성하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  83. 제 62 항에 있어서,
    상기 인덱스를 사용하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  84. 제 62 항에 있어서,
    상기 인덱스를 사용하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  85. 제 62 항에 있어서,
    상기 제 1 사용자 인터페이스 요소는 스크롤 뷰의 시각적 영역이고, 상기 중간 데이터의 제 1 대체 세트는 상기 스크롤 뷰의 다음 영역의 표시를 포함하고, 상기 중간 데이터의 제 2 대체 세트는 상기 스크롤 뷰의 이전 영역의 표시를 포함하는 방법.
  86. 제 62 항에 있어서,
    상기 중간 데이터의 대체 세트는 눌러지지 않은 상태의 버튼, 눌러진 상태의 버튼, 체킹된 상태의 컨트롤, 체킹되지 않는 상태의 컨트롤, 가능 상태의 버튼, 불능 상태의 버튼, 활성 상태의 요소, 비활성 상태의 요소, 호버링 상태의 요소, 호버링되지 않는 상태의 요소, 확장된 상태의 요소, 확장되지 않은 상태의 요소, 포커스를 지닌 요소, 포커스를 지니지 않은 요소, 시각적 상태의 요소, 비시각적 상태의 요소로 이루어지는 세트로부터 선택된 적어도 하나의 표시를 포함하는 방법.
  87. 제 62 항에 있어서,
    상기 중간 데이터의 대체 세트는 디스플레이의 다른 영역의 표시를 포함하는 방법.
  88. 제 62 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 다른 형태 또는 크기의 표시를 포함하는 방법.
  89. 제 62 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 이전 상태를 포함하는 방법.
  90. 제 62 항에 있어서,
    상기 중간 데이터의 대체 세트는 상기 사용자 인터페이스 요소의 가능한 미래 상태를 포함하는 방법.
  91. 컴퓨팅 장치에 있어서, 입력에 대한 시각적 응답을 감소된 레이턴시로 제공하도록 CPU와 연대하여 GPU를 조작하는 방법으로서:
    그래픽 처리 장치에 있어서, 사용자 입력을 나타내는 데이터를 수신하는 단계;
    상기 사용자 입력의 결과로서 업데이트되는 그래픽 사용자 인터페이스 요소를 식별하도록 그래픽 처리 장치에 상기 사용자 입력을 나타내는 데이터를 히트 테스팅하는 단계;
    상기 그래픽 처리 장치에 있어서, 상기 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트 중에서 중간 데이터의 제 1 세트를 식별하는 단계; 및
    상기 그래픽 사용자 인터페이스 요소를 업데이트하도록 식별된 중간 데이터의 대체 세트를 사용하는 단계를 포함하는 방법.
  92. 제 89 항에 있어서,
    상기 그래픽 사용자 인터페이스 요소를 업데이트하도록 식별된 중간 데이터의 대체 세트를 사용하는 단계는 그래픽 처리 장치에 의해 행해지는 방법.
  93. 제 92 항에 있어서,
    상기 그래픽 사용자 인터페이스 요소를 업데이트하도록 식별된 중간 데이터의 대체 세트를 사용하는 단계는 중앙 처리 장치에 의해 행해지는 방법.
  94. 컴퓨팅 장치에 있어서, 입력에 대한 시각적 응답을 감소된 레이턴시로 제공하도록 CPU와 연대하여 GPU를 조작하는 방법으로서:
    그래픽 처리 장치에 있어서, 사용자 입력을 나타내는 데이터를 수신하는 단계;
    상기 사용자 입력의 결과로서 업데이트되는 그래픽 사용자 인터페이스 요소를 식별하도록 상기 그래픽 처리 장치에 사용자 입력을 나타내는 데이터를 히트 테스팅하는 단계;
    상기 그래픽 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트 중 중간 데이터의 제 1 세트를 식별하는 단계; 및
    상기 그래픽 사용자 인터페이스 요소를 업데이트하도록 식별된 중간 데이터의 대체 세트를 사용하는 단계를 포함하는 방법.
  95. 컴퓨팅 장치에 있어서, 실행 애니메이션에 대한 시각적 응답을 제공하도록 처리 장치를 조작하는 방법으로서:
    적어도 하나의 처리 장치에 있어서, 속성 애니메이션을 처리하는 단계;
    상기 적어도 하나의 처리 장치에 있어서, 상기 속성 애니메이션에 대한 중간 데이터의 복수의 대체 세트 중에서 중간 데이터의 제 1 세트를 식별하는 단계;
    상기 속성 애니메이션에 대한 중간 데이터를 업데이트하도록 식별된 중간 데이터의 대체 세트를 사용하는 단계; 및
    상기 그래픽 처리 장치에 있어서, 상기 속성 애니메이션에 대해 업데이트된 임시 데이터를 실행하는 단계를 포함하는 방법.
  96. 제 95 항에 있어서,
    상기 적어도 처리 장치 중 적어도 하나는 GPU인 방법.
  97. 제 95 항에 있어서,
    상기 적어도 하나의 처리 장치는 동일한 CPU의 복수의 코어를 포함하는 방법.
  98. 컴퓨팅 장치에 있어서, 입력에 대한 청각 응답을 감소된 레이턴시로 제공하는 방법으로서:
    제 1 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트를 컴퓨팅하는 단계로서, 상기 중간 데이터의 대체 세트는 각각 그 사용자 인터페이스 요소에 대한 청각 출력을 생성하는데 유용한 데이터를 포함하는 단계;
    상기 제 1 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트를 메모리에 저장하는 단계;
    제 2 사용자 인터페이스 요소에 대한 중간 데이터의 적어도 하나의 세트를 메모리에 저장하는 단계:
    최종 사운드를 형성하는데 사용되도록 상기 제 1 사용자 인터페이스 요소에 대한 중간 데이터의 복수의 대체 세트 중 첫번째의 것을 식별하는 인덱스를 생성하는 단계;
    사용자에게 디스플레이하기 위해서 제 1 최종 사운드를 생성하도록 상기 인덱스, 상기 사용자 인터페이스 요소에 대한 대체의 중간 데이터의 제 1 세트, 및 제 2 그래픽 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 제 1 최종 사운드는 상기 제 1 사용자 인터페이스 요소 및 상기 제 2 사용자 인터페이스 요소의 사운드를 포함하는 단계;
    사용자 입력 장치로부터 사용자 입력을 수신하는 단계;
    상기 사용자 입력에 응답하여, 상기 제 1 사용자 인터페이스 요소에 대해 중간 데이터의 복수의 대체 세트 중 두번째 것의 식별을 포함하도록 상기 인덱스를 변형하는 단계; 및
    사용자에게 출력을 위한 최종 사운드를 생성하도록 상기 변형된 인덱스, 상기 제 1 사용자 인터페이스 요소에 대한 중간 데이터의 제 2 대체 세트, 및 상기 제 2 사용자 인터페이스 요소에 대한 중간 데이터를 사용하는 단계로서, 상기 최종 사운드는 상기 제 1 사용자 인터페이스 요소 및 상기 제 2 사용자 인터페이스 요소로부터의 사운드를 포함하는 단계를 포함하는 방법.
KR1020167023374A 2014-02-04 2015-02-04 어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리 KR20160122753A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461935674P 2014-02-04 2014-02-04
US61/935,674 2014-02-04
PCT/US2015/014494 WO2015120073A1 (en) 2014-02-04 2015-02-04 Low-latency visual response to input via pre-generation of alternative graphical representations of application elements and input handling on a graphical processing unit

Publications (1)

Publication Number Publication Date
KR20160122753A true KR20160122753A (ko) 2016-10-24

Family

ID=53754827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023374A KR20160122753A (ko) 2014-02-04 2015-02-04 어플리케이션 요소의 대체 그래픽 표시의 사전 발생을 통한 입력에 대한 저레이턴시 시각적 응답 및 그래픽 처리 장치 상의 입력 처리

Country Status (12)

Country Link
US (2) US9836313B2 (ko)
EP (1) EP3103007A4 (ko)
JP (2) JP6392881B2 (ko)
KR (1) KR20160122753A (ko)
CN (1) CN106164839B (ko)
AU (1) AU2015214262A1 (ko)
BR (1) BR112016017608A2 (ko)
CA (1) CA2938442A1 (ko)
IL (1) IL246975A0 (ko)
MX (1) MX353592B (ko)
SG (1) SG11201606302TA (ko)
WO (1) WO2015120073A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9887878B2 (en) 2014-06-06 2018-02-06 Microsoft Technology Licensing, Llc Dynamic scheduling of network updates
US9491054B2 (en) * 2014-06-06 2016-11-08 Microsoft Technology Licensing, Llc Network-state management service
US9602351B2 (en) 2014-06-06 2017-03-21 Microsoft Technology Licensing, Llc Proactive handling of network faults
US10241760B2 (en) * 2014-11-18 2019-03-26 Tactual Labs Co. System and method for performing hit testing in a graphical user interface
US9716735B2 (en) 2015-02-18 2017-07-25 Viasat, Inc. In-transport multi-channel media delivery
US9753557B2 (en) * 2015-10-26 2017-09-05 Intel Corporation Fast inking a touch display
US10241620B2 (en) * 2016-02-02 2019-03-26 Tactual Labs Co. Area filtering for low-latency and high-latency input event paths from a single touch sensor
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
WO2018086258A1 (zh) * 2016-11-08 2018-05-17 华为技术有限公司 界面的刷新方法及终端
CN108153581B (zh) * 2016-12-05 2022-01-04 武汉斗鱼网络科技有限公司 一种事件去抖动的方法及装置
TWI670639B (zh) * 2017-05-18 2019-09-01 美商愛特梅爾公司 用於識別使用者介面元件之技術以及使用其之系統及裝置
US10900794B2 (en) * 2017-08-22 2021-01-26 Honda Motor Co., Ltd. System and methods for modifying route navigation with waypoints
CN107870723B (zh) * 2017-10-16 2020-09-04 华为技术有限公司 一种悬浮按钮显示方法及终端设备
CN110825250B (zh) * 2019-11-14 2024-02-23 珠海金山数字网络科技有限公司 一种笔刷轨迹的优化方法及装置
US11886685B1 (en) 2022-10-20 2024-01-30 Stardock Corporation Desktop container peek interface
CN117472380B (zh) * 2023-12-28 2024-03-22 江西铜锐信息技术有限公司 一种前端表单生成方法及系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4373722A (en) * 1980-06-12 1983-02-15 Cpg Products Corp. Electronic vehicle race simulator
JPH0981102A (ja) * 1995-09-12 1997-03-28 Fuji Electric Co Ltd ディスプレイ画面表示の制御方法およびその情報処理装置
JP3052997B2 (ja) * 1996-01-12 2000-06-19 日本電気株式会社 手書き入力表示装置
US20080246772A1 (en) * 2003-11-19 2008-10-09 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS
JP2006146556A (ja) * 2004-11-19 2006-06-08 Nintendo Co Ltd 画像表示処理プログラムおよび画像表示処理装置
EP2044505B1 (en) * 2006-07-10 2019-01-16 Microsoft Technology Licensing, LLC Trackball system and method for a mobile data processing device
JP5030651B2 (ja) * 2007-04-17 2012-09-19 任天堂株式会社 描画処理プログラムおよび描画処理装置
US8007930B2 (en) * 2008-07-10 2011-08-30 Ferro Corporation Zinc containing glasses and enamels
US9703411B2 (en) * 2009-04-30 2017-07-11 Synaptics Incorporated Reduction in latency between user input and visual feedback
US8762886B2 (en) * 2009-07-30 2014-06-24 Lenovo (Singapore) Pte. Ltd. Emulating fundamental forces of physics on a virtual, touchable object
KR101108480B1 (ko) * 2010-02-24 2012-01-31 (주)투비소프트 객체 지향적 컴포넌트 애니메이션 방법 및 이를 위한 기록매체
US9400695B2 (en) * 2010-02-26 2016-07-26 Microsoft Technology Licensing, Llc Low latency rendering of objects
JP5430491B2 (ja) * 2010-05-17 2014-02-26 キヤノン株式会社 情報処理装置、表示装置、表示システム、情報処理装置の制御方法、及び表示装置の制御方法
US9293117B2 (en) * 2010-10-01 2016-03-22 Lucid Software, Inc Manipulating graphical objects
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors
US9274746B2 (en) * 2011-02-18 2016-03-01 Nuance Communications, Inc. Latency hiding techniques for multi-modal user interfaces
JP5615220B2 (ja) * 2011-03-30 2014-10-29 三菱電機株式会社 ヒットテスト装置及びヒットテスト方法
EP2610726B1 (en) * 2011-12-29 2018-08-29 Orange Drag and drop operation in a graphical user interface with highlight of target objects
KR102086019B1 (ko) * 2012-06-08 2020-04-14 어드밴스드 마이크로 디바이시즈, 인코포레이티드 이종 프로세서를 사용하여 애플리케이션에 낮은 레이턴시를 제공하는 시스템 및 방법
US20140372903A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Independent Hit Testing for Touchpad Manipulations and Double-Tap Zooming

Also Published As

Publication number Publication date
EP3103007A1 (en) 2016-12-14
US20150220216A1 (en) 2015-08-06
CA2938442A1 (en) 2015-08-13
EP3103007A4 (en) 2017-10-25
SG11201606302TA (en) 2016-08-30
JP6392881B2 (ja) 2018-09-19
MX2016010050A (es) 2016-11-15
JP2018022515A (ja) 2018-02-08
WO2015120073A9 (en) 2016-11-10
JP6659644B2 (ja) 2020-03-04
US20180067756A1 (en) 2018-03-08
US9836313B2 (en) 2017-12-05
IL246975A0 (en) 2016-09-29
BR112016017608A2 (pt) 2018-05-08
CN106164839B (zh) 2019-10-22
AU2015214262A1 (en) 2016-08-18
WO2015120073A1 (en) 2015-08-13
CN106164839A (zh) 2016-11-23
JP2017514192A (ja) 2017-06-01
MX353592B (es) 2018-01-19

Similar Documents

Publication Publication Date Title
US20220253185A1 (en) Hybrid systems and methods for low-latency user input processing and feedback
JP6659644B2 (ja) 応用素子の代替的グラフィック表示の事前の生成による入力に対する低レイテンシの視覚的応答およびグラフィック処理ユニットの入力処理
Ng et al. Designing for low-latency direct-touch input
US9830014B2 (en) Reducing control response latency with defined cross-control behavior
EP4091142A1 (en) Systems, methods, and graphical user interfaces for displaying and manipulating virtual objects in augmented reality environments
JP2020531985A (ja) 拡張現実環境及び仮想現実環境と相互作用するためのシステム、方法、及びグラフィカルユーザインタフェース
JP2016528612A5 (ko)
US11093117B2 (en) Method for controlling animation&#39;s process running on electronic devices
EP3019943A1 (en) Reducing control response latency with defined cross-control behavior

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application